Помилки безпеки JWT і як їх уникнути

JWT є потужним для автентифікації API, але багато виробничих інцидентів виникають через помилки реалізації, а не через сам JWT. Якщо ваша програма використовує маркери доступу, маркери оновлення та заявки на роль, ваша безпека залежить від деталей.
1) Прийняття будь-якого алгоритму
Ніколи не довіряйте лише алгоритму, надісланому заголовком маркера. Ваш сервер має запровадити явний список дозволених (наприклад, лише RS256).
- Закріпити очікувані алгоритми на стороні сервера.
- Відхилити маркери з відсутніми або неочікуваними
alg. - Використовуйте зрілі, активно підтримувані бібліотеки JWT.
2) Довгострокові маркери доступу
Якщо маркер доступу витікає та залишається дійсним протягом кількох днів, зловмисник має забагато часу. Тримайте маркери доступу короткочасними та покладайтеся на потік оновлення.
- Маркер доступу: короткий TTL (5-15 хвилин).
- Оновити маркер: довший TTL + ротація + відкликання.
- Анулювати сеанси через підозрілу активність.
3) Витік токенів у URL-адресах і журналах
Ніколи не додавайте JWT до параметрів запиту. URL-адреси потрапляють у журнали, аналітику, історію веб-переглядача та реферери.
- Надіслати маркери в
Authorization: Bearer ...заголовок. - Очистити заголовки авторизації з журналів і трасування APM.
- Маскувати чутливі поля у звітах про помилки клієнта.
4) Слабка перевірка претензії
Перевірити iss, aud, exp, nbf та iat. Також перевірте бізнес-обмеження, як-от ідентифікатор клієнта та необхідні ролі.
- Відхилити прострочені або ще недійсні токени.
- Прив'язати очікувану аудиторію до служби.
- Не довіряйте претензіям на роль без перевірок на стороні сервера.
5) Немає стратегії ротації ключів
Витік ключів, закінчується термін дії сертифікатів і трапляються інциденти. Плануйте ротацію перед запуском виробництва.
- Використовуйте заголовки
kidта кінцеві точки JWKS. - Підтримка накладання клавіш під час обертання вікон.
- Моніторинг помилок перевірки підпису на наявність аномалій.
Перелік практичних загартовувань
- Застосування дозволеного списку строгого алгоритму.
- Використовуйте короткочасні маркери доступу.
- Обертання маркерів оновлення та підтримка відкликання.
- Безпечно зберігайте токени (надавайте перевагу файлам cookie лише http).
- Перевірте всі стандартні та критичні для бізнесу заявки.
- Запровадити ротацію ключів із моніторингом.
Пов'язані інструменти
- JWT Decoder — безпечно перевірте заголовок і корисне навантаження.
- Генератор хешів — перевірка відбитків повідомлень і файлів.
- Генератор паролів — створіть надійні секрети для облікових записів адміністратора та служби.