Выбор ответа Senior Авторизация и безопасность API обновлено
Атака alg none
Вопрос
Тестировщик меняет в заголовке JWT "alg": "HS256" на "alg": "none", правит role на admin в payload и удаляет подпись. Сервер принял токен. Что это?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Критическая уязвимость: сервер обязан проверять подпись и алгоритм. Алгоритм none описан в стандарте JWT для случаев, когда целостность обеспечена иначе, но сервер API не должен его принимать.
Варианты ответа
- Критическая уязвимость: сервер обязан проверять подпись и алгоритмправильный ответ
- Нормальное поведение: алгоритм
noneразрешён стандартом JWT - Баг клиента: он сформировал токен без подписи, сервер тут ни при чём
- Ошибка кодировки Base64URL, из-за которой подпись не распарсилась
Разбор
Алгоритм none описан в стандарте JWT для случаев, когда целостность обеспечена иначе, но сервер API не должен его принимать. Правильная реализация жёстко задаёт список алгоритмов и отвергает токен без подписи. Похожие проверки: подпись другим ключом, изменённый payload со старой подписью, токен другого окружения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.