SameSite ограничивает автоматическую отправку в некоторых контекстах, а токен выбранной схемы проверяет сервер. Разные границы требуют согласованного применения.
Токен CSRF
Определение
Токен CSRF — секретное непредсказуемое значение, уникальное для сеанса: приложение выдаёт его своему интерфейсу и проверяет в каждом запросе, который меняет данные.
Также ищут: CSRF token · anti-CSRF token · synchronizer token · токен намерения запроса
Зачем это знать
Страница злоумышленника может вызвать запрос, но не должна знать правильное значение, связанное с сеансом жертвы или подписанным контекстом.
Карта понятия
Что подтверждено
Синхронизирующий токен должен быть уникальным для сеанса, секретным и непредсказуемым и проверяться сервером до изменения состояния.
Граница применимости: Схема токена CSRF с серверным состоянием.
Токен не передают в URL и не полагаются на обычную автоматически отправляемую cookie; вариант двойной отправки связывают с сеансом и подписывают.
Граница применимости: Передача и привязка токена CSRF.
В схеме с синхронизирующим токеном сервер связывает полученное значение с ожидаемым сеансом и проверяет его до изменения состояния. Отсутствие или несовпадение токена приводит к отклонению защищаемой операции.
Граница применимости: Рекомендация OWASP для выбранной схемы синхронизирующего токена; не предписывает эту схему каждому API.
Правильный токен CSRF подтверждает выполнение предусмотренной проверки контекста запроса, но не даёт право изменять любой объект. Сервер отдельно проверяет полномочия пользователя на выбранную операцию и объект.
Граница применимости: Разделение защиты от CSRF и авторизации приложения; токен также не доказывает осознанное действие человека.
Код, внедрённый в доверенный источник через XSS, может получить доступ к токену, доступному интерфейсу, и отправить запрос через браузер пользователя. Поэтому наличие токена не устраняет уязвимость XSS.
Граница применимости: Случай токена, доступного доверенному интерфейсу страницы; конкретные полномочия зависят от внедрённого контекста.
Не путать
Проверка токена рассчитана на недоверенный внешний источник. Исполнение кода внутри доверенного источника может разрушить это предположение.
Что проверить
- Укажите, какие операции защищает выбранная схема токена.
- Создавайте секретное непредсказуемое значение.
- Связывайте его с предусмотренным сеансом или подписанным контекстом.
- Проверяйте значение до изменения состояния.
- Не помещайте токен в URL и журналы.
- Отдельно проверяйте права на объект.
- Проверяйте отсутствие XSS в интерфейсе, который получает токен.
Первоисточники
- Guidelines for API Protection for Cloud-Native Systems
Задаёт API lifecycle controls для authentication, authorization, rate limits, resource limits, logging и monitoring.
Утверждения: 04
- Cross Site Scripting Prevention Cheat Sheet
Определяет context-specific output encoding и safe sinks; CSP и WAF рассматривает как дополнительные, а не основные XSS controls.
Утверждения: 05
- Cookies: HTTP State Management Mechanism (6265bis)
Рабочий документ HTTP WG, определяющий атрибут SameSite (Strict, Lax, None) и требование Secure для None. Это не RFC: класс основания ниже стандарта намеренно.