Codeigniter和Ckfinder csrf_exclude_uris

时间:2017-06-06 12:56:06

标签: codeigniter csrf ckfinder

我遇到Codeigniter 3和CKfinder的问题,关注CSRF保护

如果我在我的Codeigniter配置文件中使用以下内容,CKFinder图像上传工作正常

$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

如果我更改$ config [' csrf_protection'] = TRUE; CKFinder图像上传失败

我需要的是能够将CKFinder排除在CSFR保护之外 - 我已尝试过以下但似乎没有任何作用:

$config['csrf_exclude_uris'] = array('assets/plugins/ckfinder/.*+', 'assets/plugins/ckfinder/ckfinder.js', 'assets/plugins/ckfinder', 'admin/news/.*+');

任何指针都将不胜感激

3 个答案:

答案 0 :(得分:1)

# Its work fine #
$config['csrf_protection'] = TRUE;
if(isset($_SERVER["PHP_SELF"])){
  $parts = explode("/",$_SERVER["PHP_SELF"]);
  $exclude_url_arr = array('login');
  if (!empty($exclude_url_arr[0])) {
    foreach($parts as $part) {
      if (in_array($part,$exclude_url_arr)) {
          $config['csrf_protection'] = FALSE;
          break;
      }
    }
  }
}

答案 1 :(得分:0)

希望这可行。它适用于我的情况。

$config['csrf_exclude_uris'] = array('assets/plugins/ckfinder/[\s\S]*');

但据我所知,“资产”资源不需要任何csrf保护。

答案 2 :(得分:0)

提交表单数据的网址。

config.php文件中添加以下行。这将有效。

$config['**csrf_exclude_uris**'] = array(
        *'device/deviceProcess/pushData'*
);

-- deviceProcess : Controller

--- pushData : Method

----- URL : http://hostname/index.php/device/deviceProcess/pushData