我想知道为什么 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/