API › CSRF

CSRF

CSRF-токен требуется только для write-actions при cookie-аутентификации. Bearer-запросы CSRF не используют — заголовок-носитель токена не отправляется браузером автоматически (в отличие от куков), поэтому cross-site-форджинг невозможен.

Когда нужен

Способ авторизацииRead (GET)Write (POST)
Cookie / sessionобязателен
Bearer-токен
Без авторизации (public actions)—*

* Эндпоинты с пометкой no-csrf (например auth_token_issue) сознательно исключены — они защищены rate-limit + паролем.

Как получить

GET /api.php?act=csrf_token

→ { "ok": true, "result": { "token": "32 hex characters" } }

Как передать

Приоритет проверки (любой вариант):

  1. HTTP-заголовок X-CSRF-Token: <token> (рекомендуется)
  2. Параметр запроса/тела csrf_token=<token>

Ошибки

КодКогда
csrf_invalidТокен отсутствует, не совпадает или сессия не имеет сохранённого токена
auth_requiredКуки сессии нет / истекла — CSRF проверять нечего
После auth_login сессия ротируется и старый CSRF-токен инвалидируется. Новый токен возвращается в поле result.csrf_token ответа login — сохраняйте его.