Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Sanitizer

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die Sanitizer-Schnittstelle der HTML Sanitizer API definiert ein Konfigurationsobjekt, das spezifiziert, 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 den gleichen Sanitisierungs-Methoden verwendet werden:

Beachten Sie, dass Sanitizer erwartungsgemäß effizienter ist, um bei Bedarf wiederverwendet und modifiziert zu werden.

Konstruktoren

Sanitizer()

Erstellt und gibt ein Sanitizer-Objekt zurück, optional mit benutzerdefiniertem Sanitisierungsverhalten, das in einer SanitizerConfig definiert ist.

Instanzmethoden

Sanitizer.allowElement()

Setzt ein Element als vom Sanitizer erlaubt, optional mit einem Array von Attributen, die erlaubt oder nicht erlaubt sind.

Sanitizer.get()

Gibt die aktuelle Sanitizer-Konfiguration als SanitizerConfig-Dictionary-Instanz zurück.

Sanitizer.removeElement()

Setzt ein Element so, dass es vom Sanitizer entfernt wird.

Sanitizer.removeUnsafe()

Aktualisiert die Sanitizer-Konfiguration so, dass jegliches XSS-unsichere HTML entfernt wird.

Sanitizer.replaceElementWithChildren()

Setzt ein Element so, dass es durch seine Kind-HTML-Elemente ersetzt wird.

Sanitizer.allowAttribute()

Setzt ein Attribut als auf jedem Element erlaubt.

Sanitizer.removeAttribute()

Setzt ein Attribut so, dass es von jedem Element entfernt wird.

Sanitizer.setComments()

Legt fest, ob Kommentare vom Sanitizer erlaubt oder entfernt werden.

Sanitizer.setDataAttributes()

Legt fest, ob Dateneigenschaften auf Elementen vom Sanitizer erlaubt oder entfernt werden.

Beispiele

Für weitere Beispiele sehen Sie die HTML Sanitizer API und die einzelnen Methoden. Nachfolgend zeigen wir einige Beispiele, wie Sie verschiedene Sanitizer-Konfigurationen erstellen könnten.

Erstellen eines Standard-Sanitizers

Der Standard-Sanitizer wird wie unten gezeigt konstruiert.

js
const sanitizer = new Sanitizer();

Die XSS-sicheren Sanitisierungs-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.

js
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: einen Sanitizer, der nur eine Teilmenge von Attributen und Elementen zulässt.

Der Code verwendet zunächst 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 zusätzlich <span>-Elemente zuzulassen, allowAttribute(), um das id-Attribut auf jedem Element zuzulassen, und die replaceElementWithChildren()-Methode, um festzulegen, dass <b>-Elemente durch ihren inneren Inhalt ersetzt werden sollen (dies ist eine Art von "Allow", da Sie explizit einige Entitäten spezifizieren, die beibehalten werden sollen). Schließlich geben wir an, dass Kommentare beibehalten 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, der angibt, welche Elemente aus der Eingabe entfernt werden sollen.

Der Code verwendet zunächst den Sanitizer() Konstruktor, um einen Sanitizer zu erstellen, wobei eine SanitizerConfig angegeben wird, 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 Attributliste zu entfernen. Wir entfernen auch 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