3

我正在使用 htmlPurifier 来防止来自用户的 XSS 攻击,并且在 input type="text" 字段上一切正常。但是,当我尝试清理 tinyMCE 文本区域时,htmlPurifier 似乎不起作用,例如:

简单的输入文本字段

输入。:

<script>alert("XSS")</script>Cleaning Test

输出:清洁测试

tinyMCE 文本区域

输入。:

<script>alert("XSS")</script>

输出:<script>alert("XSS")</script>

我错过了什么 ?为什么 htmlPurifier 可以处理简单的输入文本,而 tinyMCE 文本区域不可以?

Ps.:魔术行情已关闭

4

2 回答 2

7

我想我发现了问题所在。

tinyMCE 自动编码实体,例如:

< into &lt;
> into &gt;
" into &quot;
& into &amp;

我尝试在 tinyMCE 上使用不同类型的 entity_encoding,但它们似乎都不能按我的意愿工作,所以我使用 PHP: html_entity_decode 来解码 tinyMCE 文本区域,然后我使用 htmlPurifier 来清理数据,现在一切正常。

希望其他人觉得这很有用。

于 2012-12-12T20:08:32.977 回答
0

您需要调用tinymce.triggerSave()才能将 tinymce 内容写回 tinymce 源元素(可以是 textarea),然后净化器才能工作。

于 2012-12-12T09:20:50.220 回答