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 유지.