2017-01-02 19 views
0

У меня есть токен csrf, который я отправляю в форме, а также сохраняю его в сеансе, чтобы я мог проверить, равны ли они при отправке формы.Точка csrf не совпадает с повторной отправкой формы через кнопку обновления браузера

Тонер csrf генерируется при каждой загрузке страницы, что означает, что токен csrf в сеансе также изменяется. однако, когда я повторно отправлю форму с помощью кнопки «Обновить» браузера, она отправляет старый токен, который выдает ошибку.

Есть ли способ изменить токен в данных кэшированного браузера?

+1

Несомненно, вы не хотите повторения при каждом обновлении, это часть точки CSRF? Если кто-то отправляет форму один раз, а затем обновляет страницу получения формы, которая повторно будет обновляться при каждом обновлении .... spam – Martin

ответ

1

Нет. Это даже не кешированные данные, вы просите браузер повторить предыдущий запрос.

Возможно, вам удастся избежать проблемы с помощью PGR pattern, так что обновление просто загружает страницу отображения и не повторно передает данные формы для обработки.

Это, как правило, считается штрафом до generate the token once per session, а не на каждой загрузке страницы. Это также решит проблемы с людьми, обращающимися к сайту на двух вкладках одновременно.

+0

Я использовал рельсы для всех моих предыдущих приложений для веб-разработки, и я вижу, что токен csrf изменяется в форме каждое обновление, и даже разрешено повторно отправлять данные на обновление, так что я здесь смущен?! – medBo

+0

@medBo может быть, токен - это хеш-пароль фиксированного значения, хранящийся в сеансе. Поэтому хэш всегда изменяется каждый раз, когда генерируется пароль, но он всегда правильно сравнивается с значением сеанса. – Martin