Project

[Django] JWT 토큰 저장은 헤더? 쿠키?

알파파고 2025. 10. 7. 00:12
728x90

JWT 토큰 저장소

상황

JWT 토큰을 사용하는건 좋은데 토큰을 어떻게 관리 하는게 좋을지 대한 고민

옵션들

옵션 1: localStorage

  • 장점: 간단, 알아서 토큰인증 수행 추가로직 x, 페이지 새로고침해도 유지
  • 단점: XSS 공격 취약, 프론트에서 요청시 헤더에 토큰 추가해줘야됨

- 찾아본 결과 안좋은 반응이 많음

 

옵션 2: Cookie (httpOnly)

  • 장점: XSS 안전, 자동전송
  • 단점: CSRF 공격 고려 필요

- 설정 복잡

최종 선택 : localStorage + Cookie (httpOnly) 

이유: 개발 편의성과 보안성을 고려했을때 액세스토큰은 헤더, 리프레쉬토큰은 쿠키로 결정 (단 액세스토큰은 유효기간 짧게)

 

우려사항:

  • 설정이 어려울 것 같음
  • 짧은시간이지만 xss공격으로 액세스토큰 탈취시 피해가 생길수 있음

결과

최종적으로 액세스토큰은 헤더에넣고 localStorage 관리, 리프레시토큰은 Cookie(httpOnly) 관리

단 액세스토큰의 유효기간을 짧게 설정해서 XSS공격으로 탈취 당했을 시 피해를 최소화 한다.

 

 

728x90