JWT 토큰을 어디에 저장할까?

박지성 학부생·2023년 11월 20일
0

BackEnd Develop log

목록 보기
3/27

쿠키가 뭐야?! 클릭!
JWT(Jason Web Token) 토큰을 쿠키에 저장하는 것과 세션(Session) 또는 로컬 스토리지(Local Storage)에 저장하는 것은 각각 장단점이 있으며, 어떤 방식을 선택할지는 프로젝트의 요구사항과 보안 고려사항에 따라 다를 수 있다.

저장 방식 간의 차이점

JWT 토큰을 쿠키에 저장하는 경우:

보안 강화: 쿠키에 JWT를 저장하면 클라이언트 측에서 직접 액세스하기 어렵다. 쿠키는 웹 브라우저에서 관리되며, HttpOnly 플래그를 설정하여 JavaScript로 쿠키에 접근하는 것을 방지할 수 있다.

자동 전송: 브라우저는 쿠키를 자동으로 HTTP 요청 헤더에 추가하므로 매번 JWT를 수동으로 전송할 필요가 없다.

서버 측 세션 관리 필요 없음: JWT를 쿠키에 저장하면 서버 측에서 세션을 관리할 필요가 없어진다. JWT 자체가 클라이언트의 인증 및 권한 정보를 포함하고 있기 때문.

세션에 JWT 토큰을 저장하는 경우:

보안: 세션 저장소에 JWT를 저장하면 클라이언트에서 직접 액세스하기 어렵다. 그러나 쿠키와 달리 브라우저가 세션 저장소에 접근할 수 없기 때문에 JavaScript로 세션에 접근하는 것은 불가능하다.

유연성: 세션 저장소는 클라이언트 측에서 동작하지 않으므로 쿠키처럼 클라이언트-사이드 자바스크립트로 작동하는 것과 관련된 제약이 없다.

로컬 스토리지에 JWT 토큰을 저장하는 경우:

간단함: 로컬 스토리지는 사용하기 쉽고, 클라이언트 측에서 쉽게 액세스할 수 있다.

자동 전송 미지원: 로컬 스토리지에 저장한 JWT는 HTTP 요청 헤더에 자동으로 포함되지 않으므로 매번 요청할 때 수동으로 JWT를 전송해야 한다.

보안 고려: 로컬 스토리지는 JavaScript로 쉽게 액세스할 수 있으므로, 보안상의 고려사항이 필요하다. 민감한 정보가 포함된 JWT를 로컬 스토리지에 저장할 경우, 적절한 보안 조치가 필요하다.

이러한 차이점을 고려하여, 프로젝트의 요구사항과 보안 정책에 따라 JWT 토큰을 어디에 저장할지 결정해야 한다. 일반적으로는 보안을 강화하기 위해 쿠키를 사용하고, 브라우저 외부의 클라이언트 액세스를 피하기 위해 HttpOnly 플래그를 설정하는 것이 좋다. 그러나 세션 또는 로컬 스토리지를 사용할 경우에는 보안적인 고려와 자동 전송 여부를 고려해야 한다.

profile
참 되게 살자

0개의 댓글