[3. 정보 누출]

Minseok Jo·2025년 9월 30일

웹 시큐어코딩

목록 보기
3/11
post-thumbnail

웹취약점 점검에서 개발한 웹에 대하여 점검을 진행하였고, 여러 취약점들을 발견하였다.
발견한 취약점들을 대상으로 시큐어 코딩을 진행하고자 한다.

이번 대상은 주요정보통신기반시설 분석·평가 가이드 9번 항목 - 정보 누출 이다.


0. 정보 누출 대응방안

1. 화면 출력 차단

  • 애플리케이션에서 에러 메시지가 브라우저에 출력되지 않도록 한다.
  • PHP: display_errors = off, display_startup_errors = off 설정

2. 로그 기록

  • 오류 내용은 서버 로그에 기록
  • 로그 파일은 웹에서 직접 접근할 수 없는 웹 루트 경로 외부에 저장

3. 사용자용 에러 페이지 설정
404/500 등은 일관된 비기술적 문구로 제공

4. 서버 상세 정보 노출 최소화
Apache/PHP/OpenSSL 등의 상세 버전 및 OS 정보가 HTTP 응답 헤더에 노출되지 않도록 설정


1. 시큐어 코딩

[1. 화면 출력 차단 (php.ini)]

서버 전체를 직접 관리할 수 있는 경우 php.ini를 설정한다.

  • 로컬 개발 환경(XAMPP, Docker 등등)
  • 클라우드/VPS에서 root/admin 권한이 있을 때
    → 서버 전체에 적용되는 전역 설정
; 에러 메시지 브라우저 출력 금지
display_errors = Off
display_startup_errors = Off

; 에러 로그는 파일에 기록
log_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

; 로그 파일 위치 (웹 루트 밖으로 설정)
error_log = /var/log/php_errors.log

(기존) PHP 코드 실행 중 발생하는 오류 메시지 노출

(수정후) 기본 에러 메시지 출력



[2. 커스텀 에러 페이지 작성]

1) xampp 환경

httpd.conf → <Directory "C:/xampp/htdocs"> 블록 확인

<Directory "C:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

htdocs/.htaccess 생성

ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php

에러 페이지 작성

C:/xampp/htdocs/errors/404.php
C:/xampp/htdocs/errors/500.php

// 404.php
<!doctype html>
<html lang="ko">
<head><meta charset="utf-8"><title>페이지 없음</title></head>
<body>
  <h1>요청하신 페이지를 찾을 수 없습니다</h1>
  <a href="/">홈으로 돌아가기</a>
</body>
</html>
// 500.php
<!doctype html>
<html lang="ko">
<head><meta charset="utf-8"><title>서버 오류</title></head>
<body>
  <h1>죄송합니다. 문제가 발생했습니다.</h1>
  <p>잠시 후 다시 시도해주세요.</p>
</body>
</html>

이후 Apache 재시작

Error Code 400 결과



2) 원격 호스트 환경

지정된 루트 경로 아래에 .htaccess 생성 (+ 에러페이지 디렉토리 추가)


Error Code 400 결과



[3. 서버 상세 정보 노출 최소화]

<httpd.conf>

(기존)

ServerTokens Full
ServerSignature On

(수정 후)

ServerTokens Prod
ServerSignature Off

<php.ini>

(기존)

expose_php = On

(수정 후)

expose_php = Off

2. 보안 조치 결과

정보 누출
▲ 에러 응답 헤더에서, 서버 관련 정보 미출력 확인


0개의 댓글