Бета · редакция 2026.10-beta1 · MCP 2026-07-28
Issuer mix up и опасные URL
L28 · MCP 2026-07-28 · открытая бета · редакция 2026.10-beta1
Я не обмениваю code на токен, пока не уверен, к какой авторизации относится callback. При нескольких AS ошибка корреляции становится mix-up атакой. Проверка issuer и попытки должна происходить до отправки кода на token endpoint.
Как я это использую
Сохраняйте выбранный AS и безопасный контекст авторизации. Сверяйте issuer по точным правилам, state и redirect URI. Отдельно защищайте discovery fetch от SSRF, DNS rebinding и неожиданных redirects. Разрешённый hostname нельзя проверять подстрокой: auth.example.attacker.test — другой origin.
Разбираем конкретный контракт
Это учебный fixture: поля с доменом .example и идентификаторы вымышлены. Если показан фрагмент, его нужно поместить в соответствующий envelope выбранного профиля.
{
"expectedIssuer": "https://auth.example",
"receivedIssuer": "https://auth.example.attacker.test",
"decision": "reject before token exchange"
}
Лаборатория · L28
Измените условия, проверьте результат и разберите ошибку. Все адреса и данные учебные.
Что легко сломать
Учебный инжектор показывает подмену issuer и URL с похожим именем. Ваше решение должно отклонить их до обмена кода. Текст ошибки полезен пользователю, но code, token и verifier в лог попадать не должны.
Практика и самопроверка
Подменить issuer, redirect или metadata URL в сохранённой трассе. Успех: проверка останавливает поток до раскрытия кода.
Я советую сначала предсказать результат, затем изменить один параметр в лаборатории и объяснить разницу. Сохраните небольшой fixture с нормальным и ошибочным случаем для своего проекта. Тренажёр открыт без регистрации; для сохранения ответов на тесты и завершения урока войдите в аккаунт.
В конце страницы — три вопроса. После правильных ответов можно завершить урок; ошибка в следующей тренировке не стирает уже полученное подтверждение этой редакции теста.
На что я опирался
Профиль и ссылки проверены 15 октября 2026. Core, deprecated compatibility и extensions в этом курсе помечены отдельно. Примеры объясняют выбранные сценарии; для реализации сверяйте нормативные MUST/SHOULD и schema соответствующей версии.
Проверка знаний
Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.