jwt 2025-01-22
JWT 토큰: 작동 원리와 보안 모범 사례
JSON Web Token에 대한 심층 분석 - 구조, 서명 작동 방식, 피해야 할 일반적인 보안 실수입니다.
JSON Web Token(JWT)은 당사자 간에 JSON 객체로 정보를 안전하게 전송하기 위한 개방형 표준(RFC 7519)입니다.
JWT 구조
JWT는 점으로 구분된 세 부분으로 구성됩니다:
1. 헤더
{
"alg": "HS256",
"typ": "JWT"
}
서명 알고리즘과 토큰 유형을 지정합니다.
2. 페이로드 (클레임)
{
"sub": "1234567890",
"name": "John Doe",
"exp": 1516242622,
"role": "admin"
}
표준 클레임:
iss(발급자): 누가 토큰을 발급했는지sub(주체): 토큰의 대상exp(만료): 토큰이 만료되는 시간iat(발급 시간): 토큰이 생성된 시간
3. 서명
헤더와 페이로드를 비밀 키로 서명합니다.
JWT 인증 작동 방식
1. 사용자가 자격 증명을 서버로 보냄
2. 서버가 자격 증명을 검증하고 JWT를 생성
3. JWT가 클라이언트로 전송
4. 클라이언트가 후속 요청에 JWT를 포함
5. 서버가 JWT 서명을 검증하고 요청을 처리
보안 모범 사례
해야 할 것:
- 짧은 만료 시간 설정
- 모든 JWT 전송에 HTTPS 사용
- 모든 클레임 검증
- HttpOnly 쿠키에 토큰 저장
하지 말아야 할 것:
- 페이로드에 민감한 데이터 저장 (암호화되지 않음)
- 프로덕션에서
none알고리즘 사용 - localStorage에 JWT 저장 (XSS 취약)
- 만료되지 않는 토큰 생성
JWT 디코더 도구를 사용하여 JWT 토큰을 디코딩하고 검사하세요.