← Назад ко всем вопросам

Что такое CSRF и когда он актуален (cookie-based auth)? Как тестировать CSRF-защиту?

1️⃣ Как кратко ответить

CSRF (Cross-Site Request Forgery) — это уязвимость, при которой злоумышленник может заставить пользователя выполнить нежелательные действия на сайте, на котором он аутентифицирован, без его ведома. Актуальна при использовании cookie-based аутентификации, так как браузеры автоматически отправляют cookies с каждым запросом. Для тестирования CSRF-защиты проверяют наличие и корректность использования CSRF-токенов в формах и запросах, а также их валидацию на сервере.

2️⃣ Подробное объяснение темы

CSRF (Cross-Site Request Forgery) — это тип атаки, при которой злоумышленник обманом заставляет пользователя выполнить нежелательные действия на сайте, на котором он уже аутентифицирован. Это возможно, потому что браузеры автоматически отправляют cookies, связанные с доменом, с каждым запросом, что позволяет злоумышленнику использовать сессию пользователя для выполнения действий от его имени.

Как работает CSRF

Представьте, что пользователь вошел в свой банковский аккаунт и у него открыта сессия. Злоумышленник может создать вредоносный сайт, который отправляет запросы на банковский сайт от имени пользователя. Например, если пользователь перейдет на сайт злоумышленника, тот может отправить скрытый запрос на перевод денег, используя cookies пользователя, которые автоматически прикрепляются к запросу.

Когда CSRF актуален

CSRF особенно актуален в системах, использующих cookie-based аутентификацию, так как cookies автоматически отправляются браузером с каждым запросом к серверу. Это делает возможным выполнение действий от имени пользователя без его ведома, если не предприняты специальные меры защиты.

Как тестировать CSRF-защиту

  1. Проверка наличия CSRF-токенов: Убедитесь, что все формы и критически важные запросы содержат CSRF-токены. Это уникальные значения, которые генерируются сервером и должны быть отправлены вместе с запросом. Они предотвращают выполнение запросов с другого сайта, так как злоумышленник не может предугадать или получить этот токен.

  2. Проверка валидации CSRF-токенов на сервере: Убедитесь, что сервер проверяет CSRF-токены на корректность и соответствие сессии пользователя. Если токен отсутствует или неверен, сервер должен отклонить запрос.

  3. Тестирование с использованием инструментов: Используйте инструменты, такие как OWASP ZAP или Burp Suite, для автоматического сканирования и выявления уязвимостей CSRF. Эти инструменты могут помочь в обнаружении форм и запросов, которые не защищены CSRF-токенами.

  4. Проверка на повторное использование токенов: Убедитесь, что CSRF-токены одноразовые или имеют ограниченный срок действия. Это предотвращает возможность повторного использования токена злоумышленником.

Пример кода

Пример использования CSRF-токена в HTML-форме:

<form action="/transfer" method="post">
    <input type="hidden" name="csrf_token" value="unique_token_value">
    <input type="text" name="amount" placeholder="Amount">
    <input type="text" name="recipient" placeholder="Recipient">
    <input type="submit" value="Transfer">
</form>
  • <input type="hidden" name="csrf_token" value="unique_token_value">: Скрытое поле, содержащее CSRF-токен. Этот токен должен быть уникальным для каждой сессии и запроса.
  • Сервер должен проверить csrf_token на соответствие ожидаемому значению для текущей сессии пользователя. Если токен не совпадает, запрос должен быть отклонен.

CSRF-защита необходима для предотвращения несанкционированных действий от имени пользователя и является важной частью обеспечения безопасности веб-приложений.

Тема: Безопасность и авторизация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки