Джерело
QA Co-pilot | Хакерський набір: Як читати JWT-токени без сторонніх сайтівПривіт, екі...
38 Охват/переглядів
2025-12-15 08:07
Повідомлення №129
🔑 Хакерський набір: Як читати JWT-токени без сторонніх сайтів
Привіт, екіпаж! Ви робите запит в Postman, а у відповідь — 401 Unauthorized. Чому?
1️⃣
Токен прострочився 5 хвилин тому?2️⃣
Вам дали токен з правами Read-Only, а ви намагаєтесь зробити POST?3️⃣
В токені зашитий не той User ID?
Токен (JWT) — це не абракадабра. Це просто Base64 -кодований JSON. Його можна прочитати. Більшість йде на сайт jwt.io, вставляє туди токен і дивиться. СТОП!
🛑 Вставляти робочі токени (особливо з продакшну) на чужі сайти — це грубе порушення безпеки. Давайте зробимо свій безпечний декодер прямо в консолі браузера за допомогою AI.Практичний кейс: Вам треба миттєво дізнатися, коли закінчується життя токена (поле exp) і яка там роль.✨ Готовий промпт "JWT Decoder":
Виступи в ролі Security Engineer. Напиши мені JavaScript-функцію для консолі браузера, яка парсить **JWT токен**.**Вимоги:**1. Функція приймає рядок токена.2. Вона декодує другу частину токена (Payload).3. Виводить вміст у зручному вигляді (console.table або JSON).4. **Важливо:** Якщо в токені є поля `exp` (expiration) або `iat` (issued at), перетвори їх з Unix Timestamp у читабельну дату (Human readable format). Код має працювати без зовнішніх бібліотек.
✅ Результат від AI (зберігаємо в Snippets): function parseJWT(token) { try { const base64Url = token.split('.')[1]; const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); const jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); const data = JSON.parse(jsonPayload); // Конвертуємо дати ['exp', 'iat', 'nbf'].forEach(field => { if (data[field]) { data[field + '_readable'] = new Date(data[field] * 1000).toLocaleString(); } }); console.table(data); } catch (e) { console.error("Невалідний токен!", e); }}
Як це використати?
1️⃣
Збережіть цей код у сніпети (ми вчили це вчора 😉) або просто вставте в консоль.2️⃣
Напишіть: parseJWT("ващ_довгий_токен_eyJ...").3️⃣
Дивіться в табличку!
🔹 role: "admin" (Ок, права є).
🔹 exp_readable: "15.12.2025, 10:00:00" (Ага! Він протух годину тому).
Висновок: Ви діагностуєте проблеми авторизації за секунди, не передаючи дані третім сторонам. Це професійний підхід до безпеки. А ви користуєтесь онлайн-декодерами чи довіряєте тільки собі?
👇
Привіт, екіпаж! Ви робите запит в Postman, а у відповідь — 401 Unauthorized. Чому?
1️⃣
Токен прострочився 5 хвилин тому?2️⃣
Вам дали токен з правами Read-Only, а ви намагаєтесь зробити POST?3️⃣
В токені зашитий не той User ID?
Токен (JWT) — це не абракадабра. Це просто Base64 -кодований JSON. Його можна прочитати. Більшість йде на сайт jwt.io, вставляє туди токен і дивиться. СТОП!
🛑 Вставляти робочі токени (особливо з продакшну) на чужі сайти — це грубе порушення безпеки. Давайте зробимо свій безпечний декодер прямо в консолі браузера за допомогою AI.Практичний кейс: Вам треба миттєво дізнатися, коли закінчується життя токена (поле exp) і яка там роль.✨ Готовий промпт "JWT Decoder":
Виступи в ролі Security Engineer. Напиши мені JavaScript-функцію для консолі браузера, яка парсить **JWT токен**.**Вимоги:**1. Функція приймає рядок токена.2. Вона декодує другу частину токена (Payload).3. Виводить вміст у зручному вигляді (console.table або JSON).4. **Важливо:** Якщо в токені є поля `exp` (expiration) або `iat` (issued at), перетвори їх з Unix Timestamp у читабельну дату (Human readable format). Код має працювати без зовнішніх бібліотек.
✅ Результат від AI (зберігаємо в Snippets): function parseJWT(token) { try { const base64Url = token.split('.')[1]; const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); const jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); const data = JSON.parse(jsonPayload); // Конвертуємо дати ['exp', 'iat', 'nbf'].forEach(field => { if (data[field]) { data[field + '_readable'] = new Date(data[field] * 1000).toLocaleString(); } }); console.table(data); } catch (e) { console.error("Невалідний токен!", e); }}
Як це використати?
1️⃣
Збережіть цей код у сніпети (ми вчили це вчора 😉) або просто вставте в консоль.2️⃣
Напишіть: parseJWT("ващ_довгий_токен_eyJ...").3️⃣
Дивіться в табличку!
🔹 role: "admin" (Ок, права є).
🔹 exp_readable: "15.12.2025, 10:00:00" (Ага! Він протух годину тому).
Висновок: Ви діагностуєте проблеми авторизації за секунди, не передаючи дані третім сторонам. Це професійний підхід до безпеки. А ви користуєтесь онлайн-декодерами чи довіряєте тільки собі?
👇