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

View in English Always switch to English

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 den DOM. Solche APIs sind bekannt als Injektionsstellen und könnten ein Einfallstor für Cross-Site Scripting (XSS) Angriffe sein, wenn die Eingabe ursprünglich von einem Angreifer stammt.

Sie können dieses Risiko mindern, indem Sie immer TrustedHTML Objekte statt Zeichenfolgen übergeben und vertrauenswürdige Typen durchsetzen. Siehe Sicherheitsüberlegungen für weitere Informationen.

Hinweis: Document.parseHTML() sollte fast immer statt dieser Methode verwendet werden — in Browsern, die sie unterstützen — da sie stets XSS-unsichere HTML-Entitäten entfernt.

Die parseHTMLUnsafe() statische Methode des Document Objekts wird verwendet, um HTML-Eingaben zu analysieren und 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 Instanz oder ein Zeichenfolgen-Objekt, das das zu analysierende HTML definiert.

options Optional

Ein Optionsobjekt mit den folgenden optionalen Parametern:

sanitizer Optional

Ein Sanitizer oder SanitizerConfig Objekt, das festlegt, welche Elemente der Eingabe erlaubt oder entfernt werden sollen. Dies kann auch eine Zeichenfolge mit dem Wert "default" sein, die einen Sanitizer mit der Standardkonfiguration (XSS-sicher) anwendet. Wenn nicht angegeben, wird kein Sanitizer verwendet.

Beachten Sie, dass generell ein Sanitizer effizienter als eine SanitizerConfig sein soll, wenn die Konfiguration wiederverwendet werden soll.

Rückgabewert

Ein Document.

Ausnahmen

TypeError

Diese wird ausgelöst, wenn:

  • html eine Zeichenfolge übergeben wird, wenn vertrauenswürdige Typen durch eine CSP durchgesetzt werden und keine Standardrichtlinie definiert ist.
  • options.sanitizer einen der folgenden Werte erhält:
    • Einen Wert, der kein Sanitizer, SanitizerConfig oder Zeichenfolge ist.
    • Nicht normalisierte SanitizerConfig (eine, die sowohl "erlaubte" als auch "entfernte" Konfigurationseinstellungen enthält).
    • Eine Zeichenfolge, die nicht den Wert "default" hat.

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 Content-Typ von "text/html", einen Zeichensatz von UTF-8 und eine URL von "about:blank" haben.

Das Eingabe-HTML kann deklarative Shadow Roots enthalten. Wenn der HTML-String mehr als eine deklarative Shadow Root in einem bestimmten Shadow-Host definiert, wird nur die erste ShadowRoot erstellt — nachfolgende Deklarationen werden als <template> Elemente innerhalb dieses Shadow Roots geparst.

parseHTMLUnsafe() führt standardmäßig keine Sanitizierung durch. Wenn kein Sanitizer als Parameter übergeben wird, werden alle HTML-Entitäten in der Eingabe eingespeist.

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 dies mit einem geeigneten Sanitizer möglich ist, muss es keinen effektiven Sanitizer verwenden oder überhaupt einen verwenden! Die Methode ist daher ein mögliches Einfallstor für Cross-Site Scripting (XSS) Angriffe, bei denen potenziell unsichere Zeichenfolgen, die von einem Benutzer bereitgestellt werden, in den DOM eingefügt werden, ohne vorher sanitisiert zu werden.

Sie sollten dieses Risiko mindern, indem Sie immer TrustedHTML Objekte statt Zeichenfolgen übergeben und vertrauenswürdige Typen durchsetzen mithilfe der require-trusted-types-for CSP-Direktive. Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion übergeben wird, die die Möglichkeit hat, die Eingabe zu sanitisieren, um potenziell gefährliche Markups (wie <script> Elemente und Ereignis-Handler-Attribute) zu entfernen, bevor sie injiziert wird.

Die Nutzung von TrustedHTML ermöglicht es, die Effizienz des Sanitizierungscodes in nur wenigen Stellen zu auditieren und zu überprüfen, anstatt verteilt über alle Ihre Injektionspunkte. Sie sollten keinen Sanitizer an die Methode übergeben müssen, wenn Sie TrustedHTML verwenden.

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

Spezifikationen

Specification
HTML
# dom-parsehtmlunsafe

Browser-Kompatibilität

Siehe auch