Что такое CSRF токен?
DOM и браузер
CSRF-токен — это уникальный непредсказуемый секрет, который сервер выдаёт клиенту и требует прикладывать к изменяющим запросам, чтобы подтвердить их подлинность и защититься от CSRF-атак.
Зачем нужен
При CSRF злоумышленник заставляет браузер жертвы отправить запрос с её cookie. Cookie прикрепляется автоматически, но CSRF-токен злоумышленник не знает — без него сервер отклонит запрос.
Как работает (Synchronizer Token Pattern)
- Сервер генерирует уникальный токен для сессии/формы и передаёт клиенту (в HTML-форме или через отдельный запрос).
- Клиент прикладывает токен к изменяющему запросу — в скрытом поле формы или заголовке:
POST /transfer
X-CSRF-Token: a1b2c3d4...- Сервер сравнивает присланный токен с ожидаемым. Не совпал — запрос отклонён.
Почему это защищает
Чужой сайт не может прочитать CSRF-токен (мешает Same-Origin Policy) и подставить его в поддельный запрос. Cookie отправится автоматически, а токен — нет.
Дополнительно
- Часто комбинируют с SameSite cookie (основная современная защита).
- Токен должен быть непредсказуемым, привязанным к сессии, с ограниченным сроком.
- Есть паттерн Double Submit Cookie (токен и в cookie, и в заголовке).
Коротко для собеседования
CSRF-токен — уникальный непредсказуемый секрет от сервера, который клиент прикладывает к изменяющим запросам (в поле формы или заголовке); сервер его проверяет. Защищает, потому что чужой сайт не может прочитать токен (SOP), хотя cookie шлётся автоматически. Комбинируют с SameSite cookie.