Sanitizer
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Das Sanitizer-Interface der HTML Sanitizer API definiert ein Konfigurationsobjekt, das festlegt, welche Elemente, Attribute und Kommentare erlaubt sind oder entfernt werden sollen, wenn HTML-Strings in ein Element oder ShadowRoot eingefügt werden, oder wenn ein HTML-String in ein Document geparst wird.
Eine Sanitizer-Instanz ist effektiv ein Wrapper um eine SanitizerConfig und kann als Konfigurationsalternative in denselben Sanitierungsmethoden verwendet werden:
setHTML()odersetHTMLUnsafe()auf einemElement.setHTML()odersetHTMLUnsafe()auf einemShadowRoot.- Statische Methoden
Document.parseHTML()oderDocument.parseHTMLUnsafe().
Beachten Sie, dass Sanitizer effizienter wiederverwendet und bei Bedarf modifiziert werden kann.
Konstruktoren
Sanitizer()Experimentell-
Erstellt und gibt ein
Sanitizer-Objekt zurück, optional mit einem benutzerdefinierten Sanitierungsverhalten, das in einerSanitizerConfigdefiniert ist.
Instanzmethoden
Sanitizer.allowElement()Experimentell-
Legt ein Element als vom Sanitizer erlaubt fest, optional mit einem Array von Attributen, die erlaubt oder nicht erlaubt sind.
Sanitizer.get()Experimentell-
Gibt die aktuelle
Sanitizer-Konfiguration als eineSanitizerConfig-Wörterbuchinstanz zurück. Sanitizer.removeElement()Experimentell-
Legt ein Element fest, das vom Sanitizer entfernt werden soll.
Sanitizer.removeUnsafe()Experimentell-
Aktualisiert die Konfiguration des Sanitizers so, dass er jegliches XSS-unsichere HTML entfernt.
Sanitizer.replaceElementWithChildren()Experimentell-
Legt ein Element fest, das durch seine Kindelemente ersetzt werden soll.
Sanitizer.allowAttribute()Experimentell-
Legt ein Attribut fest, das an jedem Element erlaubt ist.
Sanitizer.removeAttribute()Experimentell-
Legt ein Attribut fest, das von jedem Element entfernt werden soll.
Sanitizer.setComments()Experimentell-
Legt fest, ob Kommentare vom Sanitizer erlaubt oder entfernt werden.
Sanitizer.setDataAttributes()Experimentell-
Legt fest, ob Datenattribute an Elementen vom Sanitizer erlaubt oder entfernt werden.
Beispiele
Weitere Beispiele finden Sie in der HTML Sanitizer API und den einzelnen Methoden. Unten zeigen wir einige Beispiele, wie Sie unterschiedliche Konfigurationen für den Sanitizer erstellen können.
Erstellen eines Standard-Sanitizers
Der Standard-Sanitizer wird wie unten gezeigt konstruiert.
const sanitizer = new Sanitizer();
Die XSS-sicheren Sanitierungsmethoden erstellen denselben Sanitizer automatisch, wenn keine Optionen übergeben werden.
Erstellen eines leeren Sanitizers
Um einen leeren Sanitizer zu erstellen, übergeben Sie ein leeres Objekt an den Konstruktor. Die resultierende Sanitizer-Konfiguration wird unten gezeigt.
const sanitizer = new Sanitizer({});
/*
{
"attributes": [],
"comments": true,
"dataAttributes": true,
"elements": [],
"removeAttributes": [],
"removeElements": [],
"replaceWithChildrenElements": []
}
*/
Erstellen eines "Allow"-Sanitizers
Dieses Beispiel zeigt, wie Sie einen "Allow Sanitizer" erstellen können: einen Sanitizer, der nur eine Teilmenge von Attributen und Elementen zulässt.
Der Code verwendet zuerst den Sanitizer()-Konstruktor, um einen Sanitizer zu erstellen, wobei eine SanitizerConfig angegeben wird, die die Elemente <div>, <p> und <script> zulässt.
Das Beispiel verwendet dann allowElement(), um weitere <span>-Elemente zuzulassen, allowAttribute(), um das id-Attribut an jedem Element zuzulassen, und die replaceElementWithChildren()-Methode, um festzulegen, dass jedes <b>-Element durch seinen inneren Inhalt ersetzt werden soll (dies ist eine Art "Allow", indem Sie explizit einige Entitäten angeben, die beibehalten werden sollen). Schließlich geben wir an, dass Kommentare beibehalten werden sollen.
const sanitizer = new Sanitizer({ elements: ["div", "p", "script"] });
sanitizer.allowElement("span");
sanitizer.allowAttribute("id");
sanitizer.replaceElementWithChildren("b");
sanitizer.setComments(true);
Erstellen eines "Remove"-Sanitizers
Dieses Beispiel zeigt, wie Sie einen "Remove Sanitizer" erstellen können, der zu entfernende Elemente aus der Eingabe spezifiziert.
Der Code verwendet zuerst den Sanitizer()-Konstruktor, um einen Sanitizer zu erstellen, wobei eine SanitizerConfig angegeben wird, die die Elemente <span> und <script> entfernt. Wir verwenden dann removeElement(), um <h6> zur Liste der zu entfernenden Elemente hinzuzufügen, und removeAttribute(), um lang aus der Attributliste zu entfernen. Außerdem entfernen wir Kommentare.
const sanitizer = new Sanitizer({ removeElements: ["span", "script"] });
sanitizer.removeElement("h6");
sanitizer.removeAttribute("lang");
sanitizer.setComments(false);
Spezifikationen
| Specification |
|---|
| HTML Sanitizer API> # sanitizer> |