보안 릴리스 승인 기준
Nest Helmet CORS 위협 모델
보안 미들웨어를 추가했다는 사실만으로 안전해지지 않는다. CORS
credential, CSP, dependency severity, secret 노출, rate limit, 배포
차단 기준이 실제 API와 프론트 도메인 구조에 맞아야 한다.
브라우저 경계
origin, credential, cookie 속성이 실제 프론트 도메인과 맞는지
먼저 좁힌다.
→
실행 차단면
CSP, rate limit, dependency scan으로 공격이 실행되는 면을
줄인다.
→
배포 승인
리포트와 secret 검색 결과가 깨끗할 때만 릴리스 게이트를
통과시킨다.
01
위협 경계 정의
브라우저 호출, 서버 간 호출, 관리자 API, 공개 API를 나눠 필요한
차단 조건을 정한다.
모든 route에 같은 정책이 맞지는 않다
02
CORS 검증
allowed origin, credentials, methods, headers가 실제 프론트
도메인과 쿠키 정책에 맞는지 확인한다.
credential과 wildcard는 함께 쓰면 위험하다
03
CSP와 보안 헤더
Helmet 기본값에 기대지 말고 script, connect, frame, img source를
앱 요구에 맞춘다.
CSP는 리포트 모드로 먼저 볼 수 있다
04
의존성 스캔
취약점 severity, exploit 가능성, reachable 여부, 패치 가능성을
기준으로 차단 여부를 정한다.
모든 경고가 같은 우선순위는 아니다
05
비밀값 추적
env, 로그, 에러 응답, source map에 token이나 내부 URL이 노출되지
않는지 확인한다.
빌드 산출물 검색이 필요하다
CORS
브라우저 출처 제어
허용 origin과 credential 정책을 정확히 맞춘다.
서버 간 호출 보호책은 아니다
CSP
스크립트 실행 제한
XSS 피해를 줄이기 위해 허용 source와 nonce/hash 전략을
둔다.
인라인 스크립트를 확인한다
Scan
취약 의존성 차단
critical/high 취약점과 실제 사용 경로를 기준으로 배포 차단을
결정한다.
예외에는 만료일을 둔다
Secret
민감정보 노출 방지
로그, 응답, 번들, sourcemap에서 비밀값을 제거한다.
마스킹 테스트를 한다
보안 확인
CORS 실패
허용되지 않은 origin과 credential 요청이 차단되는지
확인한다.
CSP 리포트
실제 페이지에서 필요한 source가 차단되지 않고 불필요한 source가
열리지 않는지 본다.
산출물 검색
배포 파일과 로그 샘플에 secret, token, 내부 URL이 없는지
확인한다.