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).
  • 실제 보안 시나리오 (세션 고정, 시계 스키우 공격).
Back to Blog

관련 글

더 보기 »

Day 1276 : 커리어 클라이밍

토요일 역으로 가기 전에, 현재 진행 중인 사이드 프로젝트에서 코딩을 했어요. 꽤 좋은 진전을 이루었고, 이제 나갈 시간이었어요. Made i...

Stateless AI 애플리케이션의 아키텍처

프로젝트는 위험해 보이는 결정으로 시작되었습니다: 백엔드 데이터베이스를 사용하지 않는 것이었습니다. 당시에는 사용자 데이터를 영구 저장할 필요가 없었으며—사용자의 응답을 얻는 것이...