TIPS
2025. 11. 24.
JWT, 아직도 그냥 쓰시나요? 안전하게 쓰는 최소 체크리스트 (Java)
JWT는 “세션 없이 인증”에 좋아 보이지만, 설정 하나만 틀려도 바로 취약해집니다. 짧게 핵심만 정리해보겠습니다. JWS vs JWE 구분이 먼저입니다 JWS: 서명만 합니다. 위변조 방지입니다. 내용은 평문입니다.JWE: 암호화까지 합니다. 내용 비공개입니다.민감정보(주민번호, 카드번호 등)는 JWS에 넣지 않습니다. 숨겨야 한다면 JWE 또는 서버 조회로 대체합니다.알고리즘 선택과 “alg 혼동” 방지 서명은 RS256(또는 ES256) 권장입니다. 서버는 개인키로 서명, 클라이언트/게이트웨이는 공개키로 검증합니다.HS256↔RS256 혼동 취약점 방지: 서버에서 허용 알고리즘을 화이트리스트로 고정합니다. alg: none는 당연히 금지입니다.만료·스코프·Audience는 필수 exp(만료), i..