jwt는 어디에다가 저장하는게 좋을까

기운찬곰·2022년 10월 15일
0

참고 : https://velog.io/@0307kwon/JWT는-어디에-저장해야할까-localStorage-vs-cookie

참고 : https://stackoverflow.com/questions/31068888/jwt-authentication-cookie-vs-header

여기서 작성한 글을 참고하면 다음과 같다.

  • Http-only + secure cookie - no XSS, but vulnarable to XSRF
  • Header (saved in local storage or DOM) - no XSRF, but vulnarable to XSS

cookie는 안전한가

Http-only + secure cookie 옵션을 사용하면 XSS 공격을 어느정도 막을 수 있다. (자바스크립트로 쿠키 조작이 불가능 하므로. 그렇지만 애초에 XSS 할 여지를 주지 않는 것이 중요)

vulnarable to XSRF 이라고 했지만, 요즘에 cookie는 samesite 옵션이 있어서 XSRF를 어느정도 누그러트릴 수 있고, 추가적인 XSRF 보안 설정을 통해 충분히 막을 수 있다. (XSRF 토큰 설정이라던지)

답변에서도 XSRF를 보호하는 것은 쉬운 일이므로 local storage 보다 cookie를 사용하는 것을 권장하고 있다.

local storage는 안전한가

cookie는 이제 알겠는데 local storage는 어떨지 궁금하네.

  • XSRF 공격에는 안전하다 : 자동으로 request에 담기는 쿠키와는 다르게 js 코드에 의해 헤더에 담기므로 XSS를 뚫지 않는 이상 공격자가 정상적인 사용자인 척 request를 보내기 어려운 구조이다. (그럴 수 있겠군)
  • XSS 공격에 취약하다 : 공격자가 localStorage에 접근하는 js 코드 한 줄만 주입하면 localStorage를 공격자가 내 집처럼 드나들 수 있다. (확실히 위험부담이 크긴 하군. cookie 처럼 옵션이 없나?) “HttpOnly 플래그가 없는 쿠키 처럼 작동합니다”(그렇구만) - 참고

참고 : https://pragmaticwebsecurity.com/articles/oauthoidc/localstorage-xss.html

(음.. 이글을 보면 local storage가 xss에 얼마나 취약한지 보여주고 있는데 본질은 xss 를 처음부터 막는데 있다고 하는 듯하다.)

✅ 나는 cookie를 사용할 듯. 왜냐면 cookie 설정과 보안설정을 통해 충분히 대응할 수 있다고 생각하고, 별도로 헤더에 담지 않아도 요청을 보낼때 자동으로 담아서 보내지기 때문에 편하잖아.
profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글