Sanitizer: removeUnsafe() 方法
Sanitizer 接口的 removeUnsafe() 方法会配置 sanitizer 配置,使其移除浏览器认为是 XSS 不安全的所有元素、属性和事件处理程序内容属性。
不安全的元素和属性是通过分别调用 Sanitizer.removeElement() 和 Sanitizer.removeAttribute() 添加到配置中的。这会将它们添加到 sanitizer 配置的禁止列表中:removeElements 和 removeAttributes,并(如果存在)从配置的允许列表中移除它们:elements、replaceWithChildrenElements 和 attributes。
可以调用此方法使任何自定义配置变得 XSS 安全。如果与使用允许列表的配置一起使用,它将从这些列表中移除 XSS 不安全的实体。如果仅与使用禁止(“移除”)列表的配置一起使用,则可以确保配置包含这些列表中的不安全元素。
请注意,如果您将 sanitizer 与“安全”HTML 设置器(如 Element.setHTML() 和 ShadowRoot.setHTML())之一一起使用,则无需调用此方法即可使 sanitizer 安全。在这些设置器中使用时,该方法会自动调用,而不会修改传入的 Sanitizer 实例。
语法
removeUnsafe()
参数
无。
返回值
无 (undefined)。
示例
基本用法
以下代码展示了 removeUnsafe() 的用法。
// Create sanitizer.
const sanitizer = new Sanitizer(/* Some configuration */);
// Make the configuration XSS-safe
sanitizer.removeUnsafe();
使 sanitizer 配置安全
此示例演示了调用 removeUnsafe() 如何使 sanitizer 配置变得 XSS 安全。
JavaScript
代码首先创建一个新的 Sanitizer 对象,该对象允许安全的元素 <p>、不安全的元素 <script> 和 <iframe>,以及不安全的 onwebkitanimationend 事件处理程序属性。
然后,代码在 sanitizer 上调用 removeUnsafe() 并记录其配置。
// Create sanitizer that allows
const sanitizer = new Sanitizer({
elements: ["p", "script"],
attributes: ["onwebkitanimationend"],
replaceWithChildrenElements: ["iframe"],
});
// Make the sanitizer safe!
sanitizer.removeUnsafe();
// Log the sanitizer configuration
const sanitizerConfig = sanitizer.get();
log(JSON.stringify(sanitizerConfig, null, 2));
结果
下面显示了最终的配置。请注意,不安全的元素和属性已从“允许”列表移至相应的“移除”列表。在这种情况下,我们仍然允许 <p> 元素,因此在使用 sanitizer 时,输入中的 <p> 元素才会被导入。
规范
| 规范 |
|---|
| HTML Sanitizer API # dom-sanitizer-removeunsafe |
浏览器兼容性
加载中…