PHP는 서버측에서 실행되는 스크립트 언어로 동적인 웹 페이지를 만드는 데 많이 사용하고 있습니다. 대표적인 프레임워크로는 Laravel, CodeIgniter, CakePHP, Symfony 등이 있으며, 대표적인 CMS로는 WordPress, Drupal, Joomla 등이 있습니다. 많은 웹 어플리케이션에서 많이 사용되는 언어 중 하나로 사용되고 있지만, 기본적으로 보안성이 떨어지는 언어로 알려져 있습니다. PHP를 보다 안전하게 사용하려면 php.ini 파일에서 일부 보안 설정을 변경해야 할 수 있습니다.
1. display_errors 설정 변경
에러가 발생하면 그 내용을 출력하는 기능이 있습니다. 이 기능은 개발자들이 디버깅을 수행할 때 유용하지만, 공격자들이 취약점을 찾아내는 데 도움이 됩니다. 이러한 이유로, PHP의 display_errors 설정은 항상 비활성화되어야 합니다. php.ini 파일에서 다음과 같이 설정하면 됩니다.
2. expose_php 설정 변경
HTTP 응답 헤더에서 서버가 사용 중인 PHP 버전을 노출합니다. 공격자가 알아낸 PHP 버전 정보를 이용해 해당 버전에 대한 취약점을 이용할 수 있습니다. 이를 방지하기 위해, expose_php 설정을 비활성화하면 됩니다. php.ini 파일에서 다음과 같이 설정하면 됩니다.
3. register_globals 설정 변경
register_globals 설정을 사용하면, URL 또는 폼 입력에서 전달된 변수가 자동으로 전역 변수로 설정됩니다. 이는 보안상 위험한 동작이므로, register_globals 설정은 항상 비활성화되어야 합니다. php.ini 파일에서 다음과 같이 설정하면 됩니다.
4. open_basedir 설정 변경
open_basedir 설정은 PHP 스크립트가 접근할 수 있는 파일 및 디렉토리를 제한하는 기능입니다. 이 설정을 사용하면, 악성 사용자가 PHP 스크립트를 이용해 시스템 파일에 액세스하는 것을 방지할 수 있습니다. php.ini 파일에서 open_basedir 설정을 다음과 같이 설정할 수 있습니다.
open_basedir = /usr/local/html |
위의 설정을 통해 웹 페이지에 접속하는 사용자들은 /usr/local/html 디렉토리 이하의 파일 및 디렉토리에만 PHP 스크립트가 접근할 수 있도록 제한하고 있습니다.
5. disable_functions 설정 변경
원격 코드 실행 등의 공격에 취약한 함수인 shell_exec(), exec(), system() 등을 비활성화하기 위해서 php.ini 파일에서 disable_functions 설정을 다음과 같이 설정할 수 있습니다.
disable_functions = shell_exec, exec, system |