Как работает атака CSRF (Cross-Site Request Forgery)
(продолжение предыдущего поста)
CSRF — это атака, при которой злоумышленник вынуждает жертву выполнить нежелательные действия в веб-приложении, где она уже аутентифицирована. Рассмотрим механизм атаки по этапам, согласно изображению:
1. Пользователь входит в систему и получает сессионный cookie/токен (шаг 1):
* пользователь заходит на легитимный сайт и проходит аутентификацию;
* сайт выдаёт пользователю сессионный cookie или токен, который подтверждает его авторизацию.
2. Злоумышленник создаёт вредоносный веб-сайт или код (шаг 2):
* атакующий разрабатывает специальную страницу или фрагмент кода, который имитирует легитимные запросы к сайту, где пользователь уже авторизован;
* цель — заставить браузер жертвы отправить запрос на целевой сайт от имени пользователя.
3. Пользователь взаимодействует с вредоносным контентом (шаг 3):
* жертва посещает вредоносный сайт или кликает на ссылку, содержащую вредоносный код (например, через фишинг, социальную инженерию);
* при этом пользователь остаётся авторизованным на целевом сайте (где хранится его cookie/токен).
4. Вредоносный код отправляет запрос с учётными данными пользователя (шаг 4):
* вредоносный код автоматически формирует HTTP-запрос (например, для перевода денег, изменения настроек аккаунта и т. д.) и отправляет его на целевой сайт;
* браузер жертвы передаёт вместе с запросом сессионный cookie/токен, так как считает запрос легитимным (пользователь уже авторизован).
5. Целевой сайт обрабатывает поддельный запрос (шаг 5):
* сайт не может отличить легитимный запрос от поддельного, так как видит валидный cookie/токен;
* сайт выполняет действие, заложенное в запросе (например, переводит деньги, меняет пароль и т. д.), думая, что это действие инициировал сам пользователь.
6. Злоумышленник получает несанкционированный доступ и манипулирует действиями учётной записи пользователя (шаг 6):
* атакующий достигает своей цели — выполняет нежелательные действия от имени жертвы (кража данных, финансовые махинации, распространение вредоносного контента и т. д.).
### Способы защиты от CSRF-атак:
* Использование Anti-CSRF токенов — уникальные токены добавляются в формы и запросы для проверки легитимности.
* Двойная отправка cookies (Double Submit Cookies) — сравнение cookies в HTTP-заголовке и теле запроса.
* Проверка заголовка Referer — сайт анализирует, откуда пришёл запрос, и отклоняет подозрительные.
* Ограничение cookies для одного сайта (SameSite cookies) — предотвращает отправку cookies на сторонние сайты.
* Ограничение методов запросов (Limit Request Methods) — разрешаются только безопасные HTTP-методы (например, GET), а опасные (POST, PUT) требуют дополнительной проверки.
* Усиленная аутентификация пользователя — дополнительные шаги подтверждения (например, двухфакторная аутентификация) для критических действий.
Post #3354
1.88K