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