Выбор ответа Senior Аутентификация и права обновлено
Подмена алгоритма JWT
Вопрос
Почему при проверке JWT нужно явно передавать список разрешённых алгоритмов (algorithms=["RS256"])?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Иначе подпишут другим алгоритмом (HS256 с публичным ключом или none) и пройдут. Заголовок токена контролирует атакующий.
Варианты ответа
- Без списка библиотека перебирает все алгоритмы по очереди, и проверка заметно медленнее
- Иначе подпишут другим алгоритмом (HS256 с публичным ключом или
none) и пройдутправильный ответ - Список нужен только для шифрования payload, на проверку подписи он не влияет
- Это требуется только для токенов без
exp, у остальных алгоритм берётся из заголовка
Разбор
Заголовок токена контролирует атакующий. Если библиотека берёт алгоритм из заголовка, токен с alg: none или с HS256, подписанный общедоступным публичным ключом RSA как HMAC-секретом, может пройти проверку. Современные библиотеки требуют параметр algorithms, и его нужно задавать жёстко по типу ключа. Скорость и шифрование тут ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.