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
Document.parseHTMLUnsafe(input) Document.parseHTMLUnsafe(input, options) Parameter
input-
Eine
TrustedHTMLInstanz oder ein Zeichenfolgen-Objekt, das das zu analysierende HTML definiert. optionsOptional-
Ein Optionsobjekt mit den folgenden optionalen Parametern:
sanitizerOptional-
Ein
SanitizeroderSanitizerConfigObjekt, das festlegt, welche Elemente der Eingabe erlaubt oder entfernt werden sollen. Dies kann auch eine Zeichenfolge mit dem Wert"default"sein, die einenSanitizermit der Standardkonfiguration (XSS-sicher) anwendet. Wenn nicht angegeben, wird kein Sanitizer verwendet.Beachten Sie, dass generell ein
Sanitizereffizienter als eineSanitizerConfigsein soll, wenn die Konfiguration wiederverwendet werden soll.
Rückgabewert
Ein Document.
Ausnahmen
TypeError-
Diese wird ausgelöst, wenn:
htmleine Zeichenfolge übergeben wird, wenn vertrauenswürdige Typen durch eine CSP durchgesetzt werden und keine Standardrichtlinie definiert ist.options.sanitizereinen der folgenden Werte erhält:- Einen Wert, der kein
Sanitizer,SanitizerConfigoder Zeichenfolge ist. - Nicht normalisierte
SanitizerConfig(eine, die sowohl "erlaubte" als auch "entfernte" Konfigurationseinstellungen enthält). - Eine Zeichenfolge, die nicht den Wert
"default"hat.
- Einen Wert, der kein
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
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