CodeIgniter关闭控制器外的CSRF

时间:2017-09-26 19:51:39

标签: php codeigniter csrf

我刚刚开始使用codeigniters内​​置的CSRF保护。它工作正常,但有一些第三方页面我无法启用它,这些页面存在于CI的控制器之外,因此无法列入白名单。

例如,CKFINDER。我在配置文件中有这个,所以我可以访问我的会话.etc。:

$CI = require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'CI.php';

CI.php

ob_start();
define('REQUEST', 'external');
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . "index.php"; //or wherever the directory is relative to your path
ob_end_clean();
return get_instance();

我已经尝试了$CI->config->set_item('csrf_protection', false);并且使用var转储它看起来好像变量设置为false。但是,CSR的CSRF保护仍然有效。我不确定你是否可以通过这种方式修改主配置数组,或者是否有其他错误。

如何为CI控制器外的页面关闭csrf_protection

1 个答案:

答案 0 :(得分:0)

config.php中,这比我在这个特定问题上找到的其他解决方案更有效:

if (defined('REQUEST') && REQUEST === 'external') {
    $config['csrf_protection'] = FALSE;
} else {
    $config['csrf_protection'] = TRUE;
}