CORS는 출처 허용, CSRF는 상태 변경 의도, XSS는 출력 실행 여부를 다룹니다. Nest 설정도 각각 다른 위치에서 점검해야 합니다.
*와 credentials를 함께 쓰거나 운영 도메인을 넓게
엽니다.
app.enableCors()에서 origin, methods, headers를
제한합니다.
허용 출처 목록과 쿠키 전송 조건이 배포 환경별로 분리됩니다.
쿠키 인증을 쓰면서 쓰기 요청에 별도 토큰 검증이 없습니다.
csurf, SameSite 쿠키, 쓰기 요청 헤더 검증을
조합합니다.
POST, PATCH, DELETE는 사용자가 받은 토큰 없이는 실패합니다.
저장된 사용자 입력을 HTML로 다시 출력하거나 CSP가 없습니다.
DTO 검증, sanitize-html, helmet CSP를 함께
적용합니다.
입력은 저장 전 정제되고 출력은 텍스트로 이스케이프됩니다.
먼저 브라우저 요청 경계를 좁히고, 쿠키 기반 쓰기 요청을 검증한 뒤, 저장된 입력이 응답에서 실행되지 않는지 확인합니다.