我刚刚开始使用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
?
答案 0 :(得分:0)
在config.php
中,这比我在这个特定问题上找到的其他解决方案更有效:
if (defined('REQUEST') && REQUEST === 'external') {
$config['csrf_protection'] = FALSE;
} else {
$config['csrf_protection'] = TRUE;
}