Codeigniter CSRF - 它是如何工作的

问题描述 投票:17回答:3

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

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

php security codeigniter token
3个回答
35
投票

仅当使用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


2
投票

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

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

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

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.