2

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

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

4

1 回答 1

2

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

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

于 2013-02-27T20:01:09.267 回答