Кодування

JWT Encoder/Decoder

Кодування та декодування JWT-токена — заголовок, корисне навантаження, підпис HMAC і стандартні поля.

JWT (JSON Web Token) — це компактний формат для передачі підписаних даних, який складається з трьох частин, розділених крапкою: заголовка (header), корисного навантаження (payload) і підпису (signature). Інструмент декодує будь-який JWT і показує всі три частини, а також дозволяє зібрати новий токен із підписом HMAC.

Декодування не перевіряє валідність підпису — щоб побачити вміст токена, секретний ключ не потрібен. Перевірка підпису потрібна лише тоді, коли ви довіряєте токену як справжньому.

Як користуватися

Типові сценарії

Що варто памʼятати

JWT не зашифрований, а лише закодований у Base64URL — будь-хто може прочитати payload. Не кладіть туди паролі чи інші секрети.

Підпис захищає від підробки даних, але не від їх перегляду. Для конфіденційності потрібне додаткове шифрування (JWE) або HTTPS-транспорт.

Стаття про цей інструмент: JWT: структура токена та що означає "декодувати" JWT

Часті запитання

Чи перевіряє декодування підпис токена?

Ні. Декодування без секрету/ключа лише розбирає Header і Payload — це просто Base64URL-дані, доступні будь-кому. Це не доводить, що токен справжній і не був підроблений; для перевірки автентичності потрібен правильний секрет або публічний ключ.

Чи безпечно вставляти реальний JWT або секрет у цей інструмент?

Так — усе кодування, декодування й підписування виконується локально у вашому браузері. Ні токен, ні секрет нікуди не надсилаються.

Що означають claims exp, nbf та iat?

Це стандартні тимчасові поля payload: iat — час видачі токена, nbf — момент, з якого токен стає дійсним, exp — момент, після якого токен вважається простроченим. Усі три задаються як Unix-час у секундах.

Що таке атака з підміною алгоритму на "none"?

Якщо бекенд наївно довіряє полю alg із заголовка токена, зловмисник може замінити його на none, прибрати підпис — і токен з довільними даними пройде перевірку. Надійні бібліотеки вимагають явно задавати очікуваний алгоритм при верифікації.

Чому не варто зберігати JWT у localStorage для чутливих сесій?

localStorage доступний будь-якому JavaScript-коду на сторінці, тому вразливий до XSS — шкідливий скрипт може вкрасти токен. Для сесійних токенів безпечніше використовувати httpOnly-cookie, недоступні для JavaScript.

Статті: Кодування

Base64: навіщо потрібне кодування і як воно працює

Як Base64 перетворює бінарні дані на текст ASCII і де це реально потрібно.

Base32: чим відрізняється від Base64 і коли зручніший

Регістронезалежний алфавіт Base32 і сценарії, де він зручніший за Base64.

URL Encode/Decode: percent-encoding у посиланнях

Як спецсимволи в адресних рядках і query-параметрах перетворюються на %XX-послідовності.

HTML Entities: як безпечно виводити спецсимволи на сторінці

Чому символи < > & потрібно екранувати і як це запобігає поламаній розмітці.

Unicode Escape: що означають послідовності \uXXXX

Звідки в JSON і JS-рядках беруться послідовності виду \u0041 і що вони означають.

ROT13 і шифр Цезаря: проста заміна символів

Чому зсув на 13 літер робить ROT13 симетричним і навіщо його взагалі використовують сьогодні.

Punycode: як домени з кирилицею працюють у DNS

Як домен на кшталт «приклад.укр» перетворюється на ASCII-запис із префіксом xn--.

Азбука Морзе: як текст перетворюється на крапки й тире

Принцип кодування літер крапками й тире та де азбука Морзе застосовується зараз.

Data URI: коли вбудовувати зображення прямо в код

Як data:-URI вбудовує вміст файлу прямо в HTML чи CSS і коли це виправдано.

Gzip + Base64: стиснення даних для передачі текстом

Навіщо стиснені бінарні дані ще й кодують у Base64 перед тим, як покласти в текстове поле.

XML Entities: екранування символів у XML-документах

П’ять обов’язкових XML-entity, без яких документ ламається при парсингу.