개발용 errorhandler 미들웨어 활성화

개발용 errorhandler 미들웨어 활성화

설명

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());
}

설명:

  • 변경 전: 개발용 오류 응답 미들웨어가 모든 환경에서 활성화되어 상세 오류가 외부로 노출될 수 있습니다.
  • 변경 후: 개발 환경에서만 미들웨어를 등록하고 운영 환경에는 별도로 일반 오류 처리기를 구현해야 합니다. 배포 환경 값도 명시적으로 설정하세요.

참조