CodeIgniter的CSRF保护是否不会阻止多个表单提交?

时间:2013-02-27 19:31:25

标签: php codeigniter

我将CSRF保护选项设置为TRUE并使用form_open()。隐藏的输入显示成功。但是,如果我提交表单,然后按“返回”并再次提交,它允许再次提交表单! codeigniter设置有问题,还是应该是这样?

现在,我发现自己要实现自己的令牌系统,用会话变量检查隐藏的帖子输入。我觉得我现在也在自己实施CSRF。如果我按照自己的方式进行,是否还需要CI的实施?

1 个答案:

答案 0 :(得分:2)

将CSRF设置为true会自动将随机哈希添加到form_open()中,但只会根据需要重新生成,具体取决于您使用的浏览器将决定后退按钮的行为。如果它返回时没有刷新,那么你的哈希应该是不正确的,如果它发送一个http请求,那么它会更新令牌。

你在这里提到的并不是真正的小故障,因为CSRF正在按预期工作以防止跨站点伪造,但问题是其他最常用Post / Redirect / Get(PRG pattern修复的方法)这种方式回击将重定向或具有无效的CSRF,并允许您从会话中刷新数据或发布如果您不使用闪存数据。