Инструменты InterLAB · Подпись · сроки · предупреждения

JWT: разбор, проверка, создание

Вставьте токен — он сразу разложится на заголовок, payload и подпись, сроки покажутся в вашем часовом поясе с обратным отсчётом, а 16 правил безопасности подсветят опасные настройки. Подпись проверяется секретом, PEM, сертификатом, JWK или JWKS. Во второй вкладке — сборка тестового токена с генерацией секрета или пары ключей.

Бесплатно, без регистрации

Вставьте токен (можно с «Bearer»). Он разбирается в браузере и никуда не отправляется.

HS*: секрет. RS/PS/ES/EdDSA: открытый ключ PEM, сертификат, JWK или JWKS (ключ выбирается по kid). Не сохраняется.

Вставьте токен — разбор появится сразу.
Вставьте токен — разбор появится сразу.

Как это работает

  1. Разбор

    Токен делится на три части (JWS Compact, RFC 7515 §7.1), каждая декодируется из base64url. Ошибка показывается с частью и позицией символа: например, «+» вместо «-» значит, что токен закодирован обычным Base64.

  2. Проверка подписи

    Алгоритм берётся из заголовка, но только из известного списка, и ключ обязан ему соответствовать — так защищаются от подмены алгоритма. Ключ: секрет (текст или base64), PEM (SPKI, PKCS#1, сертификат X.509, PKCS#8 — из него берётся открытая часть), JWK или JWKS с выбором по kid.

  3. Сроки

    exp, nbf и iat показываются датой в вашем часовом поясе и относительно текущего момента; до истечения идёт обратный отсчёт. Допуск расхождения часов — 60 секунд.

  4. Предупреждения

    Каждое — с ID правила, доказательством из токена, объяснением и тем, что сделать. Отчёт копируется или скачивается в Markdown — без ключа и подписи.

  5. Сборка

    Заголовок и payload редактируются как JSON с подсказкой строки и столбца ошибки; кнопки ставят iat, exp, nbf и jti. Подпись — HS256/384/512 со случайным секретом или ES256/EdDSA с новой парой ключей (PEM и JWK для скачивания).

Стандарты и правила

JWS — RFC 7515, JWT — RFC 7519, алгоритмы — RFC 7518, EdDSA в JOSE — RFC 8037, ключи JWK/JWKS — RFC 7517, base64url — RFC 4648 §5, рекомендации по безопасности — RFC 8725 (JWT Best Current Practices).

HS256 / HS384 / HS512

Схема
HMAC-SHA-2
Ключ
общий секрет ≥ длины хеша
Стандарт
RFC 7518 §3.2
Чем проверяется
WebCrypto HMAC

RS256 / RS384 / RS512

Схема
RSASSA-PKCS1-v1_5
Ключ
RSA ≥ 2048
Стандарт
RFC 7518 §3.3
Чем проверяется
WebCrypto

PS256 / PS384 / PS512

Схема
RSASSA-PSS, соль = длина хеша
Ключ
RSA ≥ 2048
Стандарт
RFC 7518 §3.5
Чем проверяется
WebCrypto

ES256 / ES384 / ES512

Схема
ECDSA, подпись r‖s
Ключ
P-256 / P-384 / P-521
Стандарт
RFC 7518 §3.4
Чем проверяется
WebCrypto

EdDSA

Схема
Ed25519
Ключ
OKP Ed25519
Стандарт
RFC 8037
Чем проверяется
@noble/curves

none

Схема
без подписи
Ключ
—
Стандарт
RFC 7518 §3.6
Чем проверяется
всегда предупреждение
Алгоритмы подписи

JWT-ALG-NONE

Что
alg: none — токен без подписи
Важность
критично
Почему важно
Неподписанный токен может подделать кто угодно. Если сервер принимает alg=none (в любом регистре), проверка подписи отключена.

JWT-ALG-CONFUSION

Что
Путаница алгоритмов: HS* с открытым ключом
Важность
критично
Почему важно
Классическая атака: в токене alg=HS256, а сервер использует свой открытый RSA/EC-ключ как HMAC-секрет. Открытый ключ знает каждый — значит, каждый может подписать токен.

JWT-ALG-KEY-MISMATCH

Что
Алгоритм не соответствует типу ключа
Важность
высокая
Почему важно
Подпись нельзя проверить ключом другого типа: например, ES256 — только ключом EC P-256.

JWT-WEAK-SECRET

Что
Слабый HMAC-секрет
Важность
высокая
Почему важно
Секрет короче выхода хеш-функции (RFC 7518 §3.2: не меньше 256 бит для HS256) или из словаря подбирается офлайн по одному перехваченному токену.

JWT-SIG-EMPTY

Что
Пустая подпись при alg ≠ none
Важность
высокая
Почему важно
Подписи нет, хотя заголовок заявляет алгоритм. Так проверяют, не пропустит ли сервер токен без подписи.

JWT-NO-EXP

Что
Нет срока действия (exp)
Важность
средняя
Почему важно
Без exp украденный токен действует вечно, пока не сменят ключ.

JWT-LONG-LIFETIME

Что
Очень долгий срок действия
Важность
средняя
Почему важно
Срок жизни больше 24 ч для access-токена (больше 30 дней — средняя важность): украденный токен долго остаётся рабочим, отозвать JWT без чёрного списка нельзя.

JWT-EXPIRED

Что
Срок действия истёк
Важность
информация
Почему важно
Сервер должен отклонить этот токен (RFC 7519 §4.1.4).

JWT-NBF-FUTURE

Что
nbf в будущем
Важность
низкая
Почему важно
Токен ещё не начал действовать. Иногда это признак сбитых часов у издателя.

JWT-IAT-FUTURE

Что
iat в будущем
Важность
средняя
Почему важно
Токен «выпущен» позже текущего момента — часы издателя спешат или токен собран вручную.

JWT-SENSITIVE-CLAIM

Что
Персональные или секретные данные в payload
Важность
средняя
Почему важно
Payload JWS не зашифрован — это base64url, его читает любой, у кого есть токен (браузер, логи, прокси).

JWT-CRIT-UNKNOWN

Что
Заголовок crit с расширениями
Важность
высокая
Почему важно
Получатель обязан отклонить токен, если не понимает хотя бы одно расширение из crit (RFC 7515 §4.1.11). Если библиотека молча игнорирует crit — это уязвимость.

JWT-REMOTE-KEY

Что
jku / x5u / jwk: ключ указан самим токеном
Важность
высокая
Почему важно
Если сервер скачивает ключ по jku/x5u или берёт встроенный jwk без белого списка, злоумышленник подпишет токен своим ключом (а jku ещё и путь к SSRF).

JWT-KID-INJECTION

Что
Подозрительный kid
Важность
высокая
Почему важно
kid с «../», кавычками, «;», «|», «$(», нулевым байтом или URL похож на попытку внедрения: сервер, который подставляет kid в путь к файлу, SQL или команду, можно заставить взять ключ злоумышленника.

JWT-NO-AUD

Что
Нет аудитории (aud)
Важность
низкая
Почему важно
Без aud токен, выпущенный для одного сервиса, может быть принят другим сервисом того же издателя.

JWT-PAYLOAD-NOT-JSON

Что
Payload — не JSON
Важность
информация
Почему важно
Это допустимый JWS, но не JWT: в JWT payload — JSON-объект с claims (RFC 7519 §7.2).
Правила jwt-tool v1.0
  • Слабый секрет: короче выхода хеша (RFC 7518 §3.2), не больше 4 разных символов или из словаря значений, встречающихся в документации и туториалах (secret, your-256-bit-secret, your-384-bit-secret, your-512-bit-secret, your_jwt_secret, your-secret-key, jwt_secret, jwt-secret и другие — всего 44).
  • Долгий срок: больше 24 ч — низкая важность, больше 30 дней — средняя.
  • kid: «../», кавычки, «;», «|», «&», «$», «<>», «--», SQL-слова UNION/SELECT, нулевой байт, URL, абсолютный путь или длина больше 128 символов.

Тесты инструмента проверяют эталонные примеры из RFC 7515 (приложения A.1 HS256 и A.3 ES256), RFC 8037 (A.4 EdDSA, совпадение подписи побайтно) и RFC 7519 §6.1 (незащищённый JWT); их можно загрузить кнопкой «Эталоны RFC».

Ограничения

  • Инструмент проверяет подпись и содержимое токена, но не то, как ваш сервер его проверяет: библиотека может принимать alg none или не проверять aud — это видно только в коде и конфигурации.
  • Зашифрованные токены (JWE, пять частей) не расшифровываются — показывается только заголовок.
  • Ключи по jku/x5u не скачиваются (инструмент не ходит в сеть) — вставьте JWKS вручную. Цепочка сертификатов x5c не проверяется.
  • Создание токенов — для тестов: пара ключей живёт в памяти вкладки, для продакшена ключи создаются и хранятся на сервере (KMS, секреты окружения).

Приватность и безопасность

  • Токен, секреты и ключи обрабатываются только в вашем браузере (WebCrypto и @noble/curves): они не отправляются на сервер, не попадают в адрес страницы и не сохраняются в localStorage — после закрытия вкладки их нет.
  • В браузере сохраняются только настройки: открытая вкладка, алгоритм сборки и кодировка секрета.
  • Секреты и ключи создаются криптостойким генератором браузера (crypto.getRandomValues / WebCrypto generateKey); выбор символов секрета — без смещения.
  • В аналитику уходит только факт разбора, проверки или экспорта и категория (семейство алгоритма, результат) — без токена и ключа.
  • Результат уходит к нам, только если вы сами оставите заявку и не снимете галочку «Приложить результат» — что именно уйдёт, видно в форме. Ключи, пароли и токены в сводку не попадают: в ней только алгоритм, итог проверки подписи, правила и сроки — без токена, payload, значений claims, секрета и ключа.
  • Не вставляйте рабочие закрытые ключи ни в какие онлайн-инструменты, включая этот: для проверки нужен только открытый ключ.

Похожие инструменты

Все инструменты · 40
Генератор паролей и фразПароли, фразы из русских и английских слов, PIN и шаблоны из криптостойкого генератора, точная энтропия и время перебора, проверка своего пароля на частые слабости.Конфигуратор WireGuardСайт не может быть VPN — но здесь собирается настоящий WireGuard для вашего сервера: ключи X25519, wg0.conf с NAT, .conf и QR-код для каждого телефона и ноутбука, проверка подсетей и маршрутов, ZIP и инструкции. Ключи не покидают браузер.Генератор SSH-ключейEd25519 и ECDSA P-256 в формате OpenSSH с паролем (как ssh-keygen), отпечатки SHA256/MD5 и randomart, authorized_keys с ограничениями, ~/.ssh/config и проверка любого открытого ключа. Ключи создаются на вашем устройстве.Калькулятор подсетей CIDRIPv4 и IPv6: маска, диапазон и точное число адресов, двоичная запись с границей сети, разбиение и VLSM, объединение списков, пересечения и карта адресов, обратные зоны DNS.Сжатие картинок в WebP и AVIFПеретащите картинки — WebP, AVIF или JPEG по качеству или целевому размеру в КБ, шторка «до/после» 1:1, srcset и <picture>, пакетный ZIP. Всё в браузере.Генератор favicon и иконокИз картинки, SVG или буквы → favicon.ico, favicon.svg с тёмной темой, PNG всех размеров, apple-touch-icon, maskable, manifest и HTML; превью вкладки, iOS и Android — одним архивом.
Расскажите о задаче — мы изучим запрос и свяжемся с вами

Нужна проверка авторизации в вашем продукте?

Аудит кода и доступов: как выпускаются и проверяются токены, роли, секреты, RLS и API — с картой рисков и планом исправлений. Первый короткий разговор бесплатный.

  • Первый короткий разговор бесплатный — выбираем формат работы
  • NDA — по вашему или нашему шаблону
  • Стоимость — после брифа и согласования объёма

Не присылайте через форму пароли, ключи доступа и исходный код — безопасную передачу доступа обсудим отдельно.

Нажимая кнопку, вы соглашаетесь с обработкой персональных данных.