我在客户的网站上安装了 CKeditor,允许他们使用 WYSIYG 编辑器输入一些文本。它大部分被锁定,只允许粗体、斜体、无序列表等。
例如,我还通过HTML 净化器运行用户提交的 HTML ,以确保他们不会变得聪明并开始尝试添加表格。例如,限制他们可以为 XSS 问题输入的内容也是一个好主意。
我只是查看了 CKeditor/HTML Purifier 组合产生的一些输出,并看到了这种暴行……
<p>
<span style="font-size:11px;"><br /></span></p>
无论如何我可以配置 HTML Purifier 或使用其他东西来删除没有文本节点的元素吗?它显然需要从最新的后代开始,然后向上运行 DOM 树,删除没有带有文本节点的元素的最父。
假设该标记中从来没有任何仅表示的元素,这种方法是否有任何边缘情况?没有我能想到的自闭合元素(例如图像、输入元素等)。