Что такое CSRF уязвимость
1️⃣ Как кратко ответить
CSRF (Cross-Site Request Forgery) — это уязвимость, при которой злоумышленник может заставить пользователя выполнить нежелательные действия на сайте, на котором он аутентифицирован, без его ведома. Это достигается путем отправки поддельного запроса от имени пользователя.
2️⃣ Подробное объяснение темы
CSRF, или Cross-Site Request Forgery, представляет собой тип уязвимости, который позволяет злоумышленнику заставить пользователя выполнить нежелательные действия на веб-сайте, на котором он уже аутентифицирован. Это может привести к изменению данных, выполнению транзакций или другим действиям, которые пользователь не намеревался выполнять.
Как работает CSRF
Представьте, что пользователь вошел в свой банковский аккаунт и оставил вкладку браузера открытой. В это время он посещает другой сайт, который контролируется злоумышленником. Этот сайт может содержать скрытую форму или скрипт, который автоматически отправляет запрос на банковский сайт от имени пользователя. Поскольку пользователь уже аутентифицирован, запрос будет выполнен с его правами.
Пример CSRF-атаки
Рассмотрим пример, где злоумышленник пытается перевести деньги с банковского счета пользователя:
-
Форма на сайте злоумышленника:
<form action="https://bank.com/transfer" method="POST"> <input type="hidden" name="amount" value="1000"> <input type="hidden" name="to_account" value="attacker_account"> <input type="submit" value="Transfer"> </form>action="https://bank.com/transfer": URL, на который будет отправлен запрос. Это URL банковского сайта, где выполняется перевод.method="POST": Метод отправки данных. В данном случае используется POST для передачи данных.input type="hidden": Скрытые поля формы, которые содержат данные о сумме перевода и счете получателя.input type="submit": Кнопка отправки формы, которая может быть скрыта или автоматически активирована с помощью JavaScript.
-
Автоматическая отправка формы:
Злоумышленник может использовать JavaScript для автоматической отправки формы, как только пользователь зайдет на страницу:
<script> document.forms[0].submit(); </script>document.forms[0]: Обращение к первой форме на странице.submit(): Метод, который отправляет форму.
Защита от CSRF
Чтобы защититься от CSRF-атак, разработчики могут использовать несколько методов:
-
CSRF-токены: Генерировать уникальный токен для каждой сессии пользователя и проверять его при каждом запросе. Если токен отсутствует или неверен, запрос отклоняется.
// Пример генерации CSRF-токена на сервере const csrfToken = generateCsrfToken(); // Функция для генерации токена -
Проверка реферера: Проверять заголовок
RefererилиOriginв запросах, чтобы убедиться, что они исходят с доверенного домена. -
SameSite Cookies: Использовать атрибут
SameSiteдля cookies, чтобы ограничить их отправку только с запросами, исходящими с того же сайта.
Применение в реальной жизни
CSRF-атаки могут быть использованы для выполнения различных действий, таких как изменение паролей, отправка сообщений, выполнение транзакций и т.д. Понимание и защита от CSRF-уязвимостей критически важны для обеспечения безопасности веб-приложений и защиты данных пользователей.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться