설정 인자 |
권장값 |
요약 설명 |
register_globals |
Off |
이 값을 On으로 설정하면 PHP가 입력으로 받아들이는 값(환경 변수, GET, POST, 쿠키, Server 변수)을 무조건 전역(Global)변수로 다루게 됩니다. 전역 변수가 고전적인 C 프로그램에서 얼마나 많은 버그를 발생시켰는지 상기한다면, 이 값을 Off로 설정하는 것이 왜 바람직한지 짐작할 수 있을 것입니다. 전역 변수는 프로그램의 동작 중 어디서나 변수값이 바뀔 수 있기 때문에, 웹 프로그램의 인자 조작, 예기치 못한 오동작 등 다양한 보안 문제가 발생할 수 있습니다. PHP 4.2.0 이후로는 보안상의 문제를 고려해 디폴트로 Off로 설정되어 나오지만, 아직 많은 프로그램이 On 상태에서만 작동하도록 개발되어 있어 서버 관리자들이 On으로 변경하는 경우가 많습니다. On 값에 의존하는 프로그램이 있으면 개발자에게 해당 문제를 알리고 수정을 요구하시는 것이 바람직합니다. |
safe_mode |
On |
이 값을 On으로 설정하면 PHP에 의한 파일 액세스 시 권한을 점검합니다. 웹 프로그램이 /etc/passwd 등 주요 시스템 파일을 액세스 하지 못하도록 제한할 수 있으나, 이로 인해 웹 프로그램이 정상 작동하지 않을 수 있으니 주의하여야 합니다. |
safe_mode_gid |
Off |
위의 설정과 함께 파일 액세스 시 권한을 점검합니다. 이로 인해 웹 프로그램이 정상 작동하지 않을 수 있으니 주의하여야 합니다. |
expose_php |
Off |
웹 브라우저의 요청에 대해 PHP 정보를 보내지 않습니다. 그러나 PHP 확장자 설정을 변경하는 등 추가적인 조치를 취하지 않는다면, 여러분이 PHP를 사용 중이라는 사실이 손쉽게 노출될 수 있으므로 보안상 큰 도움이 되지 않습니다. |
file_uploads |
Off |
해당 사이트의 PHP 프로그램들이 파일 업로드를 필요로 하지 않는다면 이 값을 Off로 설정하여, 파일 업로드 공격의 발생 가능성을 낮출 필요가 있습니다. 파일 업로드를 통한 사이트 장악은 매우 빈번하게 발생합니다. |
allow_url_fopen |
Off |
이 옵션을 On으로 설정하면 파일 액세스 시 외부 사이트의 파일을 불러올 수 있습니다. 이 기능은 분산 컴퓨팅과 개발, 관리 측면에서 매우 편리하지만, 외부 공격자에 의해 서버를 침탈당하게 되는 주요 원인이 되어 왔습니다. 특히 include(), require() 계열의 함수 사용시 심각한 보안 상의 문제를 유발하게 됩니다. 특수한 경우를 제외하고는 이 기능이 필요치 않으므로 이 옵션을 반드시 Off로 설정하시기 바랍니다. |
magic_quotes_gpc |
On |
이 옵션을 On으로 설정하면 PHP가 입력으로 받아들이는 값(환경 변수, GET, POST, 쿠키, Server 변수)에 단일 인용 부호('), 이중 인용 부호("), 백슬래쉬(\), 널문자(NUL)가 포함된 경우 자동으로 해당 문자 앞에 백슬래쉬를 추가하여 특수 문자 처리를 합니다. 이로 인해 웹 프로그램의 인자를 변경하는 SQL 구문 삽입(injection) 공격의 성공률을 낮춰줍니다. 이 값을 Off로 설정하면 /etc/passwd%00 과 같이 널 문자를 사용해 시스템 상의 임의의 파일을 열람할 수 있으니 반드시 On으로 설정하여야 합니다. |
magic_quotes_sybase |
Off |
Sybase 사용자의 정상적인 DB 접속을 위해 만들어진 기능이지만, 이 기능은 magic_quotes_gpc 설정을 무력화합니다. 여러분이 Sybase 사용자가 아니라면 반드시 이 값을 Off로 설정하여야 합니다. Sybase 사용자는 PHP가 입력으로 받아들이는 모든 변수에 대해 addslashes() 함수를 사용하여 명시적으로 특수 문자 처리를 하여야 합니다. |
open_basedir |
디렉터리 |
이 옵션에 적절한 디렉터리를 설정하면, PHP의 파일 액세스 시 지정된 디렉터리(및 하위 디렉터리)를 벗어난 파일은 액세스 할 수 없게 됩니다. |
safe_mode_exec_dir |
디렉터리 |
이 옵션을 지정하면 system(), exec(), passthru() 등 외부 명령어 실행 시 지정된 디렉터리에 존재하지 않는 프로그램은 실행할 수 없게 됩니다. 공격자가 임의로 업로드한 공격 도구나 wget, xterm 등 공격에 사용될 만한 명령어를 실행할 수 없도록 막을 수 있습니다. |
display_errors |
Off |
이 옵션을 On으로 설정하는 경우 PHP 실행 중 발생하는 에러 정보가 사용자 브라우저에 반환됩니다. 이 정보에는 웹 서버 상의 절대 경로, SQL 쿼리 등 공격자에게 유용한 정보가 포함되어 있으므로, 반드시 이 값을 Off로 설정하여야 합니다. |
log_errors |
On |
이 옵션을 On으로 설정하는 경우 PHP 실행 중 발생하는 경고나 에러 정보를 error_log 에서 지정한 파일에 기록하게 됩니다. 해당 파일에 기록할 수 없는 경우 아파치 웹 서버의 에러 로그 파일에 기록하게 됩니다. 프로그램의 동작 상태 및 공격자의 공격 동향을 파악하기 위해서 반드시 On으로 설정하여야 합니다. |
error_log |
파일명 |
PHP 실행 중 발생하는 경고나 에러 정보를 기록할 파일을 지정하는 옵션입니다. |