JWT가 최고라던데, 왜 주요 사이트는 하나도 안 쓸까

“GitHub, Google, Amazon, Netflix, Stack Overflow 등 주요 사이트는 브라우저 인증에 JWT가 아니라 서버 세션과 쿠키를 사용한다. JWT는 서비스 간 내부 호출이나 오프라인 검증에는 적합하지만, 즉시 폐기 불가, Base64 노출, localStorage XSS 위험, 알고리즘 혼동 및 Shiro CVE-2016-4437 같은 구현 취약점 때문에 브라우저 세션에는 부적합하다는 분석이다.”

AI 요약

JWT가 현대 인증의 표준처럼 여겨지지만, 실제로 GitHub·Google·Amazon·Netflix·Stack Overflow 등 주요 사이트는 모두 Session+Cookie 방식을 사용한다는 사실을 분석한 글이다. JWT는 서비스 간 내부 호출, 오프라인 검증, 기계 신원 증명 등에는 적합하지만 브라우저 세션용으로 설계되지 않았다. 특히 토큰 취소 불가, 권한 회수 지연, XSS 취약성 등으로 인해 대부분의 JWT 사용은 결국 Session을 모방하는 것에 불과하다는 지적이다.

핵심 포인트

  • GitHub은 _gh_session(Rails 암호화 세션), Google은 SID·HSID·SSID·SAPISID 등 서명·암호화된 계정 ID 저장
  • JWT는 서명 후 만료 전까지 취소 불가 → 블랙리스트 유지 시 무상태성 상실이라는 딜레마
  • JWT payload는 Base64 인코딩일 뿐 암호화가 아니어서 사용자 정보 노출, localStorage 저장 시 XSS 위험 최대
  • Shiro RememberMe 취약점(CVE-2016-4437), Auth0의 alg: none 알고리즘 혼동 취약점 등 JWT 구현 이슈 다수
  • SPA 환경에서도 localStorage·메모리·HttpOnly Cookie 모두 각각의 트레이드오프 존재

향후 전망

  • 브라우저 세션에는 Session+Cookie, 서비스 간 통신에는 JWT라는 역할 분리 원칙 강화
  • JWT 라이브러리 검증 로직 강화 및 HttpOnly Cookie 기반 인증 회귀 추세
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...