쿠키
- 브라우저가 쿠키를 자동으로 관리하고 요청마다 자동으로 전송한다.
- HttpOnly 속성으로 XSS 공격을 방지
- Secure 속성으로 네트워크 공격을 방지
- SameSite 속성으로 CSRF 공격을 방지
헤더
- 클라이언트 측 로컬, 세션 저장소에 저장하고, 각 요청 시 Authorization 헤더에 포함하여 전송한다.
- 저장소에 저장된 토큰은 자동으로 전송되지 않으므로 CSRF 공격을 방지
- 저장소에 저장된 토큰은 JavaScript에서 접근할 수 있으므로 XSS 공격에 취약
- 클라이언트 측에 안전하게 저장하기 위해 추가적인 보안 조치가 필요하다.
localStorage와 sessionStorage는 편리하지만, JWT를 저장하기에는 보안상 큰 위험이 있습니다. OWASP는 JWT를 쿠키에 저장하고 HttpOnly, Secure, SameSite=Strict 속성을 설정할 것을 강력히 권장합니다. 이렇게 하면 웹 애플리케이션의 보안을 크게 강화할 수 있습니다 (OWASP Foundation) (OWASP Cheat Sheet Series) (OWASP) (Information Security Stack Exchange).