어플리케이션

php.ini 파일에 대해 알아보고 옵션별 보안방법에 대해 알아보겠습니다.

forward error correction Circle 2024. 8. 22. 08:02
반응형

Ⅰ. 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가 적절)

 

반응형