可以使用HTMLPurifier忽略指定标记内的完整HTML

时间:2016-01-11 08:24:04

标签: php html iframe htmlpurifier

我有一个用例,我需要存储iframe和可能在数据库中动态生成的javascript。我正在使用HTMLPurifier来清理输入。

HTMLPurifier中是否可以忽略指定元素中的所有内容(HTML / CSS / JS),以便清除所有内容,但保留指定元素内的所有内容?

1 个答案:

答案 0 :(得分:0)

来自 Wikipedia

   XHTML 文档中的

CDATA 部分可能会以不同方式进行解析   Web浏览器,如果他们将文档呈现为HTML,则自HTML   解析器不识别 CDATA 开始和结束标记,也不识别它们   识别HTML实体引用,例如& lt;在< script>内标签。   这可能会导致Web浏览器中的呈现问题,并可能导致   用于显示数据的跨站点脚本漏洞   不可信的来源,因为这两种解析器会不同意    CDATA 部分结束的地方。

     

因为能够使用小于号(<)和   网页脚本中的&符号(&),以及较小范围的样式,   无需记住逃避它们,通常使用 CDATA   内联文本< script>周围的标记和< style>中的元素    XHTML 文件。但这样文档也可以通过HTML进行解析   解析器,无法识别 CDATA 标记, CDATA 标记   通常会被评论出来

以下是JavaScript示例:

<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>

以下是CSS示例:

<style type="text/css">
/*<![CDATA[*/
body { background-image: url("marble.png?width=300&height=300") }     
/*]]>*/
</style>