Определение простыми словами
CSRF — это вид интернет-атаки, когда пользователь, будучи авторизованным на сайте, невольно выполняет команды, которые подставляет злоумышленник. Например, атакующий может заставить жертву отправить запрос на смену пароля или перевод средств, используя её авторизацию без ведома самого пользователя.
Это возможно за счёт того, что браузер автоматически передаёт авторизационные данные (куки, токены), если запрос адресован доверенному сайту. Защита от CSRF требует дополнительной проверки и подтверждения подлинности каждого действия.
Сравнение
| Характеристика | CSRF | XSS |
|---|---|---|
| Цель | Выполнение нежелательных действий от имени пользователя | Внедрение вредоносного скрипта на сайте |
| Механизм | Использует доверие к браузеру и сессии | Использует доверие к содержимому сайта |
| Виды атак | Изменение данных, перевод денег, смена пароля | Кража сессий, фишинг, подмена контента |
Кейсы использования
- Защита пользовател��й от поддельных запросов на изменение пароля.
- Защита платежных форм от несанкционированных операций.
- Обеспечение безопасности форм комментариев и отзывов.
- Аутентификация и валидация CSRF-токенов в веб-приложениях.
- Негативный пример: отсутствие проверки CSRF позволяет атакующим украсть деньги с аккаунтов.
Технические детали
Защита от CSRF реализуется с помощью:
- CSRF-токенов — уникальных значений, которые генерируются сервером для каждой сессии и проверяются при выполнении запроса.
- HTTP-заголовка
Referer, который проверяет источник запроса. - Использования CORS и политик безопасности контента.
# Пример проверки CSRF-токена на PHP
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die('Неверный CSRF токен');
}
// Далее выполнение доверенного действия
Подробнее о CSRF в нашей статье, методы защиты представлены в разделе о firewall, а сравнение с другими атаками доступно в XSS.
🔥 Где это применяется
Частые вопросы
Что такое CSRF?
CSRF – это атака, когда злоумышленник заставляет пользователя выполнять нежелательные действия на сайте, где он авторизован.
Как защититься от CSRF?
Защита основывается на использовании CSRF-токенов, проверке заголовков и политик безопасности, чтобы подтверждать легитимность запросов.
Можно ли предотвратить CSRF только с помощью cookies?
Нет, cookies сами по себе не защищают; важно использовать CSRF-токены и другие механизмы проверки для безопасности.