我正在使用codeigniter处理CMS。用户应该知道HTML并自己构建页面。现在,我在数据库(mysql数据库)中存储一些标签时遇到了问题。
用户可以将图像上传到服务器,然后在代码中使用图像的路径。 代码在a中编辑。当我尝试将某个页面的代码更新为:
<img src="assets/fileserver/versje2.jpg" alt="" />
一切正常。
但是当我对它应用内联样式时
<img style="width: 200px;" src="assets/fileserver/versje2.jpg" alt="" />
它不起作用。它只是忽略了样式,以下内容存储在数据库中:
<img src="assets/fileserver/versje2.jpg" alt="" />
它只是删除了样式。这怎么可能?
我试过了:
-htmlspecialchars
-htmlentities
$config['global_xss_filtering'] = FALSE;
$config['global_xss_filtering'] = TRUE;
有关问题的建议吗?
答案 0 :(得分:3)
也许你需要用htmlspecialchars($saveToDB)
函数保存它,
在输入中编辑,例如:<input name="someHtmlCode" value="<?=$saveToDB;?>" />
而不是在网站上的html文件中使用htmlspecialchars_decode
函数回显:
$html = htmlspecialchars_decode($dataFromDB)
答案 1 :(得分:2)
好像我已经发现了! 首先,我有
$config['global_xss_filtering'] = TRUE;
然后,我将其设置为
$config['global_xss_filtering'] = FALSE;
但我仍然在表格验证上有XSS | clean!
$this->form_validation->set_rules('inhoud', 'inhoud', 'xss|clean');
这就是为什么它不起作用,现在,将样式写入数据库就好了!
答案 2 :(得分:0)
这对我有用。 (代码点火器 3)
保持真实:
<块引用>$config['global_xss_filtering'] = TRUE;
您可以单独使用 FALSE xss 过滤器。
<块引用>$this->input->post('input_filed_name', TRUE); // 使用 XSS 过滤器
$this->input->post('input_filed_name', FALSE); // 没有 XSS 过滤器
例如:
$this->input->post('description', FALSE); // without XSS filter