
웹취약점 점검에서 개발한 웹에 대하여 점검을 진행하였고, 여러 취약점들을 발견하였다.
발견한 취약점들을 대상으로 시큐어 코딩을 진행하고자 한다.
이번 대상은 주요정보통신기반시설 분석·평가 가이드 9번 항목 - 정보 누출 이다.
1. 화면 출력 차단
2. 로그 기록
3. 사용자용 에러 페이지 설정
404/500 등은 일관된 비기술적 문구로 제공
4. 서버 상세 정보 노출 최소화
Apache/PHP/OpenSSL 등의 상세 버전 및 OS 정보가 HTTP 응답 헤더에 노출되지 않도록 설정
서버 전체를 직접 관리할 수 있는 경우 php.ini를 설정한다.
; 에러 메시지 브라우저 출력 금지
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 코드 실행 중 발생하는 오류 메시지 노출 |
|---|
![]() |
| (수정후) 기본 에러 메시지 출력 |
|---|
![]() |
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 결과 |
|---|
![]() |
지정된 루트 경로 아래에 .htaccess 생성 (+ 에러페이지 디렉토리 추가)
![]() |
|---|
| Error Code 400 결과 |
|---|
![]() |
<httpd.conf>
(기존)
ServerTokens Full
ServerSignature On
(수정 후)
ServerTokens Prod
ServerSignature Off
<php.ini>
(기존)
expose_php = On
(수정 후)
expose_php = Off
| 정보 누출 |
|---|
![]() |
| ▲ 에러 응답 헤더에서, 서버 관련 정보 미출력 확인 |