Sanitizer
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 sollen, wenn HTML-Strings in ein Element
oder ShadowRoot
eingefügt oder ein HTML-String in ein Document
geparst werden.
Eine Sanitizer
-Instanz ist im Wesentlichen ein Wrapper um eine SanitizerConfig
und kann als Konfigurationsalternative in den gleichen Sanitisierungsmethoden verwendet werden:
setHTMLUnsafe()
odersetHTMLUnsafe()
aufElement
.setHTMLUnsafe()
odersetHTMLUnsafe()
aufShadowRoot
.Document.parseHTMLUnsafe()
oderDocument.parseHTML()
statische Methoden.
Beachten Sie, dass Sanitizer
voraussichtlich effizienter wiederzuverwenden und bei Bedarf zu ändern ist.
Konstruktoren
Sanitizer()
Experimentell-
Erstellt und gibt ein
Sanitizer
-Objekt zurück, optional mit benutzerdefiniertem Sanitisierungsverhalten, das in einerSanitizerConfig
definiert ist.
Instanzmethoden
Sanitizer.allowElement()
Experimentell-
Legt ein Element fest, das vom Sanitizer erlaubt ist, optional mit einem Array von Attributen, die erlaubt oder nicht erlaubt sind.
Sanitizer.get()
Experimentell-
Gibt die aktuelle
Sanitizer
-Konfiguration alsSanitizerConfig
-Dictionary-Instanz zurück. Sanitizer.removeElement()
Experimentell-
Legt ein Element fest, das vom Sanitizer entfernt werden soll.
Sanitizer.removeUnsafe()
Experimentell-
Aktualisiert die Sanitisierungskonfiguration so, dass jegliches XSS-gefährliche HTML entfernt wird.
Sanitizer.replaceElementWithChildren()
Experimentell-
Legt fest, dass ein Element durch seine untergeordneten 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. Unten zeigen wir einige Beispiele, wie Sie unterschiedliche Sanitizer-Konfigurationen erstellen könnten.
Erstellen eines Standardsanitizers
Der Standardsanitizer wird wie unten gezeigt konstruiert.
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 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
In diesem Beispiel wird gezeigt, wie Sie einen "Allow-Sanitizer" erstellen können: einen Sanitizer, der nur eine Teilmenge von Attributen und Elementen erlaubt.
Der Code verwendet zunächst den Sanitizer()
-Konstruktor, um einen Sanitizer
zu erstellen und eine SanitizerConfig
zu spezifizieren, die das Element <div>
, <p>
und <script>
erlaubt.
Das Beispiel verwendet dann allowElement()
, um <span>
-Elemente weiter zu erlauben, allowAttribute()
, um das id
-Attribut bei jedem Element zu erlauben, und die Methode replaceElementWithChildren()
, um festzulegen, dass alle <b>
-Elemente durch ihren inneren Inhalt ersetzt werden sollen (dies ist eine Art "Allow", da Sie explizit einige Entitäten angeben, die beibehalten werden sollen). Schließlich geben wir an, dass Kommentare behalten 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, um festzulegen, welche Elemente entfernt werden sollen.
Der Code verwendet zunächst den Sanitizer()
-Konstruktor, um einen Sanitizer
zu erstellen und eine SanitizerConfig
zu spezifizieren, die das Element <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 |