【问题标题】:insert html into database with CodeIgniter使用 CodeIgniter 将 html 插入数据库
【发布时间】:2013-02-22 22:02:28
【问题描述】:

我想让用户使用编辑器(CKEditor)编辑页面。

问题是我想防止XSS,所以当我使用时:

$this->input->post('content', TRUE)

它还删除了一些html内容,例如以下代码:

<script></script><p><span style="color:#800000;">text</span></p>

变成:

[removed][removed]<p><span 

是的,它可以防止 XSS,但也会删除一些必要的 html 内容。

我应该怎么做才能解决它?

【问题讨论】:

  • 对于初学者,在保存之前不要更改内容。 XSS 仅在您将某些内容 输出 到可以执行 javascript 的上下文中时发生。如果您过早过滤,则以后无法利用改进的过滤器,也无法查看原始内容。
  • 使用 ActiveRecord,您不必担心将字符转义到 DB。
  • @Winston:XSS 和 SQL 注入(或由于无法正确转义而破坏数据库查询的非恶意语法)没有任何连接。

标签: php codeigniter


【解决方案1】:

不要使用他们内置的 XSS 功能。使用HTML purifier 为您完成。这样一来,您就可以更好地控制要删除的内容和不删除的内容。

【讨论】:

    【解决方案2】:

    尝试这种简单的方法将代码 $this-&gt;input-&gt;post('content', TRUE) 更改为 $_POST['content'] 它对我有用,因为 codeigniter 在运行 $this-&gt;input 时会进行 XSS 过滤

    【讨论】:

      【解决方案3】:

      你可以使用下面的代码来代替这个。

      $content = htmlspecialchars($this->input->post('content'));

      保存到数据库,检索时可以使用

      htmlspecialchars_decode('你的html代码');

      【讨论】:

      • 这并没有解决 XSS 问题(或任何问题,有什么意义?)。
      猜你喜欢
      • 2013-04-04
      • 2016-09-18
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多