Як безпечно декодувати JWT і перевірити його автентичність
Веб-токени JSON (JWT) використовуються скрізь — для автентифікації, запитів API та безпечного обміну даними, але багато розробників сприймають їх як непрозорі чорні ящики. Декодування JWT просте, але довіряти йому без перевірки є ризиком для безпеки. У цьому посібнику показано, як безпечно перевіряти токени та зрозуміти, з чим ви насправді працюєте.
Що таке JWT?
JWT — це три розділи в кодуванні base64, розділені крапками: header.payload.signature. Заголовок описує тип маркера та алгоритм, корисне навантаження містить претензії (дані користувача), а підпис доводить, що маркер не було змінено. Після декодування корисне навантаження читається людиною, але це не означає, що воно заслуговує довіри — будь-хто може підробити або змінити дані всередині.
Чому одного лише декодування недостатньо
Зловмисники можуть створити дійсний JWT і змінити претензії всередині. Маркер, який декодує дійсний JSON, може надати хибні дозволи або видати себе за іншого користувача. Критичним кроком є перевірка підпису на секретний ключ сервера — без такої перевірки розкодований маркер повідомляє вам, що маркер стверджує, а не те, що насправді правда.
Як декодувати JWT
Використовуйте Декодер JWT перевірити будь-який жетон. Вставте маркер, і ви одразу побачите розділені заголовок, корисне навантаження та підпис. Корисне навантаження зазвичай закодовано за допомогою base64url, і Base64 інструмент може допомогти вам декодувати додаткові дані, якщо це необхідно. Ця візуальна розбивка дає зрозуміти, яку інформацію містить маркер і чи має він сенс для використання за призначенням.
Перевірка підпису
Після декодування вам потрібно перевірити справжність токена. Для цього потрібен секретний або відкритий ключ сервера (для асиметричних алгоритмів). Ви можете вручну перевірити підпис, перерахувавши його — візьміть заголовок і корисне навантаження, підпишіть їх тим самим алгоритмом і ключем і порівняйте результат із signature розділ. А генератор хешів може допомогти вам зрозуміти, як створюються криптографічні підписи, хоча більшість перевірок відбувається на стороні сервера в реальних програмах.
Конфіденційність і безпека
Коли ви декодуєте JWT у Декодер JWT, весь процес відбувається у вашому браузері. Ваш маркер ніколи не покидає ваш пристрій, ніколи не потрапляє на сервер і ніколи ніде не реєструється. Інструмент працює в автономному режимі після завантаження сторінки, тому ви можете безпечно перевіряти конфіденційні маркери без доступу до мережі. Це важливо, оскільки JWT часто містять ідентифікатори користувачів, дозволи або інші дані, які ви не бажаєте передавати третім сторонам.
Поширені помилки, яких слід уникати
- Довіра розшифрованому корисному навантаженню без перевірки підпису.
- Зберігання JWT у localStorage без HTTPS (вразливий до XSS).
- Забуваючи, що корисне навантаження закодовано лише на основі base64, а не зашифровано.
- Припустимо, що маркер дійсний лише тому, що він чітко декодується.