HTML Sanitizer API - 允许开发人员对不受信任的 HTML 字符串进行清理

安全上下文
该功能仅在部分或所有支持的浏览器中的安全上下文(HTTPS)中可用。

HTML Sanitizer API 允许开发人员对不受信任的 HTML 字符串进行清理,以便安全地插入到文档的 DOM 中。

Sanitizer API 概念和用法

Web 应用程序通常需要在客户端处理 HTML 字符串,这可能是客户端模板解决方案的一部分,也可能是呈现用户生成的内容的一部分。要以安全的方式进行处理是很困难的。Sanitizer API 允许以安全的方式呈现 HTML。

要访问 API,您将使用构造函数,它创建一个 Sanitizer.Sanitizer 实例,并允许配置允许或不允许的元素和属性列表。

最常见的用例 - 防止 XSS - 由内置的默认列表处理,因此,只有在处理额外的、特定于应用程序的用例时,才有必要用自定义配置创建一个 Sanitizer.Sanitizer

API 有两种方法来清理字符串。一个返回一个字符串,另一个返回一个文档片段。有关更多信息,请参阅下面的实例部分

Sanitizer API 接口

Sanitizer

HTML Sanitizer APISanitizer 接口提供了接受不受信任的 HTML 字符串,并对其进行清理以安全插入到文档的 DOM 中的功能。

实例

此实例显示了使用 Sanitizer.sanitizeToString() 方法清理字符串的结果。返回一个 String 并移除了不允许的 scriptblink 元素。

// 我们要清理的输入字符串
const stringToClean = '一些<b><i>带有</i></b><blink>标签</blink>的文本,包括一个流氓脚本<script>alert(1)</script>定义。';

const result = new Sanitizer().sanitizeToString(stringToClean);
console.log(result);
// 日志:"一些<b><i>带有</i></b>标签的文本,包括一个流氓脚本定义。"

另一种可用的是 Sanitizer.sanitize() 方法。它与上面的非常相似,但是返回一个 DocumentFragment 并删除了不允许的 scriptblink 元素。

// 我们要清理的输入字符串
const stringToClean = '一些<b><i>带有</i></b><blink>标签</blink>的文本,包括一个流氓脚本<script>alert(1)</script>定义。';

const result = new Sanitizer().sanitize(stringToClean);
// 结果: 一个 DocumentFragment 包含文本节点和一个 <b> 元素,以及一个 <i> 子元素

规范

规范 状态 备注
Unknown
sanitizeToString 的定义
Unknown 初始定义。

桌面浏览器兼容性

暂无兼容数据