Перейти к основному содержимому
FreeOnlineTools Go
Русский
Как

Как декодировать JWT и безопасно проверять его claims

Автор: FreeOnlineTools Team · Обновлено 2026-08-28

Быстрый ответ

JWT — три Base64URL-строки, соединённые точками: header.payload.signature. Декодируйте header и payload через Base64URL decoding для inspect claims —но декодирование только читает данные, не проверяет подлинность. Всегда проверяйте signature на server. Используйте наш JWT Decoder.

Введение

JSON Web Token (JWT, RFC 7519) — компактный, URL-safe формат токена для аутентификации и авторизации. Имеет три Base64URL-кодированные части, разделённые точками: header.payload.signature. Header описывает алгоритм, payload несёт claims (user id, roles, expiry), а signature доказывает, что токен выдан доверенной стороной. Ключевое: header и payload кодированы, не зашифрованы —любой может их читать.

Шаг за шагом

  1. Разделите токен на три части

    JWT выглядит как xxxxx.yyyyy.zzzzz. Разделите символ точки, чтобы получить заголовок (часть 0), полезные данные (часть 1) и подпись (часть 2). Если частей не ровно три, токен имеет неверный формат.

  2. Base64URL-декодировать заголовок

    Заголовок представляет собой объект JSON в кодировке Base64URL, например {"alg":"HS256","typ":"JWT"}. Base64URL использует - и _ вместо + и / и опускает заполнение. Раскодируйте его, затем JSON.parse, чтобы прочитать алгоритм и ввести его. Наш декодер JWT делает это автоматически.

  3. Base64URL-декодировать полезную нагрузку (заявки)

    Полезная нагрузка представляет собой объект утверждений JSON. Зарегистрированные утверждения включают iss (эмитент), sub (тема), aud (аудитория), exp (срок действия), nbf (не раньше), iat (выдано) и jti (идентификатор токена). Частные утверждения зависят от приложения (например, роль, электронная почта). Расшифруйте и проверьте, но не доверяйте, пока не проверите.

  4. Проверьте срок действия и претензии «не раньше»

    exp и nbf — временные метки Unix (в секундах). Если текущее время истекло, срок действия токена истек и его необходимо отклонить. Если текущее время раньше nbf, токен еще не действителен. Проверьте их на стороне клиента на предмет UX, но применяйте их на стороне сервера в целях безопасности.

  5. Проверьте подпись на сервере (никогда на стороне клиента)

    Подпись — HMAC-SHA256(секрет, заголовок.полезная нагрузка) для HS256 или подпись RSA/ECDSA для RS256/ES256. Для проверки требуется секретный или открытый ключ, который никогда не должен достигать браузера. Используйте для проверки такую ​​библиотеку, как jsonwebtoken (Node) или jose — никогда не пишите свою собственную криптовалюту.

Примеры

Типичный JWT (три части)

Вход: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpmeJf36POk6yJV_adQssw5c

Выход: Header: {"alg":"HS256","typ":"JWT"} Payload: {"sub":"1234567890","name":"John Doe","iat":1516239022}

Декодированная полезная нагрузка со стандартными утверждениями

Вход: Полезная нагрузка настоящего токена аутентификации

Выход: {"sub":"user-42","iss":"freeonlinetoolsgo.com","exp":1767229200,"iat":1767225600,"role":"admin"}

Обнаружение просроченного токена

Вход: exp: 1609459200 (01.01.2021) проверено 28 августа 2026 г.

Выход: Token is expired —current time (1767225600) > exp (1609459200). Reject and prompt re-login.

Распространенные проблемы

  • Рассматривая декодирование как проверку: любой может создать JWT с любыми утверждениями и поддельной подписью. Декодирование считывает полезную нагрузку, но ничего не доказывает. Всегда проверяйте подпись с помощью секретного/открытого ключа на сервере, прежде чем доверять утверждениям.
  • Использование алгоритма «none»: спецификация JWT разрешает alg: none для незащищенных токенов. Если ваш верификатор принимает alg: none, злоумышленник может подделать токены. Настройте свою библиотеку так, чтобы она не отклоняла ни один алгоритм и не добавляла в белый список ожидаемые алгоритмы.
  • Хранение JWT в localStorage: XSS может читать localStorage и извлекать токены. Предпочитайте файлы cookie httpOnly, Secure, SameSite=Strict для токенов сеанса или кратковременные токены в памяти с файлом cookie обновления токена.
  • Не проверять exp/aud/iss: украденный токен действителен до истечения срока его действия. Всегда проверяйте exp (срок действия), aud (целевая аудитория) и iss (эмитент) при каждом запросе, чтобы предотвратить повторное воспроизведение токена между службами.

Советы

  • Используйте кратковременные токены доступа (15 минут) и долгосрочные токены обновления — это ограничивает окно в случае кражи токена доступа.
  • Предпочитайте RS256 (асимметричный) вместо HS256 (симметричный), когда несколько служб проверяют токены: каждая служба получает открытый ключ, а закрытый ключ есть только у эмитента.
  • Используйте наш декодер JWT во время разработки, чтобы проверить, что выдает сервер — он показывает декодированный заголовок, полезную нагрузку и удобочитаемую сводку заявок, не отправляя токен куда-либо.
  • Никогда не помещайте конфиденциальные данные (пароли, личные данные) в полезную нагрузку JWT — они закодированы с помощью Base64, а не зашифрованы, и любой, кто перехватит токен, сможет прочитать каждое утверждение.

Сопутствующие инструменты

Связанные руководства

Ссылки