Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 285

CSRF-токен

ПроверилCybersecurity entrepreneur & security researcher

Что такое CSRF-токен?

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


CSRF-токен — каноническая защита от Cross-Site Request Forgery, атаки, занимавшей место A05 в OWASP Top 10 2013 и включённой в категорию «Broken Access Control» в более поздних редакциях. Сервер генерирует криптографически случайное значение, связывает его с сессией пользователя и встраивает в HTML-формы или предоставляет для пользовательского заголовка запроса. Поскольку политика единого источника (same-origin policy) не позволяет странице атакующего прочитать токен, поддельный межсайтовый запрос не может передать корректное значение и отклоняется.

Преобладают три схемы. Synchronizer token pattern хранит ожидаемое значение на стороне сервера — самая надёжная, но требует состояния. Double-submit cookies сравнивают cookie с совпадающим полем формы или заголовком, не нуждаясь в серверном состоянии, но уязвимы, если атакующий может записывать cookie через поддомен. Подписанный (HMAC) double-submit привязывает токен к сессии, закрывая этот пробел. Токены должны быть привязаны к сессии (или к запросу для чувствительных действий), достаточно длинными и сравниваться за константное время.

Важна эшелонированная защита: начиная с Chrome 80 (февраль 2020 года) непомеченные cookie по умолчанию получают SameSite=Lax, что блокирует большинство межсайтовых POST-запросов, но Lax всё ещё допускает GET-навигации верхнего уровня, и не каждый браузер его применяет — поэтому токены остаются необходимыми. Сочетайте их с проверкой Origin/Referer и строгим CORS. API с bearer-токенами, вызываемые только из JavaScript, не используют неявные cookie и, как правило, не нуждаются в CSRF-токене, но всё же требуют защиты от повторного воспроизведения и контроля авторизации.

flowchart TD
  A[Пользователь загружает форму] --> B[Сервер выдаёт CSRF-токен, привязанный к сессии]
  B --> C[Токен в скрытом поле или заголовке]
  C --> D[Пользователь отправляет изменяющий состояние запрос]
  D --> E{Токен совпадает со значением сессии?}
  E -- Да --> F[Обработать запрос]
  E -- Нет или отсутствует --> G[Отклонить 403 - поддельный запрос]
  H[Межсайтовая форма атакующего] -. не может прочитать токен .-> G

Примеры

  1. 01

    Скрытое поле <input type="hidden" name="csrf" value="a8f1..."> в форме.

  2. 02

    Заголовок X-CSRF-Token, проверяемый на сервере против секрета сессии.

Частые вопросы

Что такое CSRF-токен?

Непредсказуемое значение, привязанное к сессии и встраиваемое в формы или заголовки, чтобы сервер мог убедиться, что изменяющие состояние запросы исходят с его страниц. Относится к категории Идентификация и доступ в кибербезопасности.

Что означает CSRF-токен?

Непредсказуемое значение, привязанное к сессии и встраиваемое в формы или заголовки, чтобы сервер мог убедиться, что изменяющие состояние запросы исходят с его страниц.

Как защититься от CSRF-токен?

Защита от CSRF-токен обычно сочетает технические меры и операционные практики, как описано в определении выше.

Связанные термины