본문 바로가기
Backend2026년 6월 10일2분 읽기

JWT vs 세션, 인증 방식 선택과 흔한 보안 실수

YS
김영삼
조회 95
JWT vs 세션, 인증 방식 선택과 흔한 보안 실수

핵심 요약

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

아직 댓글이 없습니다.
Ctrl+Enter로 등록