블로그로 돌아가기
Security 2026-04-29

2026년 JWT 보안 모범 사례

가장 흔한 JWT 취약점 방지: 알고리즘 혼동, 약한 시크릿, 리플레이.

JWT는 수백만 앱의 인증을 담당하며 같은 취약점을 반복 출시합니다.

알고리즘 잠그기

악명 높은 alg: none 공격은 20년 전 것인데 여전히 잘못 설정된 라이브러리에서 작동합니다.

jwt.verify(token, secret, { algorithms: ['HS256'] });

알고리즘 선택

  • HS256: 대칭, 단순, 모든 검증자와 시크릿 공유 필요
  • RS256/ES256: 비대칭, 공개키만 필요, 분산 시스템에 이상적

강한 시크릿

openssl rand -base64 32

짧은 수명

액세스 토큰 5-15분. httpOnly + Secure + SameSite=Strict 쿠키의 리프레시 토큰과 페어.

모든 클레임 검증

issuer, audience 검증을 빠뜨리면 크로스 테넌트 재사용이 발생합니다.

토큰 저장

  • 액세스: 메모리만
  • 리프레시: httpOnly 쿠키
  • 절대 금지: localStorage (XSS 즉시 읽음)

폐기 전략

순수 JWT는 폐기 불가. 침해 토큰의 jti 서버 사이드 denylist 유지.