오류 메시지 노출, 디버그 모드 끄고 상세 오류 감추는 5단계
오류 메시지 노출은 운영 중인 사이트가 디버그 모드로 돌아가거나 PHP 오류 표시가 켜져 있어, 방문자 화면에 파일 경로·쿼리·설정값 같은 내부 정보가 보이는 상태입니다. 이 글에서는 노출 여부를 확인하는 방법과 운영 환경에서 오류를 감추고 기록으로 남기는 5단계를 정리했습니다.
상세 오류 화면이 위험한 이유
개발할 때는 오류가 나면 어느 파일 몇 번째 줄에서 무슨 문제가 생겼는지 화면에 자세히 보여 주는 것이 편합니다. 하지만 같은 설정이 운영 중인 사이트에 남아 있으면 그 정보가 모든 방문자에게 보입니다.
상세 오류 화면에 드러날 수 있는 정보
- 서버의 폴더 구조와 파일 경로
- 사용 중인 홈페이지 프로그램, 프레임워크, PHP의 종류와 버전
- 데이터베이스 쿼리 일부와 테이블 이름
- 디버그 화면에 따라서는 환경 설정값이나 요청 정보
이런 정보는 그 자체로 비밀번호는 아니지만, 사이트 구조를 파악하려는 사람에게 단서가 됩니다. 방문자에게는 사이트가 고장 났다는 인상을 주어 신뢰도도 떨어집니다.
PHP 공식 문서의 권고
PHP 매뉴얼의 오류 처리 설정 문서는 오류를 화면에 출력하는 display_errors가 개발을 돕기 위한 기능이며 인터넷에 연결된 운영 시스템에서는 쓰지 말아야 한다고 설명합니다. PHP에 함께 들어 있는 운영용 설정 예시(php.ini-production)도 이 값을 Off로 둡니다. 같은 문서는 운영 사이트에서 오류를 화면에 표시하는 대신 기록(log_errors)으로 남기라고 강하게 권합니다.
개발 환경과 운영 환경의 오류 설정 비교
아래 표는 오류와 관련된 주요 설정을 개발 환경과 운영 환경에서 각각 어떻게 두는지 비교한 것입니다.
| 항목 | 개발 환경 | 운영 환경 |
|---|---|---|
| PHP 오류 화면 표시(display_errors) | 켬 | 끔 |
| PHP 오류 기록(log_errors) | 켬 | 켬 |
| 프레임워크·CMS 디버그 모드 | 켬 | 끔 |
| 방문자에게 보이는 화면 | 상세 오류 내용 | 일반 안내 페이지 |
| 오류 내용을 보는 곳 | 브라우저 화면 | 서버 오류 기록 |
표에서 보듯 운영 환경이라고 오류를 없애는 것이 아니라 보는 곳을 화면에서 서버 기록으로 옮기는 것입니다. 표시는 끄고 기록은 켜 두어야 문제를 숨기지 않고 원인을 찾을 수 있습니다.
오류 메시지 노출 여부 확인 방법
운영자가 직접 확인할 수 있는 방법은 세 가지입니다. 먼저 호스팅 관리 화면의 PHP 설정 메뉴에서 오류 표시 항목이 꺼져 있는지 봅니다. 프레임워크나 CMS를 쓴다면 환경 설정 파일이나 관리자 설정에서 디버그 모드가 꺼져 있는지 유지보수 담당자에게 확인합니다.
다음으로 로그아웃한 상태에서 없는 주소로 접속해 보고, 404 안내 페이지 대신 파일 경로나 프로그램 이름이 담긴 화면이 뜨는지 봅니다. 마지막으로 검색엔진에서 우리 도메인으로 한정해 Warning, Fatal error 같은 오류 문구를 검색하면, 과거에 색인된 오류 화면이 있는지 확인할 수 있습니다.
상세 오류를 감추는 5단계
설정 변경은 사이트 동작에 영향을 줄 수 있으므로 백업을 한 뒤 아래 순서로 진행하고, 서버 설정을 다룰 수 없다면 호스팅이나 유지보수 업체에 요청합니다.
- 현재 설정 확인: 호스팅의 PHP 설정과 프레임워크·CMS의 디버그 설정이 지금 어떻게 되어 있는지 기록합니다.
- 화면 표시 끄기: PHP 오류 화면 표시를 끄고, 프레임워크·CMS의 디버그 모드를 운영용으로 바꿉니다. 설정을 캐시하는 프로그램이라면 캐시도 다시 만듭니다.
- 오류 기록 켜기: 오류 기록을 켜고 기록 파일이 웹 폴더 밖에 저장되는지 확인합니다.
- 안내 페이지 준비: 404, 500 같은 오류가 나면 내부 정보 없이 사과 문구와 홈 링크, 연락처만 보여 주는 안내 페이지를 만듭니다.
- 기록 정기 확인: 오류 기록을 정해진 주기마다 확인하고, 자주 나는 오류는 원인을 찾아 고칩니다.
그림의 5단계는 한 번 하고 끝나는 작업이 아닙니다. 서버 이전, PHP 업그레이드, 프로그램 업데이트 뒤에는 설정이 기본값으로 돌아가는 경우가 있어 같은 확인을 반복해야 합니다. PHP 버전을 올릴 때 함께 볼 점은 오래된 PHP 버전 위험과 업그레이드에서 다뤘습니다.
함께 점검할 항목
- 서버 정보를 출력하는 점검용 페이지가 웹 폴더에 남아 있지 않은가
- 오류 기록 파일이 웹 폴더 안에 쌓이고 있지 않은가
- 개발용 서버와 운영 서버의 설정 파일이 섞여 올라가지 않았는가
- 오류 기록이 너무 커지지 않도록 보관 기간을 정했는가
점검용 페이지와 남은 파일을 찾는 방법은 백업 파일 노출 점검 방법에서 자세히 설명했습니다.
디코랩이 돕는 방식
디코랩은 운영 중인 사이트의 수정·오류·개선 요청을 받아 처리합니다. 사이트에 상세 오류 화면이 보이거나 디버그 설정을 확인해야 한다면 유지보수 접수 게시판에 비밀글로 사이트 주소와 오류가 보이는 화면을 남겨 주세요.
자주 묻는 질문
오류를 화면에서 감추면 문제를 못 찾지 않나요?
오류 기록을 켜 두면 화면에 보이지 않아도 서버 기록에 남습니다. 운영자는 기록을 보고 원인을 찾고, 방문자는 내부 정보 없는 안내 페이지만 보게 하는 것이 목적입니다.
오류 표시를 끈 뒤 화면이 하얗게만 나옵니다.
치명적인 오류가 났는데 안내 페이지가 없으면 빈 화면이 나올 수 있습니다. 서버 오류 기록에서 원인을 확인해 고치고, 같은 상황에 대비해 500 안내 페이지를 준비하세요.
호스팅에서 PHP 설정을 직접 바꿀 수 없으면 어떻게 하나요?
호스팅 상품에 따라 관리 화면에서 일부 설정만 바꿀 수 있거나 아예 바꿀 수 없습니다. 이럴 때는 호스팅 업체에 운영용 오류 설정을 요청하고, 프로그램 쪽 디버그 설정은 유지보수 담당자가 바꿉니다.
검색 결과에 오류 화면이 남아 있다면 어떻게 하나요?
먼저 설정을 고쳐 오류 화면이 더 나오지 않게 합니다. 그 뒤 검색엔진 관리 도구에서 해당 주소를 다시 색인하도록 요청하면 시간이 지나며 정상 화면으로 바뀝니다.
운영 중인 사이트의 오류 설정을 점검하고 싶다면 사이트 주소와 호스팅 환경을 적어 디코랩 프로젝트 문의로 보내 주세요.
댓글0
댓글 작성 권한이 없습니다