我使用htmlPurifier来阻止来自用户的XSS攻击,并且输入type =“text”字段的一切正常。但是,当我尝试清理tinyMCE textareas时,似乎htmlPurifier不起作用,例如:
简单输入文字字段
输入:
<script>alert("XSS")</script>Cleaning Test
输出:清洁测试
tinyMCE TEXTAREA
输入:
<script>alert("XSS")</script>
输出:<script>alert("XSS")</script>
我错过了什么吗?为什么htmlPurifier可以处理简单的输入文本而使用tinyMCE textarea呢?
Ps:Magic Quotes off Off
答案 0 :(得分:6)
我想我发现了什么问题。
tinyMCE自动编码实体:
< into <
> into >
" into "
& into &
我尝试在tinyMCE上使用不同类型的entity_encoding,但它们似乎都没有按我的意愿工作,所以我使用PHP:html_entity_decode来解码tinyMCE文本区域,然后我使用htmlPurifier来清理数据,现在一切正常。
希望别人觉得这很有用。
答案 1 :(得分:0)
您需要调用tinymce.triggerSave()
,以便在净化器工作之前将tinymce内容写回tinymce源元素(可以是textarea)。