기본적으로 웹사이트를 운영할 때 가장 많이 사용을 하고 있는 PHP 의 보안설정에 대해서 알아보겠습니다
몇가지 많은 설정들이 있지만 그중에서 open_basedir 옵션이라는 항목에 대해서 확인
- 보안과 안전모드에 관련된 지시어 종류
아래 항목은 php.net 공식 사이트에서 PHP 보안과 안전모드에 관련되 지시어 종류 입니다
이중 open_basedir 이란 지시어에 대해서 설정하는 방법을 알아 보겠습니다
- 참고 URL
- http://php.net/manual/kr/ini.sect.safe-mode.php
지시어명 | 기본값 | 변경값 | 변경점 |
---|---|---|---|
safe_mode | “0” | PHP_INI_SYSTEM | PHP 6.0.0에서 제거. |
safe_mode_gid | “0” | PHP_INI_SYSTEM | PHP 4.1.0부터 존재. PHP 6.0.0에서 제거. |
safe_mode_include_dir | NULL | PHP_INI_SYSTEM | PHP 4.1.0부터 존재. PHP 6.0.0에서 제거. |
safe_mode_exec_dir | “” | PHP_INI_SYSTEM | PHP 6.0.0에서 제거. |
safe_mode_allowed_env_vars | “PHP_” | PHP_INI_SYSTEM | PHP 6.0.0에서 제거. |
safe_mode_protected_env_vars | “LD_LIBRARY_PATH” | PHP_INI_SYSTEM | PHP 6.0.0에서 제거. |
open_basedir | NULL | PHP_INI_ALL | PHP < 5.3.0에서 PHP_INI_SYSTEM |
disable_functions | “” | php.ini만 | PHP 4.0.1부터 존재. |
disable_classes | “” | php.ini만 | PHP 4.3.2부터 존재. |
2. open_basedir 지시어란?
open_basedir을 설정하시게 되면 해당하는 디렉토리 및 하위 디렉토리에서만 파일을 열 수 있도록 제한합니다.
1번항목의 safe_mode 지시어를 이용하면 좋겠지만 해당 옵션으로 인하여 대부분의 설치형 보드(xe, wp)등을 이용할 수 없게 됩니다
해당 지시어를 설정함으로써 일반적으로 사용자가 많은 호스팅 시스템에서 fopen, fread 등의 함수를 좀더 안전하게 사용을 할 수 있도록 할수 있습니다
3. open_basedir 설정 방법
- 기본적인 설정 방법 php_admin_value open_basedir /home/smileserv
- 가상호스트 설정
<Directory /home/smileserv/*>
<IfModule php5_module>
php_admin_value open_basedir /home/smileserv:/tmp
</IfModule>
</Directory>
위와 같이 가상호스트 또는 httpd.conf 파일에 적용을 하면 호스팅 환경을 운영하면서 php 보안을 100%로 예방하는건 아니어도
보안적인 측면에 도움을 주는 설정 방법 이다
위 방법은 PHP 함수들에만 적용이 되는 설정이며, system 명령어 등을 제어하지는 못한다