我有一个浏览器编辑器,类型为
这些片段可以是任何类型的HTML,因此我们必须对内容进行清理,以便它不包含某些安全问题标签(如
我知道一些允许某些白名单策略的清理库(如JVM上的JSoup),但这些规则通常非常简单,例如说哪些标记/属性是白名单,而没有其他规定。
我们想要更高级的规则,例如:
我正在寻找浏览器(JS)和JVM(Java或Scala)上的解决方案。你有什么好的建议吗?
contentEditable
,用户可以复制/粘贴或选择HTML片段放入其中。这些片段可以是任何类型的HTML,因此我们必须对内容进行清理,以便它不包含某些安全问题标签(如
<script>
等)。我知道一些允许某些白名单策略的清理库(如JVM上的JSoup),但这些规则通常非常简单,例如说哪些标记/属性是白名单,而没有其他规定。
我们想要更高级的规则,例如:
- 定义要保留或不保留的内联样式,
- 将相对链接转换为绝对链接
- 根据其className列出黑名单或白名单中的某些标记
- 根据URI模式允许某些URI属性(如仅允许到特定域的链接)。
- 在某些情况下,我们希望禁止的DOM节点被其子节点“替换”(以删除格式和HTML布局元素,但不会丢失黑名单标记中的文本节点)
我正在寻找浏览器(JS)和JVM(Java或Scala)上的解决方案。你有什么好的建议吗?
ElementPolicy
不允许处理我的大多数用例 :( https://code.google.com/p/owasp-java-html-sanitizer/ - Sebastien Lorber