5

我正在使用 codeigniter 开发 CMS。用户应该了解 HTML 并自己构建页面。现在,我在数据库(mysql 数据库)中存储一些标签时遇到问题。

用户可以将图片上传到服务器,然后在代码中使用图片的路径。代码在 . 当我尝试将某个页面的代码更新为:

<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;

关于问题可能是什么的任何建议?

4

3 回答 3

3

也许你需要用htmlspecialchars($saveToDB)函数保存它,
像这样在输入中编辑:然后在你的 html 文件<input name="someHtmlCode" value="<?=$saveToDB;?>" />
中用函数回显:htmlspecialchars_decode
$html = htmlspecialchars_decode($dataFromDB)

于 2013-05-12T10:27:05.117 回答
2

好像我已经找到了!首先,我有

 $config['global_xss_filtering'] = TRUE;

然后,我将其设置为

$config['global_xss_filtering'] = FALSE;

但是我仍然有 XSS|clean 在表单验证上!

$this->form_validation->set_rules('inhoud', 'inhoud', 'xss|clean');

这就是为什么它不起作用的原因,现在,样式被写入数据库就好了!

于 2013-05-12T10:14:58.883 回答
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
于 2021-05-19T05:48:30.187 回答