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

View in English Always switch to English

Dokumentation: 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 bekannt als Injection Sink 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. Siehe Sicherheitsüberlegungen für mehr Informationen.

Hinweis: Document.parseHTML() sollte fast immer anstelle dieser Methode verwendet werden — auf unterstützten Browsern — da es immer XSS-unsichere HTML-Entitäten entfernt.

Die parseHTMLUnsafe() statische Methode des Document-Objekts wird verwendet, um HTML-Eingaben zu analysieren, dabei optional unerwünschte HTML-Elemente und -Attribute zu filtern, um eine neue Document Instanz zu erstellen.

Syntax

js
Document.parseHTMLUnsafe(input)
Document.parseHTMLUnsafe(input, options)

Parameter

input

Eine TrustedHTML oder String-Instanz, die definiert, welches HTML analysiert werden soll.

options Optional

Ein Optionsobjekt mit den folgenden optionalen Parametern:

sanitizer Optional

Ein Sanitizer oder SanitizerConfig Objekt, das definiert, welche Elemente der Eingabe erlaubt oder entfernt werden. Dies kann auch ein String mit dem Wert "default" sein, welcher einen Sanitizer mit der Standardkonfiguration (XSS-sicher) anwendet. Falls nicht angegeben, wird kein Sanitizer verwendet.

Beachten Sie, dass im Allgemeinen ein Sanitizer effizienter sein dürfte als eine SanitizerConfig, wenn die Konfiguration wiederverwendet werden soll.

Rückgabewert

Ein Document.

Ausnahmen

TypeError

Diese wird ausgelöst, wenn:

Beschreibung

Die parseHTMLUnsafe() statische Methode kann verwendet werden, um eine neue Document-Instanz zu erstellen und dabei optional unerwünschte Elemente und Attribute herauszufiltern. Das resultierende Document wird einen content type von "text/html", einen character set von UTF-8 und eine URL von "about:blank" haben.

Die eingehende HTML kann deklarative Shadowroots beinhalten. Wenn die HTML-Zeichenkette mehr als eine deklarative Shadowroot in einem bestimmten Shadow Host definiert, dann wird nur das erste ShadowRoot erstellt — nachfolgende Deklarationen werden als <template>-Elemente innerhalb dieser Shadowroot analysiert.

parseHTMLUnsafe() führt standardmäßig keine Sanitärmaßnahmen durch. Wenn kein sanitizer als Parameter übergeben wird, werden alle HTML-Entitäten in der Eingabe injiziert.

Sicherheitsüberlegungen

Das Suffix "Unsafe" im Methodennamen zeigt an, dass es nicht alle XSS-unsicheren HTML-Entitäten entfernt (im Gegensatz zu Document.parseHTML()). Obwohl es dies tun kann, wenn es mit einem geeigneten sanitizer verwendet wird, 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, in das DOM injiziert werden, ohne zuvor desinfiziert zu werden.

Sie sollten das Risiko mindern, indem Sie immer TrustedHTML-Objekte anstelle von Strings verwenden und vertrauenswürdige Typen durchsetzen unter Verwendung der require-trusted-types-for CSP-Direktive. Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion geleitet wird, die die Gelegenheit hat, die Eingabe zu sanitizen, um potenziell gefährlichen Markup (wie <script>-Elemente und Ereignishandler-Attribute) zu entfernen, bevor sie injiziert wird.

Die Verwendung von TrustedHTML ermöglicht es, die Effektivität des Desinfizierungscodes an nur wenigen Stellen zu überprüfen und zu auditieren, anstatt verstreut über alle Ihre Injection-Sink. Sie sollten keinen sanitizer an die Methode übergeben müssen, wenn Sie TrustedHTML verwenden.

Wenn Sie aus irgendeinem Grund TrustedHTML (oder sogar noch besser, setHTML()) nicht verwenden können, dann ist die nächst sicherste Option die Verwendung von setHTMLUnsafe() mit dem XSS-sicheren Standard-Sanitizer.

Spezifikationen

Specification
HTML
# dom-parsehtmlunsafe

Browser-Kompatibilität

Siehe auch