JWT 디코더

아래에 JWT를 붙여넣어 헤더, 페이로드, 서명을 디코딩하고 검사합니다. 참고: 이 도구는 서명을 검증하지 않습니다. 모든 처리는 브라우저에서 로컬로 수행됩니다.

복사됨!

토큰 정보

JWT란?

JSON Web Token(JWT)은 당사자 간에 안전하게 정보를 전송하기 위해 사용되는 간결하고 URL에 안전한 토큰 형식입니다. 점(.)으로 구분된 세 부분으로 구성됩니다:

  1. 헤더 - 알고리즘 및 토큰 유형 (예: HS256, RS256)
  2. 페이로드 - 클레임/데이터 (예: sub, iat, exp)
  3. 서명 - 토큰이 변조되지 않았음을 확인합니다

토큰을 디코딩한다고 해서 그 토큰에 대해 무엇이 증명되지는 않습니다. 헤더와 페이로드는 base64url일 뿐이고 누구나 고쳐 쓸 수 있기 때문입니다. 중요한 것은 서명입니다. 공유 비밀 키를 붙여 넣으면 HS256, HS384, HS512에 대해 이 페이지가 브라우저 안에서 확인합니다. 다른 알고리즘은 개인 키로 서명하고 공개 키로 검증하는데, 이런 페이지가 그것을 붙여 넣으라고 해서는 안 됩니다. 시각은 사용자의 시계를 기준으로 간격까지 함께 보여 줍니다. 대개 찾는 것이 만료 시각이기 때문입니다.

참고: 이 도구는 토큰을 디코딩만 합니다. 서명을 검증하지는 않습니다.

그건 실제로 어떻게 저장하고 있나요

해시도 토큰도 비밀번호도 주변 코드만큼만 강합니다. 기본값 그대로 둔 비용 계수, 아무도 만료를 확인하지 않는 토큰, 저장소에 커밋된 비밀 키 같은 것들 말입니다. 저희는 애플리케이션을 점검하고 단단하게 만들며, 공격자가 가장 먼저 닿는 곳을 알려 드립니다.

보안 점검 예약하기

자주 묻는 질문

디코딩되면 유효하다는 뜻인가요
아닙니다. 바로 이것이 피해야 할 오해입니다. 헤더와 페이로드는 base64url일 뿐이라 누구나 고쳐 써서 말끔히 디코딩되는 것을 만들 수 있습니다. 토큰이 주장하는 발급자에게서 왔음을 말해 주는 것은 서명뿐입니다. 비밀 키를 붙여 넣으면 이 페이지가 확인합니다.
여기서 검증할 수 있는 알고리즘은 무엇인가요
공유 비밀로 서명하는 HS256, HS384, HS512입니다. RS, ES, PS 토큰은 개인 키로 서명하고 공개 키로 검증하는데, 그 어느 쪽이든 웹 페이지에 붙여 넣는 습관은 들이지 않는 편이 좋습니다. 그런 토큰은 공개된 키 세트를 써서 직접 작성한 코드에서 검증하세요.
alg가 none인 토큰은 무슨 뜻인가요
쓸 만한 서명이 아예 없다는 뜻이며, 따라서 페이로드는 무엇이든 주장할 수 있습니다. 명세에는 다른 방식으로 보호되는 토큰을 위해 존재하지만, 라이브러리가 기본으로 받아들일 때 잘 알려진 공격이 됩니다. 실제 토큰에서 보인다면 그 토큰은 신뢰할 수 없는 입력으로 다루세요.
실제 토큰을 여기 붙여 넣어도 안전한가요
이 페이지는 아무것도 업로드하지 않으므로 브라우저를 벗어나는 것이 없습니다. 그렇더라도 살아 있는 토큰은 자격 증명입니다. 비밀 키 칸은 저장되는 설정과 질의 문자열에서 의도적으로 제외해, 실수로 저장되거나 공유되지 않게 했습니다. 통제할 수 없는 곳에 붙여 넣은 것은 폐기하세요.
만료에 시간 차이가 함께 나오는 이유는 무엇인가요
대개 그것이 알고 싶은 것이기 때문입니다. 4분 전에 만료된 토큰과 4시간 뒤에 만료되는 토큰은 숫자로는 거의 똑같아 보입니다. 그래서 페이지가 둘 다 사용자의 시계에 맞추고 차이를 적어 줍니다. 서버 로그와 비교한다면 UTC로도 볼 수 있습니다.