JWT 토큰 검증기 챌린지
발행: (2025년 12월 2일 오전 07:50 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
개요
2019년 Django의 세션 관리 프레임워크에 미묘하지만 치명적인 취약점(CVE‑2019‑11358)이 존재했습니다. 프레임워크가 인증 후 세션 토큰을 제대로 무효화하지 않아 공격자가 사용자 세션을 무한히 탈취할 수 있었습니다. 근본 원인은 토큰 만료 검사에서 bool:을 사용한 잘못된 비교로 인한 오프‑바이‑원 오류였습니다.
토큰‑검증 연습
def is_token_valid(current_time: float, expiry: float, token_timestamp: float) -> bool:
"""
인증 토큰이 아직 유효한지 검증합니다.
규칙:
- 토큰이 만료된 경우(False, 경과 시간 >= expiry) 반환합니다.
- 시간 조작이 감지된 경우(False, current_time < token_timestamp) 반환합니다.
예시:
>>> is_token_valid(1000.0, 600, 1500.0) # 500 s 경과
True
>>> is_token_valid(1000.0, 600, 1600.0) # 정확히 만료 시점
False
"""
# Your implementation here
pass
엣지‑케이스 표
| 만료 설정 | 보안 위험 | 실제 영향 |
|---|---|---|
| 만료 검사 없음 | ❌ 치명적 | 토큰이 영원히 유효 |
잘못된 경계 (=가 >가 아님) |
추가 고려 사항
- 시간 여행 탐지 (
current_time < token_timestamp). - 실제 보안 시나리오 (세션 고정, 시계 스키우 공격).