Ⅰ. php.ini 이란?
PHP의 주요 설정 파일로, PHP의 동작 방식을 제어하는 다양한 설정 옵션이 포함되어 있습니다. 이 파일은 PHP가 실행되는 환경을 구성하며, 서버에서 PHP 스크립트가 어떻게 동작할지를 결정합니다. PHP는 이 파일을 로드하여 설정을 적용합니다.
Ⅱ. php.ini 파일의 특징
ⅰ. 구성 파일 역할: php.ini는 PHP의 구성 파일로, PHP의 동작 방식을 제어합니다. 예를 들어, 메모리 제한, 업로드 파일 크기 제한, 오류 보고 수준, 확장 모듈 로드 등이 이 파일에서 설정됩니다.
ⅱ. 전역 설정: php.ini에서 설정한 옵션은 해당 PHP 환경에서 실행되는 모든 PHP 스크립트에 영향을 미칩니다.
ⅲ. 다중 위치: PHP는 php.ini 파일을 여러 위치에서 찾을 수 있습니다. 일반적으로 /etc/php/7.x/apache2/php.ini, /etc/php/7.x/cli/php.ini, 또는 /usr/local/lib/php.ini와 같은 위치에 있으며, 웹 서버와 CLI(Command Line Interface)에서 각각 다른 설정 파일을 사용할 수 있습니다.
ⅳ. 기본값과 변경 가능성: 대부분의 php.ini 옵션은 기본값이 지정되어 있지만, 필요에 따라 개발자나 서버 관리자가 이를 변경할 수 있습니다.
Ⅲ. php.ini 주요 설정 옵션과 보안 방법
ⅰ. display_errors
display_errors | |
설명 | PHP 스크립트에서 발생하는 오류를 브라우저에 출력할지를 결정합니다. |
보안 권장 사항 | 개발 환경에서는 On으로 설정하여 디버깅 정보를 확인할 수 있습니다. 운영 환경에서는 Off로 설정하여 민감한 정보가 노출되지 않도록 해야 합니다. |
설정 | display_errors = Off |
ⅱ. log_errors
log_errors | |
설명 | PHP 오류를 로그 파일에 기록할지를 결정합니다. |
보안 권장 사항 | On으로 설정하여 오류를 로그로 남기는 것이 좋습니다. 이를 통해 오류를 추적하고 문제를 해결할 수 있습니다. |
설정 | log_errors = On |
ⅲ. error_reporting
error_reporting | |
설명 | PHP가 보고할 오류의 수준을 지정합니다. |
보안 권장 사항 | 개발 환경에서는 모든 오류를 표시하는 것이 좋지만, 운영 환경에서는 심각한 오류만 표시하는 것이 좋습니다. |
설정 | error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT |
ⅳ. expose_php
expose_php | |
설명 | PHP가 서버의 HTTP 헤더에 PHP의 버전을 노출할지를 결정합니다. |
보안 권장 사항 | Off로 설정하여 PHP 버전 정보를 숨기는 것이 좋습니다. 이는 공격자가 서버의 PHP 버전을 파악하여 취약점을 악용하는 것을 방지합니다 |
설정 | expose_php = Off |
ⅴ. allow_url_fopen
allow_url_fopen | |
설명 | PHP 파일 함수 (fopen, file_get_contents 등)가 원격 파일을 열 수 있도록 허용할지를 결정합니다. |
보안 권장 사항 | 보안상의 이유로 이 옵션을 Off로 설정하여 외부 파일 시스템에 대한 접근을 제한하는 것이 좋습니다. |
설정 | allow_url_fopen = Off |
ⅵ. allow_url_include
allow_url_include | |
설명 | include 및 require 문에서 원격 파일을 포함할 수 있도록 허용할지를 결정합니다. |
보안 권장 사항 | Off로 설정하여 원격 코드 실행의 위험을 줄이는 것이 좋습니다. |
설정 | allow_url_include = Off |
ⅶ. disable_functions
disable_functions | |
설명 | 특정 PHP 함수의 사용을 비활성화할 수 있습니다. |
보안 권장 사항 | 보안에 취약한 함수를 비활성화하여, 예를 들어 exec, shell_exec, passthru, system 등을 비활성화하는 것이 좋습니다. |
설정 | disable_functions = exec,passthru,shell_exec,system |
ⅷ. session.cookie_httponly
session.cookie_httponly | |
설명 | 세션 쿠키에 대해 HTTPOnly 플래그를 설정할 수 있습니다. |
보안 권장 사항 | On으로 설정하여 JavaScript를 통한 세션 쿠키 접근을 방지하고 XSS 공격의 위험을 줄입니다. |
설정 | session.cookie_httponly = On |
ⅸ. session.cookie_secure
session.cookie_secure | |
설명 | HTTPS 연결에서만 세션 쿠키가 전송되도록 설정합니다. |
보안 권장 사항 | HTTPS를 사용하는 경우 On으로 설정하여 쿠키가 암호화된 연결에서만 전송되도록 합니다. |
설정 | session.cookie_secure = On |
ⅹ. open_basedir
open_basedir | |
설명 | PHP가 접근할 수 있는 디렉토리의 범위를 제한합니다. |
보안 권장 사항 | 이 옵션을 설정하여 PHP 스크립트가 지정된 디렉토리 외부의 파일에 접근하지 못하도록 제한합니다. |
설정 | open_basedir = /path/to/webroot |
ⅹⅰ. file_uploads
file_uploads | |
설명 | HTTP를 통해 파일 업로드를 허용할지를 결정합니다. |
보안 권장 사항 | 파일 업로드가 필요하지 않은 경우 Off로 설정하여 업로드 기능을 비활성화합니다. |
설정 | file_uploads = Off |
ⅹⅱ. max_execution_time
max_execution_time | |
설명 | PHP 스크립트의 최대 실행 시간을 설정합니다. |
보안 권장 사항 | 너무 긴 실행 시간은 서버 자원을 낭비하고, 잠재적인 서비스 거부 공격(DoS)을 유발할 수 있으므로 적절한 시간을 설정해야 합니다. |
설정 | max_execution_time = 30 (일반적으로 30초가 적절) |
ⅹⅲ. memory_limit
memory_limit | |
설명 | PHP 스크립트가 사용할 수 있는 최대 메모리 양을 설정합니다. |
보안 권장 사항 | 메모리 한도를 설정하여 메모리 과다 사용으로 인한 서버 다운을 방지합니다. |
설정 | memory_limit = 128M (일반적으로 128MB가 적절) |
'어플리케이션' 카테고리의 다른 글
Netcat에 대해 알아보겠습니다. (0) | 2024.08.28 |
---|---|
Tomcat 에 대해 알아보겠습니다. (0) | 2024.08.26 |
공동인증서에 대해 알아보겠습니다. (0) | 2024.08.19 |
wget 명령어에 대해 알아보겠습니다. (0) | 2024.08.18 |
httpd.conf 파일에 대해 알아보겠습니다. (0) | 2024.08.17 |