Codeigniter CSRF 问题

Posted

技术标签:

【中文标题】Codeigniter CSRF 问题【英文标题】:Codeigniter CSRF question 【发布时间】:2011-11-22 09:55:03 【问题描述】:

我只是想知道有什么选项可以让我在特定的控制器/方法中关闭 CSRF。我有另一个网站可以 ping 我的网站,但由于 CSRF 而被阻止。

有什么办法可以解决这个问题吗?

【问题讨论】:

您可以考虑一般禁用 CI CSRF“保护”,因为它已损坏。而是要知道自己在做什么,并自行提供健全性检查以确保安全(无论如何,您都需要为相关控制器执行此操作)。 得到了它是如何被破坏的链接?我第一次听说就是全部。 【参考方案1】:

创建一个 pre_system 挂钩,然后将以下代码放入挂钩控制器中:

if(stripos($_SERVER["REQUEST_URI"],'/controller/function') !== FALSE)

    $CFG =& load_class('Config', 'core');
    $CFG->set_item('csrf_protection', FALSE);

参考:http://codeigniter.com/forums/viewreply/869900/

【讨论】:

我不想碰这个,但我只想说,虽然这有效,但它并不是那么安全,人们应该注意。例如,如果您的控制器是 api 并且功能是 dosomething 您已禁用“www.site.com/api/dosomething”。但是有什么办法可以阻止某人访问“www.site.com/account/killkitten/api/dosomething”? CSRF 已禁用。小猫被杀。没有?

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

nginx配置CI重写规则,codeigniter

在 CodeIgniter 中启用 CSRF 为 TRUE [关闭]

CodeIgniter 和 CSRF

CodeIgniter 仅在某些页面使用 CSRF 保护

Codeigniter:Paypal IPN 和 csrf_protection

Codeigniter CSRF 问题