php - CodeIgniter 的 CSRF 保护不会阻止多个表单提交吗?

标签 php codeigniter

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

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

最佳答案

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

您在这里提到的并不是真正的故障,因为 CSRF 正在按预期工作以防止跨站点伪造,但问题是其他问题,大多数通过 Post/Redirect/Get ( PRG pattern ) 修复,这种方式回击要么重定向或具有无效的 CSRF,并允许您在不使用 Flash 数据的情况下刷新 session 或帖子中的数据。

关于php - CodeIgniter 的 CSRF 保护不会阻止多个表单提交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120729/

相关文章:

php - 使用 PHP SDK 登录 Facebook 应用程序无法正常工作 : The domain of this URL isn't included in the app's domains

php - 使用 lightopenid/注销保留登录信息

Javascript 确认和 CodeIgniter

php - 需要帮助创建可编辑的复选框

javascript - 轮播外的文本保持网站响应

php - 递归地列出 PHP 中的目录/文件并忽略数组中的目录/文件

mysql - 如何使用数组打印记录集?

php - 选择代码点火器模型的最大值时出错

php - 连接到第二个数据库在 CodeIgniter 中不起作用

php - 网络连接在 php 录像机中连接失败