只需阅读 CodeIgniter 2.x 具有内置的 CSRF 保护。现在阅读文档后,我没有找到任何与 CSRF 相关的内容,只是一个将其设置为TRUE
文件config.php
的选项,仅此而已。但是,在我的系统中,我没有使用它form_helper
,它自动结合了 CodeIgniter 的 CSRF 保护,而是我拥有<form>
HTML 的本机。
我担心的是我是否需要做任何事情来实现 CodeIgniter 的 CSRF,或者只是将选项设置为TRUE
就足够了?
只需阅读 CodeIgniter 2.x 具有内置的 CSRF 保护。现在阅读文档后,我没有找到任何与 CSRF 相关的内容,只是一个将其设置为TRUE
文件config.php
的选项,仅此而已。但是,在我的系统中,我没有使用它form_helper
,它自动结合了 CodeIgniter 的 CSRF 保护,而是我拥有<form>
HTML 的本机。
我担心的是我是否需要做任何事情来实现 CodeIgniter 的 CSRF,或者只是将选项设置为TRUE
就足够了?
要在 Codeigniter 中启用 CRSF,您需要做的就是:
在配置文件中将选项设置为“TRUE”
您的所有表单都必须使用form_open() 辅助函数。这将自动生成并在您的表单中包含一个“隐藏的”CSRF 令牌。作为安全功能的一部分,Codeigniter 将在每次提交表单时自动检查此令牌。如果它检测到 CSRF 错误,它会自动抛出 401 错误。
你不需要做任何其他事情。
编辑:我刚刚重新读到您不使用 form_open()。可以自己手动将 CSRF 令牌插入到表单中——但这会比所需的工作量更多。只需将所有表单转换为使用 form_open - 它就可以无缝地工作。
(是的 - 这是 CI 中为数不多的文档记录不佳的功能之一 - 所以我理解你为什么找不到答案 - 我也花了一段时间)