①증상 발생
◇ 홈페이지 접속 시 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\"")
'◈『WEB-WAS』 > Apache-PHP' 카테고리의 다른 글
CentOS 8 - Apache 로그관리(rotatelogs) (0) | 2020.10.08 |
---|---|
CentOS 8 - Apache 가상호스트 설정(Apache virtual host) (0) | 2020.08.07 |