피드로 돌아가기
Dev.toSecurity
원문 읽기
Stack Trace 노출 차단, NestJS Global Filter 기반 보안 에러 처리 전략
Secure Error Handling in APIs: How to Implement Global Filters and Prevent Sensitive Data Leaks
AI 요약
Context
기본 에러 응답의 Stack Trace 및 DB 스키마 정보 노출 위험 존재. OWASP API3 Excessive Data Exposure 취약점으로 인한 시스템 내부 구조 유출 가능성 상존. 일관되지 않은 예외 처리로 인한 보안 구멍 발생.
Technical Solution
- NestJS Exception Filter를 활용한 모든 예외의 중앙 집중식 가로채기 구조 설계
- 외부 노출용 표준 응답 스키마(statusCode, errorCode, message, errorId, timestamp, path) 정의
- uuidv4 기반의 고유 errorId를 생성하여 클라이언트 응답과 내부 로그를 1:1 매핑하는 추적 체계 구축
- HttpException 기반의 정제된 메시지와 일반 예외의 제네릭 메시지를 구분하여 반환하는 필터링 로직 구현
- Winston 또는 Pino와 같은 구조화된 로거를 통해 userId, method, stack 등 상세 컨텍스트를 내부 저장소에만 기록하는 분리 전략
- NODE_ENV 환경 변수에 따른 디버그 정보 노출 제어 및 X-Powered-By 헤더 제거를 통한 정보 수집 방어
Key Takeaway
보안의 핵심은 내부의 상세한 맥락은 모두 기록하되 외부로는 최소한의 추상화된 정보만 제공하는 정보 격리 원칙의 준수.
실천 포인트
운영 환경 배포 전 Stack Trace 노출 여부를 점검하고 모든 500 에러에 고유 errorId가 포함되었는지 확인할 것