Codeigniter CSRF - 它是如何工作的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeigniter CSRF - 它是如何工作的相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

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

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

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

另一答案

请参阅此链接 - Used CSRF Tokens using form helper or Manually

本文解释了如何使用CSRF令牌

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

本文还介绍了如何“为某些URL(用作Web服务URL)禁用CSRF”

另一答案

启用csrf保护时,安全性类会自动检查此标记(它将POST标记与COOKIE标记进行比较)

以上是关于Codeigniter CSRF - 它是如何工作的的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter:这种情况下 csrf 不工作

Codeigniter:Paypal IPN 和 csrf_protection

如果我从CodeIgniter表单复制csrf令牌,则表单成功提交

Codeigniter CSRF 问题

Codeigniter CSRF 保护 VS 选项卡

在没有表格的情况下获取 Codeigniter CSRF 令牌?