JWT: разбор, проверка, создание
Вставьте токен — он сразу разложится на заголовок, payload и подпись, сроки покажутся в вашем часовом поясе с обратным отсчётом, а 16 правил безопасности подсветят опасные настройки. Подпись проверяется секретом, PEM, сертификатом, JWK или JWKS. Во второй вкладке — сборка тестового токена с генерацией секрета или пары ключей.
Бесплатно, без регистрации
Вставьте токен (можно с «Bearer»). Он разбирается в браузере и никуда не отправляется.
HS*: секрет. RS/PS/ES/EdDSA: открытый ключ PEM, сертификат, JWK или JWKS (ключ выбирается по kid). Не сохраняется.
Как это работает
Разбор
Токен делится на три части (JWS Compact, RFC 7515 §7.1), каждая декодируется из base64url. Ошибка показывается с частью и позицией символа: например, «+» вместо «-» значит, что токен закодирован обычным Base64.
Проверка подписи
Алгоритм берётся из заголовка, но только из известного списка, и ключ обязан ему соответствовать — так защищаются от подмены алгоритма. Ключ: секрет (текст или base64), PEM (SPKI, PKCS#1, сертификат X.509, PKCS#8 — из него берётся открытая часть), JWK или JWKS с выбором по kid.
Сроки
exp, nbf и iat показываются датой в вашем часовом поясе и относительно текущего момента; до истечения идёт обратный отсчёт. Допуск расхождения часов — 60 секунд.
Предупреждения
Каждое — с ID правила, доказательством из токена, объяснением и тем, что сделать. Отчёт копируется или скачивается в Markdown — без ключа и подписи.
Сборка
Заголовок и 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).
- Слабый секрет: короче выхода хеша (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. Всё в браузере.Нужна проверка авторизации в вашем продукте?
Аудит кода и доступов: как выпускаются и проверяются токены, роли, секреты, RLS и API — с картой рисков и планом исправлений. Первый короткий разговор бесплатный.
- Первый короткий разговор бесплатный — выбираем формат работы
- NDA — по вашему или нашему шаблону
- Стоимость — после брифа и согласования объёма