Защищает ли CORS от CSRF
Вопрос
Бэкенд не отдаёт заголовков CORS, сессия в куке с SameSite=None; Secure. Защищён ли он от CSRF через автоотправку HTML-формы с чужого сайта?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Да: без CORS-заголовков браузер вообще не отправит запрос на другой origin
- Да, но только для методов PUT и DELETE: их форма с чужого сайта не отправит
- Нет: CORS запрещает читать ответ, а POST формы уйдёт с кукой и выполнитсяправильный ответ
- Нет, потому что CORS работает только для GET, а POST формы он не проверяет
Разбор
Same-origin policy и CORS регулируют, может ли скрипт прочитать ответ. Простые запросы (форма с POST) браузер отправляет на любой origin, а кука с SameSite=None к ним приложится, и сервер выполнит действие. Нужны SameSite Lax или Strict, CSRF-токен или проверка Origin. Запрос без CORS как раз уходит. PUT и DELETE из формы отправить нельзя, а fetch с ними вызовет preflight, но это не защищает POST. CORS касается всех методов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Безопасность фронтенда»
- Защита на уровне заголовков
- XSS и как от него защищаться
- CSP
- CSRF
- Site и origin
- XSS
- Найди XSS в коде
- Что даёт HttpOnly