피드로 돌아가기
The Developer’s Guide to JWT Storage
Dev.toDev.to
Security

XSS부터 CSRF까지, 서비스 성격에 맞는 최적의 JWT 저장 전략

The Developer’s Guide to JWT Storage

Mrunank Pawar2026년 4월 6일18intermediate

Context

HTTP의 Stateless 특성으로 인해 인증 후 JWT를 클라이언트에 저장하고 재사용하는 구조. 부적절한 저장 방식 선택 시 XSS 공격을 통한 토큰 탈취 및 사용자 사칭 위험 존재. 서버 측 검증 미흡 시 권한 상승 및 데이터 유출 사고로 이어지는 보안 취약점 발생.

Technical Solution

  • Local Storage 사용 시 API 편의성은 높으나 JavaScript 접근이 가능하여 XSS 공격에 취약한 구조
  • Cookie 저장 시 HttpOnly 플래그 설정을 통해 클라이언트 스크립트 접근을 차단하여 XSS 위협 감소
  • CSRF 공격 방어를 위해 Cookie 설정 시 SameSite 속성을 Strict 또는 Lax로 지정하는 보안 전략
  • In-memory 저장 방식을 통해 페이지 새로고침 시 토큰이 소멸되나 탈취 가능성을 최소화하는 설계
  • 모바일 환경에서는 OS 제공 보안 저장소(Secure Storage)를 활용하여 토큰 유출 가능성 차단
  • 즉각적인 세션 종료가 필요한 경우 서버 측에 토큰 상태를 기록하는 Stateful JWT 인증 방식 도입

Key Takeaway

보안성과 사용자 경험 사이의 트레이드오프를 고려하여 저장소를 선택해야 함. 클라이언트 저장소 단일 보안에 의존하지 않고 토큰 만료 설정 및 Refresh Token 회전 전략을 병행하는 심층 방어 설계가 필수적임.


웹 서비스의 경우 HttpOnly 및 Secure 설정이 적용된 Cookie 저장을 우선 검토하고, XSS 방지를 위해 입력값 검증 로직을 강제할 것

원문 읽기