JWT 사용 시 토큰 저장에 따른 보안 이슈가 궁금합니다!


(Rayleigh) #1

안녕하세요! Javascript를 기반으로 개발 공부를 하고 있는 학생입니다! :slight_smile:

JWT 관련 자료를 보던 중 궁금함이 생겨 질문드립니다! 근원적으로 JWT를 통해 발급받은 토큰을 클라이언트 사이드에 저장할 때 발생하는 문제점이 무엇인지 궁금한 것인데요!

Please Stop Using Local Storage의 글과 글에 달린 댓글을 읽고 나니 JWT를 어디에 저장하는 게 좋을지에 대한 고민이 생겼습니다! (사실 보안적인 이슈를 감안하고 로컬 스토리지에 저장한다와 보안을 신경쓰면서 보다 까다로운 관리 방법을 선택한다의 갈림길이지만요!)

가령 민감한 정보를 클라이언트 사이드에 저장해야 한다고 했을 때, 클라이언트의 저장소를 사용해도 괜찮은지, SEO를 높이기 위해서는 어떻게 저장해야 하는지, 보안적 이슈를 고려하면서 JWT를 사용하는 방법은 무엇인지 등 혼자서는 풀리지 않는 의문이 생겼습니다! ㅜㅜ

이런 고민의 원인은 첨부한 윗 글에서는 문제를 지적하기는 하지만, 해결 방법에 대한 적절한 예제 혹은 가이드를 주지 않아 혼란스러운 것인데요!

다른 분들은 어떻게 토큰과 같은 민감한 정보를 클라이언트 사이드에 저장하시는지 궁금합니다!

PS. 추가적으로 글에서 언급하고 있는 session cookie가 일반적인 cookie랑 다른지, API side에서 캐시를 관리하거나 centralized sessions를 관리한다는 개념이 모호해서 궁금할 따름입니다! 만약 알고 계시다면 알려주시면 감사하겠습니다! ㅜㅜ


(Jong Chan Park) #2

애초에 Jwt 토큰에 포함되는 클레임들은 public 하게 공개되도 상관없는 데이터만 넣어야 합니다. 토큰이 탈취되어 api 요청 등에 악용될 경우를 대비해 토큰 블랙리스트 관리, expire 주기를 짧게 가져가는 등의 방법을 쓰죠