случайный ActionController :: InvalidAuthenticityToken в моем приложении rails - PullRequest
2 голосов
/ 04 июля 2019

В моем приложении есть случайные ошибки CSRF с ActionController::InvalidAuthenticityToken. Мол, один из 100 или более запросов. Почему эти ошибки появляются случайным образом, как это?

Я получил их на каком-то обычном теге <%= form_with %>, некоторые на посте javascript (но он работает большую часть времени, потому что я добавляю meta[name='csrf-token'] как X-CSRF-TOKEN каждый раз), некоторые на devise/registrations#create и т. Д. .

Почему это происходит иногда, а не каждый раз?

Привет

1 Ответ

2 голосов
/ 05 июля 2019

Срок действия токена CSRF истекает по истечении сеанса Rails (за исключением некоторых конфигураций).

Вот сценарий, вызывающий эту ошибку:

Если у пользователя есть форма, отображаемая на странице, уйти на несколько десятков минут (в зависимости от продолжительности сеанса) и вернуться к заполнению формы, сеанс (и токен), возможно, истек. Тогда при подаче Rails будет возникать ошибка InvalidAuthenticityToken.

Подробнее об этом здесь Rails Жетоны CSRF - срок их действия истекает?

Другой сценарий связан с (плохими) ботами: бот может отправить форму без использования токена.

...