Dokument: parseHTMLUnsafe() statische Methode
Baseline
2025
Newly available
Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Warnung: Diese Methode analysiert ihre Eingabe als HTML und schreibt das Ergebnis in das DOM. Solche APIs sind als Injection Sinks bekannt und sind potenziell ein Vektor für Cross-Site Scripting (XSS)-Angriffe, wenn die Eingabe ursprünglich von einem Angreifer stammt.
Sie können dieses Risiko mindern, indem Sie immer TrustedHTML-Objekte anstelle von Strings verwenden und vertrauenswürdige Typen durchsetzen.
Weitere Informationen finden Sie unter Sicherheitsüberlegungen.
Hinweis:
Document.parseHTML() sollte fast immer anstelle dieser Methode verwendet werden — auf Browsern, die es unterstützen — da es immer XSS-unsichere HTML-Entitäten entfernt.
Die parseHTMLUnsafe() statische Methode des Document-Objekts wird verwendet, um HTML-Eingaben zu analysieren, wobei optional unerwünschte HTML-Elemente und Attribute gefiltert werden, um eine neue Document-Instanz zu erstellen.
Syntax
Document.parseHTMLUnsafe(input)
Document.parseHTMLUnsafe(input, options)
Parameter
input-
Eine
TrustedHTML-Instanz oder ein String, der das zu parsende HTML definiert. optionsOptional-
Ein Optionsobjekt mit den folgenden optionalen Parametern:
sanitizerOptional-
Ein
Sanitizer- oderSanitizerConfig-Objekt, das definiert, welche Elemente der Eingabe erlaubt oder entfernt werden. Dies kann auch ein String mit dem Wert"default"sein, der einenSanitizermit der (XSS-sicheren) Standard-Sanitizer-Konfiguration anwendet. Wenn nicht angegeben, wird keinsanitizerverwendet.Beachten Sie, dass es effizienter sein kann, einen
Sanitizerzu verwenden und ihn bei Bedarf zu ändern, wenn Sie dieselbe Konfiguration mehrfach verwenden.
Rückgabewert
Ein Document.
Ausnahmen
TypeError-
Dies wird ausgelöst, wenn:
htmlein String übergeben wird, wenn Trusted Types durch eine CSP erzwungen werden und keine Standardrichtlinie definiert ist.options.sanitizerübergeben wird:- Eine
SanitizerConfig, die nicht gültig ist. Zum Beispiel eine Konfiguration, die sowohl "erlaubte" als auch "entfernte" Konfigurationseinstellungen enthält. - Ein String, der nicht den Wert
"default"hat. - Ein Wert, der weder ein
Sanitizer, noch einSanitizerConfigoder ein String ist.
- Eine
Beschreibung
Die parseHTMLUnsafe() statische Methode kann verwendet werden, um eine neue Document-Instanz zu erstellen und optional unerwünschte Elemente und Attribute herauszufiltern.
Das resultierende Document wird einen Inhaltstyp von "text/html", einen Zeichensatz von UTF-8 und eine URL von "about:blank" haben.
Die Eingabe-HTML kann deklarative Shadow Roots enthalten.
Wenn der HTML-String mehr als einen deklarativen Shadow Root in einem bestimmten Shadow-Host definiert, dann wird nur der erste ShadowRoot erstellt — nachfolgende Deklarationen werden als <template>-Elemente innerhalb dieses Shadow Roots geparst.
parseHTMLUnsafe() führt standardmäßig keine Bereinigung durch.
Wenn kein sanitizer als Parameter übergeben wird, werden alle HTML-Entitäten in der Eingabe eingefügt.
Sicherheitsüberlegungen
Das Suffix "Unsafe" im Methodennamen zeigt an, dass es nicht erzwingt, dass alle XSS-unsicheren HTML-Entitäten entfernt werden (im Gegensatz zu Document.parseHTML()).
Während dies möglich ist, wenn mit einem geeigneten sanitizer verwendet, muss es keinen effektiven sanitizer verwenden oder überhaupt keinen!
Die Methode ist daher ein möglicher Vektor für Cross-Site Scripting (XSS)-Angriffe, bei denen potenziell unsichere Strings, die von einem Benutzer bereitgestellt werden, ohne vorherige Bereinigung in das DOM eingefügt werden.
Sie sollten dieses Risiko mindern, indem Sie immer TrustedHTML-Objekte anstelle von Strings übergeben und vertrauenswürdige Typen durchsetzen mithilfe der require-trusted-types-for CSP-Direktive.
Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion geleitet wird, die die Möglichkeit hat, die Eingabe zu bereinigen, um potenziell gefährliches Markup (wie <script>-Elemente und Event-Handler-Attribute) zu entfernen, bevor es eingefügt wird.
Die Verwendung von TrustedHTML ermöglicht es, die Wirksamkeit der Bereinigungscode-Nutzung an nur wenigen Stellen zu überprüfen und zu kontrollieren, anstatt über alle Ihre Injection Sinks verstreut zu sein.
Sie sollten keinen Filter an die Methode übergeben müssen, wenn Sie TrustedHTML verwenden.
Wenn Sie aus irgendeinem Grund nicht TrustedHTML verwenden können (oder besser noch setHTML()), dann ist die nächst sicherste Option, setHTMLUnsafe() mit der XSS-sicheren Standard-Sanitizer-Konfiguration zu verwenden.
Spezifikationen
| Specification |
|---|
| HTML> # dom-parsehtmlunsafe> |
Browser-Kompatibilität
Siehe auch
Document.parseHTML()Element.setHTML()undElement.setHTMLUnsafe()ShadowRoot.setHTML()undShadowRoot.setHTMLUnsafe()DOMParser.parseFromString()zum Parsen von HTML oder XML in einen DOM-Baum- HTML Sanitizer API