본문 바로가기
Security/WEB

JWT(JSON Web Token)

by jino22 2024. 2. 27.

틀린 부분이 있다면 언제든지 댓글 남겨주세요! 


 

JWT (JSON Web Token) 이란

[개념]

 - 웹표준(RFC 7519)을 따르며, JSON 객체(key-value가 한 쌍을 이룸)를 통해 정보를 전달함.

 - 인증을 위해 필요한 모든 정보를 한 객체에 담에서 전달.

 - 주로 로그인 과정에서 인증할 때 사용됨.

 

[구조] - . (dot)을 구분자로 함

헤더(header).내용(payload).서명(signature)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

 

 - Header : Algorithm / Token type

   해시 알고리즘 / 토큰 타입 정의

{
  "alg": "HS256",
  "typ": "JWT"
}

 

 - Payload : Data

   전달하는 데이터

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

 

 - Verify signature

   인코딩된 header + 인코딩된 payload + secret값

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  your-256-bit-secret
)

 

[JWT 생성 사이트]

JSON Web Tokens - jwt.io


JWT signature 미검증 취약점

: payload 부분의 데이터를 바꾼 후 인코딩한 값을 기존 토큰 대신 입력했을 때, signature 값을 검증하지 않는 경우 변조가 가능한 취약점 발생 

웹페이지에서 JWT 값은 아래에서 확인 가능

 > 개발자도구 - Application - Storage - Access_token 

 

 

더 많은 취약점은 이 블로그 참고: JWT (JSON Web Token) 취약점 알아보기 (velog.io)

728x90
반응형

댓글