php - 在 CodeIgniter 中启用 CSRF 为 TRUE

标签 php forms codeigniter csrf

<分区>

刚刚读到 CodeIgniter 2.x 具有内置的 CSRF 保护。现在阅读文档后,我没有发现任何与 CSRF 相关的内容,只是将其设置为 TRUE 的选项。在config.php文件就是这样。但是,在我的系统中我不使用这个 form_helper它自动合并了 CodeIgniter 的 CSRF 保护,而不是我有原生的 <form>的 HTML。

我担心的是我是否需要做任何事情来实现 CodeIgniter 的 CSRF,或者只是将选项设置为 TRUE够了吗?

最佳答案

要在 Codeigniter 中启用 CRSF,您需要做的就是:

  1. 在配置文件中将选项设置为“TRUE”

  2. 您的所有表单必须使用form_open() helper function .这将自动生成并在您的表单中包含一个“隐藏的”CSRF token 。然后,作为安全功能的一部分,Codeigniter 将在每次提交表单时自动检查此 token 。如果检测到 CSRF 错误,它会自动抛出 401 错误。

您不需要做任何其他事情。

编辑:我刚刚重新读到您没有使用 form_open()。自己手动将 CSRF token 插入表单是可能的——但这比所需的工作量要多。只需将您的所有表单转换为使用 form_open - 它将无缝运行。

(是的 - 这是 CI 中为数不多的文档不足的功能之一 - 所以我理解你为什么找不到答案 - 我也花了一段时间)

关于php - 在 CodeIgniter 中启用 CSRF 为 TRUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761737/

相关文章:

python - Django forms.FileField 验证

我的选择表单中的 Javascript 不适用于文本区域字段

javascript - 重置特定表单字段

php - Apache 的 mod_php 还是 FastCGI?哪个对 Wordpress 有好处?

php - 使用带有查询字符串的 facebook like 按钮 - like 按钮不起作用

php - 如何在两个 laravel 项目之间使用 API 手动登录?

php - 优化使用 IN 和 MAX(date) 的 MySQL 查询

php - Codeigniter + ajax(jQuery) session 问题

javascript - 从 Ajax 将数组数组传递给 Controller

php - codeigniter 数据库缓存配置