CSRF: межсайтовая подделка запроса
Проверено экспертной редакцией SecRadar · по первоисточникам ФСТЭК / ФСБ / Банка России
CSRF (Cross-Site Request Forgery, межсайтовая подделка запроса) — атака, при которой браузер жертвы отправляет на сайт нежелательный запрос от её имени, пока она авторизована на этом сайте. В отличие от XSS, атакующий не выполняет свой код в браузере жертвы — он использует то, что браузер сам прикладывает к запросу куки сессии. Материал разбирает механику атаки, условия её успеха и способы защиты — от CSRF-токенов до атрибута SameSite.
Кратко
- CSRF
- Атака заставляет браузер жертвы выполнить запрос на сайт, где жертва авторизована, без её ведома — используя то, что браузер сам прикладывает куки сессии к запросу.
- Отличие от XSS
- CSRF не даёт атакующему выполнить код или прочитать ответ сайта, он только подделывает запрос «вслепую»; XSS выполняет произвольный код прямо в браузере жертвы.
- Условие успеха
- Жертва авторизована на целевом сайте через cookie-сессию, а сайт не проверяет происхождение запроса и не требует токен, уникальный для конкретной формы.
- Основная защита
- CSRF-токен, который сервер выдаёт и проверяет при каждом изменяющем запросе, плюс атрибут SameSite у cookie, ограничивающий её отправку при межсайтовых переходах.
- Место в OWASP
- Отдельной категорией в OWASP Top 10:2021 и в действующей редакции OWASP Top 10:2025 (январь 2026) не значится — исключена при обновлении 2017 года на фоне встроенной защиты в веб-фреймворках.
Что такое CSRF
CSRF (Cross-Site Request Forgery, межсайтовая подделка запроса) — атака, при которой браузер жертвы выполняет нежелательное действие на сайте, где жертва уже авторизована, не потому что жертва сама на это согласилась, а потому что сторонняя страница или ссылка незаметно инициировала запрос от её имени. Сайт-жертва видит обычный запрос от залогиненного пользователя — с валидными куки сессии — и выполняет его, не зная, что инициатором был не сам пользователь, а чужая страница.
CSRF часто путают с XSS (межсайтовым скриптингом), потому что обе атаки эксплуатируют веб-приложение через браузер жертвы, но механика разная. XSS внедряет вредоносный JavaScript-код в саму страницу и выполняет его в браузере жертвы — с доступом к содержимому страницы, куки и вводимым данным. CSRF ничего не внедряет в атакуемый сайт и не выполняет там свой код — он заставляет браузер жертвы отправить запрос, ответ которого атакующий даже не видит; отсюда и «вслепую» в описании атаки.
Таблица ниже сводит основные различия по пяти признакам.
↔ таблицу можно прокрутить вбок
| Признак | CSRF | XSS |
|---|---|---|
| Что эксплуатирует | доверие сайта к браузеру пользователя | доверие пользователя к сайту |
| Выполнение стороннего кода в браузере | нет | да |
| Читает ли злоумышленник ответ сервера | нет («вслепую») | да |
| Нужна ли активная сессия жертвы | да | не обязательно |
| Главная защита | анти-CSRF-токен + SameSite-cookie | экранирование вывода + CSP |
Как работает CSRF
Механика CSRF строится на том, что браузер автоматически прикладывает cookie сессии к любому запросу на сайт, для которого эта cookie выставлена — независимо от того, с какой страницы запрос был инициирован. Атакующему не нужно красть эту cookie, ему достаточно заставить браузер жертвы отправить запрос, а куки браузер приложит сам.
Типичный сценарий: жертва авторизована в банковском или другом веб-приложении с cookie-сессией, затем открывает стороннюю страницу — например, по ссылке из письма. На этой странице размещён код, который автоматически инициирует запрос к атакуемому сайту: скрытая форма, автоматически отправляющая себя при загрузке страницы, или тег <img src="...">, указывающий на URL с параметрами изменяющего действия, если это действие выполняется GET-запросом.
Браузер жертвы отправляет запрос вместе с валидными куки сессии — сайт обрабатывает его как легитимный.
Классические цели такой атаки — действия, которые меняют состояние аккаунта или данные: перевод денег со счёта, смена пароля или email, привязанного к аккаунту, изменение адреса доставки, добавление нового получателя платежа. Атакующий не видит результат и не может прочитать ответ сервера — но само выполнение действия от имени жертвы уже даёт результат: деньги переведены, email заменён на контролируемый атакующим, дальнейшее восстановление доступа переходит к нему.
Защита от CSRF
Основная защита от CSRF находится на стороне приложения и браузера одновременно — сервер проверяет уникальное значение при каждом изменяющем запросе, а браузер по умолчанию ограничивает отправку cookie при межсайтовых переходах. Средства сетевой защиты дополняют это, но не заменяют.
CSRF-токен
Сервер генерирует уникальное значение для сессии или формы и встраивает его как скрытое поле. При отправке формы сервер сверяет присланный токен с выданным — у атакующего на стороннем сайте нет доступа к этому значению, поэтому подделанный запрос не проходит проверку.
Атрибут SameSite
Cookie с атрибутом SameSite=Strict или Lax браузер не отправляет (или отправляет ограниченно) при запросе, инициированном со стороннего сайта. Браузеры на движке Chromium (Chrome, Edge, Opera) применяют SameSite=Lax по умолчанию с версии Chrome 80 (февраль 2020), даже если атрибут не указан явно; Firefox и Safari по умолчанию так не делают.
Проверка Referer/Origin
Сервер сверяет заголовок Referer или Origin входящего запроса с ожидаемым доменом — запрос со стороннего источника отклоняется. Работает как дополнительный барьер, поскольку эти заголовки в отдельных сценариях можно не отправить или подделать.
Повторная аутентификация
Перевод денег, смена пароля или email — операции, для которых отдельно запрашивают текущий пароль, код подтверждения или другой фактор, даже если пользователь уже авторизован в системе.
Web Application Firewall дополняет эти меры на уровне сетевого трафика: класс WAF может отслеживать аномальные запросы без ожидаемых заголовков или токенов, но не заменяет проверку CSRF-токена в коде приложения — это по-прежнему основной рубеж. Для веб-приложений, где изменяющие действия выполняются через API, та же логика проверки происхождения запроса и токена переносится на уровень API-эндпоинтов — эту область закрывает класс API Security.
Место CSRF в OWASP Top 10
В актуальной версии OWASP Top 10 CSRF не выделен отдельной категорией — он входил в список как отдельный риск A8 в редакции OWASP Top 10 2013 года, но был исключён при обновлении 2017 года. Причина — рост числа веб-фреймворков, которые встраивают защиту от CSRF по умолчанию, из-за чего доля уязвимых приложений в собранных для рейтинга данных заметно снизилась.
Это не означает, что атака полностью исчезла: риск остаётся там, где разработчик отключил встроенную защиту фреймворка, не выставил атрибут SameSite явно или использует нестандартную схему аутентификации, не покрытую защитой фреймворка по умолчанию. Полный разбор актуальных категорий риска — на профильной странице словаря OWASP Top 10, где также описано, как рейтинг применяют для приоритизации задач в проекте безопасной разработки.
Частые вопросы
Что такое CSRF простыми словами?
Чем CSRF отличается от XSS?
Как защититься от CSRF?
Что такое CSRF-токен?
Опасен ли CSRF сейчас?
Может ли SameSite cookie полностью заменить CSRF-токен?
Словарь терминов ИБ на SecRadar
CSRF и другие атаки на приложения — независимые разборы без привязки к вендору, с прямыми ссылками на классы СЗИ, которые закрывают конкретную угрозу.