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 angibt, welche Elemente, Attribute und Kommentare erlaubt 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 ein SanitizerConfig
und kann als Konfigurationsalternative in denselben Sanitization-Methoden verwendet werden:
setHTML()
odersetHTMLUnsafe()
aufElement
.setHTML()
odersetHTMLUnsafe()
aufShadowRoot
.Document.parseHTML()
oderDocument.parseHTMLUnsafe()
statische Methoden.
Beachten Sie, dass Sanitizer
voraussichtlich effizienter ist, wiederverwendet und bei Bedarf modifiziert zu werden.
Konstruktoren
Sanitizer()
Experimentell-
Erstellt und gibt ein
Sanitizer
-Objekt zurück, optional mit einem in einemSanitizerConfig
definierten benutzerdefinierten Bereinigungsverhalten.
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 Instanz einesSanitizerConfig
-Dictionaries zurück. Sanitizer.removeElement()
Experimentell-
Legt ein Element als vom Sanitizer zu entfernend fest.
Sanitizer.removeUnsafe()
Experimentell-
Aktualisiert die Sanitizer-Konfiguration, sodass unsicheres XSS-HTML entfernt wird.
Sanitizer.replaceElementWithChildren()
Experimentell-
Legt fest, dass ein Element durch seine Kind-HTML-Elemente ersetzt werden soll.
Sanitizer.allowAttribute()
Experimentell-
Legt ein Attribut fest, das bei 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 auf Elementen vom Sanitizer erlaubt oder entfernt werden.
Beispiele
Weitere Beispiele finden Sie in der HTML Sanitizer API und den einzelnen Methoden. Im Folgenden zeigen wir einige Beispiele, wie Sie unterschiedliche Sanitizer-Konfigurationen erstellen können.
Erstellen eines Standardsanitizers
Der Standardsanitizer wird wie folgt erstellt.
const sanitizer = new Sanitizer();
Die XSS-sicheren Sanitization-Methoden 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 "Erlauben"-Sanitizers
Dieses Beispiel zeigt, wie Sie einen "Erlauben-Sanitizer" erstellen könnten: 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 ein SanitizerConfig
spezifiziert wird, das das Element <div>
, <p>
und <script>
zulässt.
Das Beispiel verwendet dann allowElement()
, um zusätzlich <span>
-Elemente zu erlauben, allowAttribute()
, um das Attribut id
auf jedem Element zu erlauben, und die replaceElementWithChildren()
-Methode, um festzulegen, dass <b>
-Elemente durch ihren inneren Inhalt ersetzt werden sollen (dies ist eine Art "Erlauben", da Sie ausdrücklich einige Entitäten angeben, die behalten werden sollen).
Abschließend 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 "Entfernen"-Sanitizers
Dieses Beispiel zeigt, wie Sie einen "Entfernen-Sanitizer" erstellen könnten, der Elemente zum Entfernen aus dem Eingabematerial spezifiziert.
Der Code verwendet zuerst den Sanitizer()
-Konstruktor, um einen Sanitizer
zu erstellen, wobei ein SanitizerConfig
spezifiziert wird, das das Element <span>
und <script>
entfernt.
Wir verwenden dann removeElement()
, um <h6>
zum Array der zu entfernenden Elemente hinzuzufügen, und removeAttribute()
, um lang
aus der Attributliste zu entfernen. Wir entfernen auch Kommentare.
const sanitizer = new Sanitizer({ removeElements: ["span", "script"] });
sanitizer.removeElement("h6");
sanitizer.removeAttribute("lang");
sanitizer.setComments(false);
Spezifikationen
Specification |
---|
HTML Sanitizer API # sanitizer |