Что такое CSRF и как от него защищаются?
Атаки на клиент
CSRF (Cross-Site Request Forgery) — атака, при которой чужой сайт заставляет браузер пользователя отправить запрос на ваш сайт, пользуясь тем, что браузер сам прикладывает cookie авторизации.
Как это выглядит
Пользователь залогинен на bank.com. Он открывает вредоносную страницу, на которой скрытая форма отправляет POST /transfer на bank.com. Браузер добавляет сессионную cookie, и сервер считает запрос легитимным.
Защита
- SameSite cookie:
LaxилиStrictне отправляют cookie с межсайтовых запросов (кроме безопасной навигации уLax). - CSRF-токен: сервер выдаёт случайное значение, клиент присылает его в заголовке; чужой сайт его прочитать не может.
- Проверка `Origin` и `Referer` на сервере.
- Не менять состояние через
GET. - Для API с токеном в заголовке
AuthorizationCSRF не применим, так как заголовок браузер сам не добавляет.
Set-Cookie: sid=abc; HttpOnly; Secure; SameSite=Lax
X-CSRF-Token: 8f3a... <- проверяется серверомКоротко для собеседования
CSRF использует автоматическую отправку cookie. Лечится SameSite, CSRF-токеном и проверкой Origin.