Что такое CSRF?
CSRF (cross-site request forgery) — это уязвимость веб-приложений, позволяющая злоумышленнику заставить жертву отправить вредоносный запрос к сайту, которому жертва доверяет. Например, если вы вошли на банковский сайт и открыли другую вкладку с поддельным сайтом, мошенник может попытаться заставить вас выполнить транзакцию или удалить аккаунт на доверенном сайте, используя сессионные куки жертвы.
Типичные сценарии атаки CSRF
- Удаление аккаунта или сброс пароля: Жертву заставляют подтвердить сброс пароля или удаление аккаунта через скрытые формы или гиперссылки.
- Перевод денег: Пользователь открывает легитимный сайт банка, после чего переходит на поддельный сайт, который незаметно инициирует платежную транзакцию на счету жертвы.
- Изменение конфиденциальных данных: Незаметные манипуляции с формами или кнопками могут привести к изменению персональных данных или контактной информации.
Как защитить своё приложение от CSRF?
Существует ряд эффективных мер против атак CSRF:
- CSRF-токены: Генерируйте уникальные одноразовые токены для каждой сессии пользователя и проверяйте их на сервере при каждом запросе. Токены защищают от попыток злоумышленников отправить фальшивые запросы.
- Проверка
RefererиOriginзаголовков: Веб-приложение может проверять, откуда пришел запрос, сравнивая значения заголовков Referer и Origin. Хотя это не абсолютная гарантия, это хороший дополнительный барьер. - Использование SameSite cookie policy: Современные браузеры поддерживают атрибут
SameSiteдля cookies, который предотвращает отправку куков при междоменных запросах. Это хорошая практика для дополнительной защиты. - Limitation of cross-domain access via CORS: Политика Cross-Origin Resource Sharing (CORS) позволяет контролировать, какие внешние домены могут совершать запросы к вашему ресурсу.
- Исключение GET-запросов от чувствительных операций: Все операции, изменяющие состояние (DELETE, PUT, PATCH, POST), должны требовать подтверждения посредством POST-запросов с CSRF-токеном.
Дальнейшие действия
- Проверьте логи, чтобы узнать, какое именно действие вызвало предупреждение о CSRF. Обычно подобные события регистрируются с IP-адресом и информацией о запросе.
- Повысьте уровень безопасности, внедряя CSRF-токены для всех критических операций.
- Настройте правильную политику безопасности заголовков (CSP, HSTS, Strict Transport Security) для дополнительного уровня защиты.
Помните, что атаки CSRF крайне распространены, и внедрение защитных мер повысит устойчивость вашего приложения к подобным угрозам.