@asdasdqwe

Почему CORS не защищает отправку формы?

Чтобы убедиться, что post запрос идет именно с текущего сайта, придумали токены. Если токена в куки нет, значит форма отправлена с другого сайта.

Почему бы просто не запретить отправку формы, если два источника отличаются. Почему CORS защищает только ajax fetch?
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
CORS не препятствует выполнению запроса, за исключением тех случаев когда требуется preflight (например если вы хотите добавить заголовок запроса между сайтами), CORS не дает читать данные ответа. Этого вполне хватает чтобы защититься в случае немодицирующих запросов, но не хватает чтобы защититься в случае модицифирующих запросов, поэтому CORS сам по себе не заменяет CSRF защиту (но можно делать CSRF защиту основанную на CORS, например проверять наличие кастомного заголовка). Если у вас есть AJAX методы которые что-то меняют на сайте (например что-то удаляют) и вы разрешаете их делать через GET или POST request надеясь только на CORS - у вас уже есть уязвимость. Внешний сайт не сможет прочитать ответ, но выполнить запрос он может. Поэтому обычно дополнительно к CORS требуют кастомный заголовок или делают все модицифирующие методы через PUT (PUT и другие методы отличные от GET/POST кроссайтово могут быть сделаны только с префлайтом). Иногда вообще весь API делают через PUT, чтобы не думать о модицифирующих/немодифицирующих запросах и CSRF атаках.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы