Межсайтовая подделка запроса (CSRF)
Определение
Межсайтовая подделка запроса (CSRF) — атака, при которой чужая страница заставляет браузер пользователя отправить приложению нежелательный запрос, меняющий состояние. Браузер сам прикладывает к нему cookie сеанса, поэтому читать ответ злоумышленнику не нужно.
Также ищут: Cross-site request forgery · CSRF · session riding
Зачем это знать
Злоумышленнику необязательно читать ответ: достаточно, чтобы сервер принял запрос вместе с автоматически приложенными данными сеанса.
Карта понятия
Что подтверждено
CSRF использует то, что браузер автоматически добавляет cookie сеанса или другие учётные данные к подходящему запросу.
Граница применимости: Веб-приложение с проверкой по cookie.
SameSite, проверка Origin и поведение CORS полезны как дополнительные уровни, но запрос на изменение всё равно требует серверной защиты от CSRF и проверки прав.
Граница применимости: Многоуровневая защита от CSRF.
Что проверить
- Не меняйте состояние через GET.
- Проверяйте токен CSRF.
- Добавьте SameSite и проверку Origin.
Первоисточники
- Cross-Site Request Forgery Prevention Cheat Sheet
Разводит CSRF tokens, SameSite и origin checks и задаёт свойства synchronizer и signed double-submit tokens.
Утверждения: 01
- Cross-Site Request Forgery Prevention Cheat Sheet
Разводит CSRF tokens, SameSite и origin checks и задаёт свойства synchronizer и signed double-submit tokens.
Утверждения: 02
- Cookies: HTTP State Management Mechanism
Базовый стандарт Cookie и Set-Cookie: синтаксис, атрибуты Secure, HttpOnly, Path, Domain. SameSite в нём НЕТ — он появился в 6265bis, см. ietf-6265bis-cookies.
Утверждения: 02
- Fetch Standard
Определяет CORS protocol, credentials modes, allowed origins и CORS-preflight fetch через OPTIONS.
Утверждения: 02
- Cookies: HTTP State Management Mechanism (6265bis)
Рабочий документ HTTP WG, определяющий атрибут SameSite (Strict, Lax, None) и требование Secure для None. Это не RFC: класс основания ниже стандарта намеренно.
Утверждения: 02
- The Web Origin Concept
Определяет origin как scheme, host и port и описывает origin-based browser isolation model.