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

标签 java javascript html jsoup sanitization

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

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

我知道一些允许某些白名单策略的 sanitizer 程序库(如 JVM 上的 JSoup),但这些规则通常非常简单,比如说明哪些标签/属性被列入白名单,仅此而已。

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

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

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

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

最佳答案

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

关于java - 如何将一个 HTML 片段转换为另一个 HTML 片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549608/

相关文章:

javascript - 使用下拉菜单自动更改代码

html - 不同缩放级别的元素之间的间隙

javascript - 过滤数据属性 jQuery

c# Asp.net 获取在 javascript 中设置的 Cookie 过期时间总是返回 01.01.0001

javascript - 输入类型文本值到多行

java - 在MapReduceBase中的configure方法中初始化多输出实例

java - 如何在java中将所有SQL表数据插入到一个数组中[android studio]

java - Spring Boot REST 应用测试方法

java - 在 Sonar 中排除生成的代码

javascript - 具有 REST 后端的 HTML/javascript 客户端