피드로 돌아가기
Hardening an Express API: URL Validation, Error Handling, and Tests in One Session
Dev.toDev.to
Security

URL Validation 및 Centralized Error Handling을 통한 API 보안 강화 및 테스트 커버리지 확대

Hardening an Express API: URL Validation, Error Handling, and Tests in One Session

Naim Katiman2026년 4월 12일2beginner

Context

Express 기반 서버의 HTTP 레이어 내 URL 검증 부재로 인한 SSRF 취약점 및 데이터 오염 위험 존재. 인라인 에러 처리 방식으로 인한 내부 스택 트레이스 노출 및 클라이언트 정보 유출 가능성 확인.

Technical Solution

  • URL 객체 기반의 validateGitHubUrl 미들웨어 구현을 통한 HTTPS 프로토콜 및 github.com 호스트 강제
  • Pathname 파싱 로직 적용을 통한 Owner 및 Repo 식별자 정밀 추출 및 유효성 검증
  • next(err) 패턴과 Centralized Error Handler 도입을 통한 에러 처리 일원화 및 내부 정보 노출 차단
  • require.main === module 가드 적용을 통한 CLI 로직 분리로 모듈 재사용성 및 테스트 가능성 확보
  • 미들웨어 계층의 입력값 사전 필터링을 통한 스캐닝 엔진의 불필요한 연산 부하 제거

1. 외부 URL 입력 시 정규식 대신 URL 객체를 통한 호스트 및 프로토콜 화이트리스트 검증 적용

2. 에러 응답의 일관성 유지를 위해 전역 에러 핸들러 도입 및 스택 트레이스 출력 제어

3. 실행 파일 내 진입점 분리를 위해 require.main 체크 로직을 통한 Side Effect 방지

원문 읽기