2

我想知道为什么 Rails 形成 Authenticity Tokens 会持续整个会话,而不是每次提交都唯一生成。

我来自web2py,其中表单是使用称为_formkey. formkey 自动防止由于双击、后退按钮缓存等导致的重复提交。

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

4

1 回答 1

3

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

一个会话令牌与一次性令牌解决方案一样安全。至少作为对 CSRF 攻击的保护。

在 Rails 中,您显然必须自己处理重复提交问题

有开箱即用的解决方案。阅读有关disable_with选项。当然,所有修改数据的请求都应该通过 HTTP POST 发送,而不是 GET。

于 2013-09-06T17:14:17.860 回答