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:

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 einer SanitizerConfig 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 als SanitizerConfig-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.

js
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.

js
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.

js
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.

js
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