설명
errorhandler 미들웨어는 개발 편의를 위해 상세 오류 응답을 만들어 주는 도구입니다. 이를 개발 환경 한정 없이 Express 앱에 등록하면 예외 메시지, 스택 트레이스, 내부 객체 정보가 클라이언트에 그대로 전달될 수 있습니다. 공격자는 이 정보를 이용해 내부 경로, 프레임워크 동작, 예외 유발 지점을 정찰할 수 있습니다.
잠재적 영향
- 스택 트레이스, 내부 파일 경로, 환경 정보가 외부 사용자에게 노출될 수 있습니다.
- 공격자가 상세 오류 정보를 기반으로 후속 공격을 정교하게 조정할 수 있습니다.
- 개발용 기능이 운영 환경에 남아 보안 정책과 오류 처리 일관성이 깨질 수 있습니다.
해결 방법
errorhandler()는 개발 환경에서만 제한적으로 사용하고 운영 또는 인터넷 노출 환경에서는 등록하지 마세요.- 꼭 필요하다면
process.env.NODE_ENV === "development"또는app.get("env") === "development"같은 명시적인 개발 환경 가드 안에서만 활성화하세요. - 운영 환경에서는 일반화된 5xx 메시지만 반환하고 상세 예외 정보는 접근을 제한한 서버 로그에만 남기고 비밀 값은 제거하세요.
예시
변경 전
javascript
const express = require("express");
const errorhandler = require("errorhandler");
const app = express();
app.use(errorhandler());
변경 후
javascript
const express = require("express");
const errorhandler = require("errorhandler");
const app = express();
if (process.env.NODE_ENV === "development") {
app.use(errorhandler());
}
설명:
- 변경 전: 개발용 오류 응답 미들웨어가 모든 환경에서 활성화되어 상세 오류가 외부로 노출될 수 있습니다.
- 변경 후: 개발 환경에서만 미들웨어를 등록하고 운영 환경에는 별도로 일반 오류 처리기를 구현해야 합니다. 배포 환경 값도 명시적으로 설정하세요.