CSRF-токен
Что такое CSRF-токен?
CSRF-токенНепредсказуемое значение, привязанное к сессии и встраиваемое в формы или заголовки, чтобы сервер мог убедиться, что изменяющие состояние запросы исходят с его страниц.
CSRF-токен — стандартная защита от Cross-Site Request Forgery. Сервер генерирует случайное значение, связывает его с сессией пользователя и встраивает в HTML-формы или отправляет в пользовательском заголовке. На каждом запросе, меняющем состояние, сервер сравнивает присланный токен с ожидаемым и отклоняет несовпадения. Варианты: synchronizer token (состояние на сервере), double-submit cookies (без состояния), HMAC по OWASP. Современные приложения сочетают CSRF-токены с SameSite=Lax или Strict cookies, кастомными заголовками, проверкой Origin/Referer и строгим CORS. API, вызываемые только из JS с bearer-токенами, не требуют CSRF-токенов, но нуждаются в защите от replay.
● Примеры
- 01
Скрытое поле <input type="hidden" name="csrf" value="a8f1..."> в форме.
- 02
Заголовок X-CSRF-Token, проверяемый на сервере против секрета сессии.
● Частые вопросы
Что такое CSRF-токен?
Непредсказуемое значение, привязанное к сессии и встраиваемое в формы или заголовки, чтобы сервер мог убедиться, что изменяющие состояние запросы исходят с его страниц. Относится к категории Идентификация и доступ в кибербезопасности.
Что означает CSRF-токен?
Непредсказуемое значение, привязанное к сессии и встраиваемое в формы или заголовки, чтобы сервер мог убедиться, что изменяющие состояние запросы исходят с его страниц.
Как работает CSRF-токен?
CSRF-токен — стандартная защита от Cross-Site Request Forgery. Сервер генерирует случайное значение, связывает его с сессией пользователя и встраивает в HTML-формы или отправляет в пользовательском заголовке. На каждом запросе, меняющем состояние, сервер сравнивает присланный токен с ожидаемым и отклоняет несовпадения. Варианты: synchronizer token (состояние на сервере), double-submit cookies (без состояния), HMAC по OWASP. Современные приложения сочетают CSRF-токены с SameSite=Lax или Strict cookies, кастомными заголовками, проверкой Origin/Referer и строгим CORS. API, вызываемые только из JS с bearer-токенами, не требуют CSRF-токенов, но нуждаются в защите от replay.
Как защититься от CSRF-токен?
Защита от CSRF-токен обычно сочетает технические меры и операционные практики, как описано в определении выше.
● Связанные термины
- attacks№ 239
Подделка межсайтовых запросов (CSRF)
Веб-атака, заставляющая браузер аутентифицированного пользователя отправлять нежелательные запросы к уязвимому сайту и выполнять действия без его согласия.
- appsec№ 961
Кука SameSite
Атрибут куки, определяющий, отправляет ли браузер её при межсайтовых запросах; значения Strict, Lax, None; используется в основном для смягчения CSRF.
- identity-access№ 1020
Сессионный токен
Непрозрачный идентификатор, выдаваемый после аутентификации; клиент возвращает его в каждом запросе, чтобы сервер мог найти состояние сессии пользователя.
- identity-access№ 1018
Управление сессиями
Набор средств, которые выдают, поддерживают, обновляют и отзывают аутентифицированную сессию, связывая личность пользователя с последующими запросами до выхода или истечения срока.
- appsec№ 983
Флаг куки Secure
Атрибут куки, требующий, чтобы браузер отправлял её только по HTTPS, исключая передачу в открытом виде по сети.
- appsec№ 223
CORS (совместное использование ресурсов между источниками)
Механизм, обеспечиваемый браузером, позволяющий серверу выборочно ослабить политику одного источника, чтобы JavaScript одного домена мог читать ответы другого.