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.

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:

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 einem SanitizerConfig 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 von SanitizerConfig 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.

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 dem Konstruktor ein leeres Objekt. Die resultierende Sanitizer-Konfiguration ist unten gezeigt.

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

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

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