Error - Response header name 'P3P ' contains invalid characters, aborting request


    ①증상 발생

    ◇ 홈페이지 접속 시 500 Internal Server Error 발생

     

    ② 아파치 실시간 에러로그 확인

    [root@]#  tail -f error.log

    [error] [client IP] Response header name 'P3P ' contains invalid characters, aborting request

    ※ 응답 헤더 이름 'P3P'에 잘못된 문자가 포함되어 요청을 중단하였다는 메시지 확인

     

    ③ P3P header를 사용하는 파일 찾기

    [root@]# find /home -type f -exec grep -l p3p {} \;

    ※ /home 부분은 사이트가 연결된 「홈 디렉터리 경로」를 잡아주면 됩니다.

    /home/bbs/data/파일.PDF
    /home/bbs/lib.php  [의심파일]

    [root@]# vim /home/bbs/lib.php

    내용 중

       // W3C P3P 규약설정
        @header ("P3P : CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\"");

    먼저 이게 무엇인지 확인을 해보니 P3P 「Platform for Privacy Preferences」의 약자로,  W3C 권장 표준 형식으로 개인정보보호에 관해 처리하는 정책이라고 합니다. 「W3C 참조 문서 : https://www.w3.org/TR/P3P/ 영문을 번역하여 읽어보았는데 근본적인 내용 자체는 이해가 되지 않네요. 대략적으로 사용자가 PC브라우저에서 웹사이트 서버에 접근을 할 때 개인정보 접근제어를 어떻게 처리할 건지에 대한 정의로 보입니다.

    검색을 좀 해보니 같은 증상이 발생한 사용자들은 대체로 그누보드제로보드 같은 게시판의 common.php, lib.php 파일 상단에 W3C PHP 규약 설정되어 있는 header 값입니다. 

     

    ④ 조치 방법

    에러가 정확히는 Apache가 아니라 연동되어 있는 PHP 스크립트에서 처리하지 못해 발생한 에러입니다. 이것도 처리하는 방식이 몇 개 있는 것으로 보이나 다음과 같이 소스를 변경하여 해결하였습니다.

    이용 중인 서버의 환경은 「Aapche-2.2.32, PHP-4.4.49」였습니다.

    [root@]# vim /home/bbs/lib.php

     

       // W3C P3P 규약설정
       //(기존 소스 주석 처리)@header ("P3P : CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\"");

        ※ 아래와 같이 변경(또는 추가)

        @header ("P3P: CP=\"CAO DSP AND SO ON\" policyref=\"/w3c/p3p.xml\"")

    Designed by JB FACTORY