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 sind oder entfernt werden sollten, wenn HTML-Zeichenfolgen in ein Element
oder ein ShadowRoot
eingefügt oder wenn eine HTML-Zeichenfolge in ein Document
geparst wird.
Eine Sanitizer
-Instanz ist im Wesentlichen ein Wrapper um ein SanitizerConfig
und kann als Konfigurationsalternative in denselben Sanitisierungsmethoden übergeben werden:
setHTML()
odersetHTMLUnsafe()
aufElement
.setHTML()
odersetHTMLUnsafe()
aufShadowRoot
.Document.parseHTML()
oderDocument.parseHTMLUnsafe()
statische Methoden.
Beachten Sie, dass Sanitizer
erwartet wird, effizienter zur Anpassung und Änderung wiederverwendet zu werden, wenn nötig.
Konstruktoren
Sanitizer()
Experimentell-
Erstellt und gibt ein
Sanitizer
-Objekt zurück, optional mit benutzerdefiniertem Sanitisierungsverhalten, das in einemSanitizerConfig
definiert 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 Dictionary-Instanz vonSanitizerConfig
zurück. Sanitizer.removeElement()
Experimentell-
Legt ein Element fest, das vom Sanitizer entfernt werden soll.
Sanitizer.removeUnsafe()
Experimentell-
Aktualisiert die Sanitizer-Konfiguration so, dass sämtliches XSS-unsicheres 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 als auf jedem Element erlaubt fest.
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 verschiedene Sanitizer-Konfigurationen erstellen könnten.
Erstellen eines Standardsanitizers
Der Standard-Sanitizer wird wie unten gezeigt erstellt.
const sanitizer = new Sanitizer();
Die XSS-sicheren Sanitisierungsmethoden erstellen denselben Sanitizer automatisch, wenn keine Optionen übergeben werden.
Erstellen eines leeren Sanitizers
Um einen leeren Sanitizer zu erstellen, übergeben Sie dem Konstruktor ein leeres Objekt. Die resultierende Sanitizer-Konfiguration ist 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 erlaubt.
Der Code verwendet zuerst den Sanitizer()
Konstruktor, um einen Sanitizer
zu erstellen, und spezifiziert eine SanitizerConfig
, die die Elemente <div>
, <p>
und <script>
erlaubt.
Das Beispiel verwendet dann allowElement()
, um zusätzlich <span>
-Elemente zu erlauben, allowAttribute()
, um das id
-Attribut 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 explizit einige Entitäten zum Behalten angeben). 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 "Entfernen"-Sanitizers
Dieses Beispiel zeigt, wie Sie einen "Entfernen-Sanitizer" erstellen könnten, indem Sie Elemente angeben, die aus dem Eingabedokument entfernt werden sollen.
Der Code verwendet zuerst den Sanitizer()
Konstruktor, um einen Sanitizer
zu erstellen und spezifiziert eine SanitizerConfig
, die die Elemente <span>
und <script>
entfernt. Dann verwenden wir removeElement()
, um <h6>
zur Liste der zu entfernenden Elemente hinzuzufügen, und removeAttribute()
, um lang
von der Attributsliste 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> |
Browser-Kompatibilität
Loading…