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 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 ein SanitizerConfig und kann als Konfigurationsalternative in denselben Sanitization-Methoden verwendet werden:

Beachten Sie, dass Sanitizer voraussichtlich effizienter ist, wiederverwendet und bei Bedarf modifiziert zu werden.

Konstruktoren

Sanitizer() Experimentell

Erstellt und gibt ein Sanitizer-Objekt zurück, optional mit einem in einem SanitizerConfig definierten benutzerdefinierten Bereinigungsverhalten.

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 Instanz eines SanitizerConfig-Dictionaries zurück.

Sanitizer.removeElement() Experimentell

Legt ein Element als vom Sanitizer zu entfernend fest.

Sanitizer.removeUnsafe() Experimentell

Aktualisiert die Sanitizer-Konfiguration, sodass unsicheres XSS-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 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. Im Folgenden zeigen wir einige Beispiele, wie Sie unterschiedliche Sanitizer-Konfigurationen erstellen können.

Erstellen eines Standardsanitizers

Der Standardsanitizer wird wie folgt erstellt.

js
const sanitizer = new Sanitizer();

Die XSS-sicheren Sanitization-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 "Erlauben"-Sanitizers

Dieses Beispiel zeigt, wie Sie einen "Erlauben-Sanitizer" erstellen könnten: einen Sanitizer, der nur eine Teilmenge von Attributen und Elementen zulässt.

Der Code verwendet zuerst den Sanitizer()-Konstruktor, um einen Sanitizer zu erstellen, wobei ein SanitizerConfig spezifiziert wird, das das Element <div>, <p> und <script> zulässt.

Das Beispiel verwendet dann allowElement(), um zusätzlich <span>-Elemente zu erlauben, allowAttribute(), um das Attribut id 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 ausdrücklich einige Entitäten angeben, die behalten werden sollen). Abschließend 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, der Elemente zum Entfernen aus dem Eingabematerial spezifiziert.

Der Code verwendet zuerst den Sanitizer()-Konstruktor, um einen Sanitizer zu erstellen, wobei ein SanitizerConfig spezifiziert wird, das das Element <span> und <script> entfernt. Wir verwenden dann removeElement(), um <h6> zum Array der zu entfernenden Elemente hinzuzufügen, und removeAttribute(), um lang aus 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