ruby-on-rails - 为什么 Rails 真实性 token session 是持久的并且对于每个提交不是唯一的?

标签 ruby-on-rails forms web2py authenticity-token

我想知道为什么 Rails 表单真实性 token 会持续整个 session ,而不是每次提交时都唯一生成。

我来自web2py ,其中表单是使用名为 _formkey 的唯一一次性 token 生成的。 formkey 自动防止由于双击、后退按钮缓存等导致的重复提交。

在 Rails 中,您显然必须自己处理双重提交问题(请参阅 https://stackoverflow.com/a/4683161/165673 )。在我看来,一次性真实性 token 可以解决这个问题,并且更安全?

最佳答案

整个 session 的一个 token 更容易实现。考虑一下您有两个打开的带有表单的选项卡的情况。

一个 session token 与一次性 token 解决方案一样安全。至少可以防止 CSRF 攻击。

In Rails, you apparently have to deal with the double-submission problem yourself

对此有现成的解决方案。了解 disable_with 选项。当然,所有修改数据的请求都应该通过 HTTP POST 发送,而不是 GET。

关于ruby-on-rails - 为什么 Rails 真实性 token session 是持久的并且对于每个提交不是唯一的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18662444/

相关文章:

web2py 自定义用户配置文件?

javascript - 根据表单输入生成动态 url

ruby-on-rails - Rails 事件记录查找 nil 的位置

c++ - 具有相同键的 Poco HTMLForm 多个参数

forms - Eximee - 如何从 Eximee 存储库导出工件?

php - 像web2py一样在php中进行密码加密

python - 为什么 web2py 中两个逻辑相似的查询会给出不同的结果?

ruby-on-rails - 如何将私有(private)提交与事件提要一起使用?

ruby-on-rails - Ruby on Rails : Is it better to use outdated plugin, 还是使用您自己的代码?

html - 如何编辑联系表 7 的单选按钮?