bne*_*jax 3 php codeigniter tinymce codeigniter-2
香港专业教育学院搜索了包括stackoverflow在内的每个站点.
我已经全局启用了XSS,并且我使用了TinyMCE.在那些页面上,我希望TinyMCE部分没有启用XSS.
在阅读了大约40页后,他们都说要做以下事情:
$tiny_mce = $this->input->post('note'); // xss filtering off
Run Code Online (Sandbox Code Playgroud)
要么
$tiny_mce = $this->input->post('note', FALSE); // xss filtering off
Run Code Online (Sandbox Code Playgroud)
我试过了两个,这是我的模特:
public function edit($id) {
$tiny_mce = $this->input->post('note'); // xss filtering off
$userId = $this->ion_auth->get_user_id();
$data = array(
'note' => $tiny_mce
,'postedBy' => $userId);
$this->db->where('id', $id);
$this->db->update('company_notes', $data);
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么它不工作?任何帮助都会很棒!我真的不想全局关闭XSS,所以我希望采用"每个基础"的方法.
编辑 我刚试过
public function edit($id) {
$this->config->set_item('global_xss_filtering', FALSE);
$tiny_mce = $this->input->post('note'); // xss filtering off
$userId = $this->ion_auth->get_user_id();
$data = array(
'note' => $tiny_mce
,'postedBy' => $userId);
$this->db->where('id', $id);
$this->db->update('company_notes', $data);
}
Run Code Online (Sandbox Code Playgroud)
但那也行不通.
Controller初始化后无法禁用XSS过滤.
因为如果你能$config['global_xss_filtering'] = TRUE;在config.php文件,笨执行对XSS过滤$_POST,$_GET,$_COOKIE在初始化之前Controllers,Models和...
因此,当您访问Controller之前,所有事情都已完成.
虽然解决方案是根据需要禁用$config['global_xss_filtering']和运行特定变量的XSS过滤,但有一种方法可以保留原始值(预过滤)以便以后使用它们:
1)设置$config['enable_hooks']到TRUE在application/config.php.
2)将以下内容插入application/config/hooks.php:
$hook['pre_controller'] = array(
'class' => '',
'function' => 'keep_vars',
'filename' => 'keep_vars.php',
'filepath' => 'hooks',
'params' => array($_POST, $_GET)
);
Run Code Online (Sandbox Code Playgroud)
注意:我们在Controller初始化之前使用它Hook来执行keep_vars()函数(您可能还想考虑使用'pre_system'键).
3)使用以下内容创建keep_vars.php内部application/hooks/目录:
<?php
function keep_vars ($vars = array())
{
if (empty($vars)) return;
global $pre_filter;
$pre_filter = array();
foreach ($vars as $var) {
$pre_filter = array_merge($pre_filter, $var);
}
}
Run Code Online (Sandbox Code Playgroud)
4)最后,当您想要访问控制器中$_GET或$_POST控制器中的$pre_filter变量时,请在方法内定义全局变量:
class Foo extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function bar ()
{
// define as global
global $pre_filter;
// check the pre XSS filtered values
print_r($pre_filter);
// you can get access to pre filtered $_POST['key'] by:
echo $pre_filter['key'];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2512 次 |
| 最近记录: |