<? phpukraine ІНСТРУМЕНТИ
Пошук по платформі

JWT Decoder: розбір токена

Розкладає токен на три секції та розшифровує exp і iat у дату. Підпис не перевіряється.

У БРАУЗЕРІ NEW ДЕКОДЕР
РОБОЧА ЗОНА
ЩО РОБИТЬ

Показує, що насправді лежить у токені

Три блоки base64 через точку неможливо прочитати, а зʼясувати треба зазвичай одне: коли токен протермінувався і який у ньому sub. Інструмент розкладає токен на секції, підсвічує кожну своїм кольором і перекладає числові часові позначки в дату з поміткою, чи токен ще живий.

ЯК ЦЕ ПРАЦЮЄ В PHP

JWT це три частини base64url через точку: header з алгоритмом, payload із даними і підпис. Перші дві не зашифровані, а лише закодовані: будь-хто може їх прочитати, тож не кладіть у payload нічого чутливого. Захищає лише підпис: він гарантує, що payload не змінювали, за умови що ви його перевіряєте.

// Розкодувати payload тривіально, і це НЕ перевірка
$payload = json_decode(base64_decode(strtr(explode('.', $jwt)[1], '-_', '+/')), true);

// Перевірка підпису обовʼязкова частина
use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$claims = JWT::decode($jwt, new Key($secret, 'HS256'));
// кидає виняток на протермінованому чи підробленому токені
ОБЕРЕЖНО

Ніколи не довіряйте payload без перевірки підпису. Класична дірка: сервер читає sub із розкодованого токена й пускає користувача, тоді будь-хто підміняє sub і входить як адміністратор. Друга дірка: алгоритм беруть із header самого токена, і атакуючий ставить туди none.

ПИТАННЯ

Що питають про цей інструмент

Ні. Розкодування відбувається у браузері, запит на сервер не йде. Це принципово для цього інструмента: у нього вставляють бойові токени, які дають доступ до реальних акаунтів. Але після роботи з чужим токеном усе одно варто його відкликати.

ДАЛІ ПО ТЕМІ