핵심 요약
JWT는 무상태라 서버 확장에 유리하지만 "발급한 토큰을 즉시 무효화하기 어렵다"는 약점이 있다. 세션은 서버가 상태를 들고 있어 즉시 로그아웃·강제 만료가 쉽다. 다중 서버·모바일·SPA면 JWT(짧은 access + refresh), 단일 서버·즉시 무효화 중요면 세션이 무난하다.
1. 비교
| JWT | 세션 | |
|---|---|---|
| 상태 | 무상태 | 서버 저장 |
| 즉시 무효화 | 어려움(블랙리스트 필요) | 쉬움 |
| 확장성 | 좋음 | 세션 저장소 공유 필요 |
2. JWT 안전하게 쓰기
- access token 짧게(15분), refresh token으로 갱신
- 토큰은 HttpOnly 쿠키에 — localStorage는 XSS 위험
- 로그아웃·탈취 대응: refresh 토큰 회전 + 서버측 무효화 목록
3. 함정
- JWT에 민감정보 넣지 말 것 — payload는 누구나 디코드 가능(서명만 검증)
- 알고리즘
none허용 취약점 — 서명 알고리즘 고정 - 만료 없는 토큰 발급 금지
자주 묻는 질문
JWT면 로그아웃이 안 되나요?
토큰 자체는 만료 전까지 유효합니다. 즉시 로그아웃하려면 짧은 만료 + refresh 회전, 또는 서버측 블랙리스트가 필요합니다. 그래서 무상태 이점이 일부 사라집니다.
payload는 암호화되나요?
아닙니다. 서명으로 위변조만 막을 뿐 내용은 base64라 누구나 읽습니다. 비밀번호·개인정보를 넣지 마세요.

댓글 0