Element: setHTMLUnsafe() Methode
Baseline 2024Newly available
Since April 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die setHTMLUnsafe()
Methode der Element
-Schnittstelle wird verwendet, um einen HTML-String in ein DocumentFragment
zu parsen, optional unerwünschte Elemente und Attribute und solche, die nicht in den Kontext gehören, herauszufiltern, und es dann zu verwenden, um den Teilbaum des Elements im DOM zu ersetzen.
Im Gegensatz zu Element.setHTML()
wird nicht garantiert, dass XSS-ungeeignete HTML-Entitäten entfernt werden.
Syntax
setHTMLUnsafe(input)
setHTMLUnsafe(input, options)
Parameter
input
-
Ein String oder eine
TrustedHTML
-Instanz, die das zu parsende HTML definiert. options
Optional-
Ein Optionsobjekt mit den folgenden optionalen Parametern:
sanitizer
Optional-
Ein
Sanitizer
oderSanitizerConfig
Objekt, welches definiert, welche Elemente des Eingabe-Strings erlaubt oder entfernt werden. Beachten Sie, dass im Allgemeinen ein"Sanitizer
effizienter erwartet wird als einSanitizerConfig
, wenn die Konfiguration wiederverwendet werden soll. Wenn nicht angegeben, wird kein Sanitizer verwendet.
Rückgabewert
Keiner (undefined
).
Ausnahmen
TypeError
-
Dieser wird geworfen, wenn:
input
ein String ist, während Trusted Types von einer CSP erzwungen werden und keine Standardrichtlinie definiert ist.options.sanitizer
eine:- einen Wert, der kein
Sanitizer
,SanitizerConfig
oder String ist. - nicht normalisierte
SanitizerConfig
(eine, die sowohl "erlaubte" als auch "entfernte" Konfigurationseinstellungen enthält). - String, der nicht den Wert
"default"
hat.
- einen Wert, der kein
Beschreibung
Die setHTMLUnsafe()
Methode wird verwendet, um einen HTML-String in ein DocumentFragment
zu parsen, optional unerwünschte Elemente und Attribute und solche, die nicht in den Kontext gehören, herauszufiltern, und es dann zu verwenden, um den Teilbaum des Elements im DOM zu ersetzen.
Das Suffix "Unsafe" im Methodennamen zeigt an, dass die Methode zwar ermöglicht, den Eingabe-String von unerwünschten HTML-Entitäten zu filtern, sie jedoch nicht die Bereinigung oder Entfernung potenziell unsicherer XSS-bezogener Eingaben, wie z. B. -Elemente und Skript- oder Ereignis-Handler-Content-Attribute, erzwingt.
Wenn keine Sanitizer-Konfiguration im
options.sanitizer
Parameter angegeben wird, wird setHTMLUnsafe()
ohne jede Bereinigung verwendet.
Der Eingabe-HTML kann declarative shadow roots enthalten.
Wenn der HTML-String mehr als eine declarative shadow root in einem bestimmten Shadow-Host definiert, dann wird nur die erste ShadowRoot
erstellt — nachfolgende Deklarationen werden als Elemente innerhalb dieser Shadow-Root geparst.
Wie setHTML()
kann setHTMLUnsafe()
anstelle von Element.innerHTML
verwendet werden, um HTML-Strings zu parsen, die möglicherweise deklarative Shadow-Roots enthalten.
setHTMLUnsafe()
sollte anstelle von Element.setHTML()
verwendet werden, wenn potenziell unsichere HTML-Strings geparst werden müssen, die aus irgendeinem Grund XSS-unsichere Elemente oder Attribute enthalten müssen.
Wenn die zu injizierenden Strings keine unsicheren HTML-Entitäten enthalten müssen, sollten Sie immer Element.setHTML()
verwenden.
Da diese Methode nicht unbedingt Eingabestrings von XSS-unsicheren Entitäten bereinigt, sollten Eingabestrings auch unter Verwendung der Trusted Types API validiert werden. Wenn die Methode mit sowohl Trusted Types als auch einem Sanitizer verwendet wird, wird der Eingabestring durch die vertrauenswürdige Transformationsfunktion geleitet, bevor er bereinigt wird.
Beispiele
Grundlegende Nutzung
Dieses Beispiel zeigt einige Möglichkeiten, wie setHTMLUnsafe()
verwendet werden kann, um einen HTML-String zu injizieren.
// Define unsanitized string of HTML
const unsanitizedString = "abc