如何将HTML片段转换为另一个HTML片段?

时间:2014-10-24 14:09:10

标签: java javascript html jsoup sanitization

我有一个类型为contentEditable的浏览器编辑器,用户可以在其中复制/粘贴或选择要放入的html片段。

这些片段可以是任何类型的HTML,因此我们必须清理内容,使其不包含某些安全问题标记(如<script>等...)。

我知道一些允许一些白名单策略的清理程序库(比如JVM上的JSoup),但这些规则通常非常简单,比如说哪些标记/属性是白名单而没有别的。

我们需要更高级的规则,例如:

  • 定义要保留的内联样式,
  • 将相对链接转换为绝对链接
  • 根据className
  • 将某些代码列入黑名单或列入白名单
  • 根据URI模式允许一些URI属性(例如仅允许指向某个域的链接)。
  • 在某些情况下,我们希望禁止的dom节点被其子节点“替换”(删除格式和html布局元素,但不要松开黑名单中的文本节点

到目前为止,我们已经完成了一些代码来处理这个问题,但我发现这非常hacky。是否有一个已知的库,标准或算法来处理这些事情?我不是XML解析/转换专家,我可以使用的任何东西,如XSLT,SAX或其他可以帮助我解决问题的东西。

我正在浏览器(JS)和JVM(Java或Scala)上寻找解决方案。关于如何实现这个的任何想法?

1 个答案:

答案 0 :(得分:0)

也许Showdown.js可以帮到你? https://github.com/showdownjs/showdown