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 |
瀏覽器相容性
載入中…