PassFront
  1. PassFront
  2. База знаний
  3. Атаки на клиент

Что такое 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 с токеном в заголовке Authorization CSRF не применим, так как заголовок браузер сам не добавляет.
Set-Cookie: sid=abc; HttpOnly; Secure; SameSite=Lax
X-CSRF-Token: 8f3a...   <- проверяется сервером

Коротко для собеседования

CSRF использует автоматическую отправку cookie. Лечится SameSite, CSRF-токеном и проверкой Origin.

Другие вопросы раздела