Ответ вслух Middle Криптография на практике и JWT спрашивают часто обновлено

Типичные уязвимости JWT

Вопрос

Какие уязвимости встречаются при работе с JWT и как их предотвратить?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Классика: сервер принимает alg: none или берёт алгоритм из заголовка, и тогда при RS256 можно подписать токен публичным ключом как HMAC-секретом. Лечится явным списком алгоритмов и ключей.

Что должно прозвучать в ответе

  • alg none и путаница алгоритмов: фиксировать алгоритм и тип ключа

  • Слабый секрет HS256 перебирается офлайн: длинный случайный секрет или асимметричные ключи

  • Нет проверки exp, aud, iss

  • kid, jku из заголовка: ключи только из своего набора

  • Payload не зашифрован; отзыв через короткий срок и ротацию refresh

  • Хранение на клиенте: компромисс XSS и CSRF

Что могут спросить следом

  • Как реализовать выход из всех устройств с JWT?
  • Когда лучше серверная сессия, а не JWT?

Разбор

Образцовый ответ: «Классика: сервер принимает alg: none или берёт алгоритм из заголовка, и тогда при RS256 можно подписать токен публичным ключом как HMAC-секретом. Лечится явным списком алгоритмов и ключей. Второе: слабый секрет HS256, его перебирают по любому токену офлайн, нужен длинный случайный секрет. Третье: не проверяют exp, aud, iss и принимают токен от соседнего сервиса. Четвёртое: заголовки kid и jku, которые подсовывают путь или URL ключа. Плюс помнить, что payload читается всеми, и JWT нельзя отозвать: access живёт минуты, refresh ротируется и хранится на сервере, тогда выход везде это отзыв refresh. Если сервис один и монолит, часто проще серверная сессия».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.