К списку
Безопасность и авторизацияSeniorТехническое

Методы тестирования защиты CSRF в cookie-аутентификации с double submit token

Краткий ответ

Проверяйте, что запросы без корректного CSRF-токена отклоняются, контролируйте настройки SameSite для cookies и валидируйте заголовок Origin для предотвращения подделки.

Развёрнуто

Краткий ответ

Для эффективного тестирования защиты от CSRF при cookie-based аутентификации с double submit token необходимо убедиться, что сервер отвергает запросы без валидного CSRF-токена, проверить настройки политики SameSite для cookies и убедиться в правильной проверке заголовка Origin.


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

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

Для защиты применяется метод double submit token: клиент отправляет CSRF-токен в cookie и в теле запроса или заголовке, сервер проверяет совпадение этих значений.

Кроме того, политика SameSite у cookies ограничивает передачу cookie в кросс-доменных запросах, снижая риск CSRF. Проверка заголовка Origin или Referer на стороне сервера помогает убедиться, что запросы приходят с доверенного источника.

Механизм защиты Как используется Важный аспект
Double Submit Token Токен в cookie и параметре запроса Токены должны совпадать
Политика SameSite Cookies с SameSite=Strict или Lax Ограничивает отправку кросс-сайтовых cookies
Проверка Origin Сравнение заголовка Origin с доверенным Предотвращает подделку источника

Пример

// Пример проверки CSRF-токена на сервере (псевдокод)
if (request.cookie.csrf_token == request.body.csrf_token &&
    request.headers.Origin == trusted_origin) {
    // Запрос принят
} else {
    // Запрос отклонён с ошибкой CSRF
}

В тестировании нужно отправить запросы без CSRF-токена или с некорректным Origin и убедиться, что сервер их отклоняет.

Что важно знать на собеседовании

  • Отличие double submit token от других CSRF-защит (например, synchronizer token pattern).
  • Роль политики SameSite в защите cookie.
  • Почему проверка заголовка Origin безопаснее, чем Referer.
  • Как проверить отсутствие CSRF-защиты с помощью инструментов для тестирования (например, Postman, Burp Suite).
  • Влияние cookie domain и path на уязвимость к CSRF.

Тема: Безопасность и авторизация | Уровень: senior