Выбор ответа Middle CORS обновлено

CORS и CSRF

Вопрос

Чужой сайт содержит HTML-форму, которая отправляет POST на https://bank.ru/transfer с полями application/x-www-form-urlencoded. У банка CORS не настроен. Что верно?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Запрос уйдёт, и с кукой сессии перевод может пройти: защищают SameSite и CSRF-токены. Отправка формы это простой запрос, preflight для него нет, и SOP не мешает отправить, а мешает только прочитать ответ.

Варианты ответа

  1. Запрос не уйдёт: без настроенного CORS браузер блокирует любые кросс-доменные POST формы
  2. Перед отправкой будет preflight OPTIONS, банк не ответит на него, и перевод не выполнится
  3. Запрос уйдёт, и с кукой сессии перевод может пройти: защищают SameSite и CSRF-токеныправильный ответ
  4. Запрос уйдёт, но браузер не приложит куки к кросс-доменной форме, поэтому опасности нет

Разбор

Отправка формы это простой запрос, preflight для него нет, и SOP не мешает отправить, а мешает только прочитать ответ. Атакующему ответ не нужен, ему нужен побочный эффект. Поэтому от CSRF защищают SameSite-куки и CSRF-токены. Утверждение «уйдёт без кук» неверно в общем случае: кука с SameSite=None приложится, а у Lax есть исключение для навигации верхнего уровня методом GET.

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

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

Термины по теме