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

Ответ

CSRF (Cross-Site Request Forgery) токен — это уникальный, секретный и непредсказуемый ключ, который сервер генерирует для каждого пользовательского сеанса. Он добавляется в формы или запросы, требующие аутентификации, чтобы защитить от подделки межсайтовых запросов.

Как это работает:

  1. Сервер генерирует токен и привязывает к сессии пользователя
  2. Токен встраивается в форму как скрытое поле (<input type="hidden" name="_csrf" value="токен">)
  3. При отправке формы сервер проверяет соответствие токена в запросе и сессии

Пример в Express.js:

const csrf = require('csurf');
const csrfProtection = csrf({ cookie: true });

app.get('/form', csrfProtection, (req, res) => {
  res.render('form', { csrfToken: req.csrfToken() });
});

app.post('/process', csrfProtection, (req, res) => {
  // Запрос будет отклонен, если токен неверен
});

В форме:

<form action="/process" method="POST">
  <input type="hidden" name="_csrf" value="{{csrfToken}}">
  <!-- остальные поля формы -->
</form>