Codeigniter CSRF - 它是如何工作的

2022-08-30 17:07:04

最近,我发现了CSRF攻击,并很高兴地发现CSRF保护已添加到Codeigniter v 2.0.0中。

我启用了该功能,并看到在表单中添加了带有令牌的隐藏输入,并且我假设它也将令牌存储在会话中。在 POST 请求中,CI 是否会自动比较令牌,还是我必须手动执行此操作?


答案 1

仅当使用函数时,CSRF 令牌才会作为隐藏输入添加到表单中。form_open()

具有 CSRF 令牌值的 Cookie 由 Security 类创建,并在必要时为每个请求重新生成。

如果数据存在,则输入类会自动验证 Cookie。如果发布的令牌与 Cookie 的值不匹配,CI 将显示错误并无法处理数据。$_POST$_POST

所以基本上,它都是自动的 - 你所要做的就是在你的表单中启用它并使用该功能。$config['csrf_protection']form_open()

我发现的一篇好文章很好地解释了它:https://beheist.com/blog/csrf-protection-in-codeigniter-2-0-a-closer-look.html


答案 2

请参阅此链接 -- 使用表单助手或手动使用 CSRF 令牌

本文介绍了如何使用 CSRF 令牌

  • 使用表单助手函数打开表单form_open()
  • 在 ajax 形式
  • ajax/jquery 序列化形式

本文还解释了如何“禁用CSRF的cetain URL(用作Web服务URL)”"


推荐