생활 가이드

PHP 서버 보안 설정 php.ini 세션 로그인 점검

PHP 서버 보안은 php.ini에서 expose_php와 display_errors를 끄고, log_errors를 켜며, allow_url_include를 끄고, 세션 쿠키에 HttpOnly·Secure·SameSite를 설정하는 것부터 시작합니다. OWASP PHP 설정 치트시트와 PHP 매뉴얼의 권장값을 기준으로 정리했습니다.

이 글은 php.ini 핵심 설정, 세션·로그인 보안, 위험 함수 제한, 파일 권한을 다룹니다. Apache·Nginx 보안 헤더 설정은 서버 문서를 참고하세요.

아래 버튼에서 필요한 다음 단계를 확인하세요.

👉 PHP 홈페이지 바로가기👉 PHP 보안 취약점 점검 방법과 도구 체크리스트👉 PHP SQL 인젝션 XSS 파일 업로드 보안 방어법

1. 오류와 정보 노출을 막습니다

OWASP 설정 치트시트는 운영 서버에서 expose_php=Off, error_reporting=E_ALL, display_errors=Off, display_startup_errors=Off, log_errors=On으로 두고 로그를 자주 확인하라고 안내합니다.

expose_php는 HTTP 헤더에 PHP 버전(X-Powered-By)을 노출하는 설정이라 끄는 것이 좋습니다. 오류 메시지를 화면에 보이면 경로와 코드 정보가 공격자에게 노출됩니다.

설정운영 서버 권장값(OWASP)
expose_phpOff
display_errorsOff
log_errorsOn
error_reportingE_ALL

2. 원격 파일 포함과 업로드를 제한합니다

allow_url_include와 allow_url_fopen을 끄면 로컬 파일 포함(LFI) 취약점이 원격 파일 포함(RFI)으로 쉽게 번지는 것을 막을 수 있다고 OWASP가 설명합니다. 업로드가 필요 없는 사이트는 file_uploads를 끄세요.

open_basedir로 PHP가 접근할 수 있는 폴더 범위를 제한할 수 있습니다. 업로드를 쓴다면 upload_max_filesize와 max_file_uploads도 필요한 만큼만 허용하세요.

  • allow_url_include = Off
  • allow_url_fopen = Off(필요 없을 때)
  • file_uploads = Off(업로드 미사용 시)
  • open_basedir로 접근 폴더 제한

3. 위험 함수는 쓰지 않는 것만 막습니다

disable_functions는 쉼표로 구분한 함수 목록을 막는 설정이고, PHP 8.0부터는 막힌 함수의 정의 자체가 사라집니다. OWASP는 system, exec, shell_exec, passthru, popen, proc_open 같은 위험한 함수 중 쓰지 않는 것을 모두 막으라고 안내합니다.

OWASP 예시 목록에는 move_uploaded_file, mkdir, chmod, rename처럼 정상 기능에 필요한 함수도 들어 있어 그대로 적용하면 업로드나 파일 처리가 멈출 수 있습니다. 반드시 내 사이트가 쓰는 함수를 확인한 뒤 막으세요.

구분함수 예(OWASP)주의
명령 실행system, exec, shell_exec, passthru, popen, proc_open쓰지 않으면 차단
정보 노출phpinfo, show_source, highlight_file운영 서버에서 차단 검토
파일 처리move_uploaded_file, mkdir, chmod, rename정상 기능에 필요할 수 있음

4. 세션과 로그인 보안을 설정합니다

PHP 매뉴얼은 보안 세션을 위해 session.use_strict_mode를 켜라고 안내합니다. 기본값은 꺼져 있고, 켜면 세션 모듈이 만들지 않은 세션 ID를 받아들이지 않습니다.

쿠키 설정으로는 session.cookie_httponly(자바스크립트 접근 차단), session.cookie_secure(HTTPS에서만 전송), session.cookie_samesite(Lax 또는 Strict)를 권장합니다. HTTPS 전용 사이트라면 HSTS도 검토하라고 안내합니다. 로그인 성공 뒤 세션 ID를 새로 발급하면 세션 고정 공격을 막는 데 도움이 됩니다.

  • session.use_strict_mode = On
  • session.cookie_httponly = On
  • session.cookie_secure = On(HTTPS 전용)
  • session.cookie_samesite = Lax 또는 Strict

5. 파일 권한과 웹 접근을 정리합니다

업로드 폴더에서 PHP 파일이 실행되지 않게 하고, 설정 파일과 백업 파일은 웹에서 내려받을 수 없는 곳에 두세요. 쓰기 권한은 필요한 폴더에만 줍니다.

워드프레스 보안 강화 가이드는 디렉터리 755, 파일 644 권한을 권장합니다. 설정을 바꾼 뒤에는 사이트가 정상 동작하는지 확인하고, 오류 로그를 정기적으로 점검하세요.

실행 체크리스트

표시한 항목은 이 브라우저에만 저장되며 어디에도 전송하지 않습니다.

확인한 공식 자료

작성·점검일 2026-10-22. PHP·워드프레스·OWASP·KISA 공식 문서를 바탕으로 정리한 편집 가이드입니다. 보안 설정은 서버 환경에 따라 정상 기능을 막을 수 있으니 운영 서버에 적용하기 전에 테스트 환경에서 확인하세요.