Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Dokumentation: parseHTMLUnsafe() statische Methode
Baseline 2025Newly 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 alsInjection Sink und sind potenziell ein Vektor fürCross-Site Scripting (XSS) Angriffe, wenn die Eingabe ursprünglich von einem Angreifer stammt.
Sie können dieses Risiko mindern, indem Sie immerTrustedHTML-Objekte anstelle von Strings verwenden undvertrauenswürdige Typen durchsetzen.SieheSicherheitsü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.
DieparseHTMLUnsafe() statische Methode desDocument-Objekts wird verwendet, um HTML-Eingaben zu analysieren, dabei optional unerwünschte HTML-Elemente und -Attribute zu filtern, um eine neueDocument Instanz zu erstellen.
In diesem Artikel
Syntax
Document.parseHTMLUnsafe(input)Document.parseHTMLUnsafe(input, options)Parameter
inputEine
TrustedHTMLoder String-Instanz, die definiert, welches HTML analysiert werden soll.optionsOptionalEin Optionsobjekt mit den folgenden optionalen Parametern:
sanitizerOptionalEin
SanitizeroderSanitizerConfigObjekt, das definiert, welche Elemente der Eingabe erlaubt oder entfernt werden.Dies kann auch ein String mit dem Wert"default"sein, welcher einenSanitizermit der Standardkonfiguration (XSS-sicher) anwendet.Falls nicht angegeben, wird kein Sanitizer verwendet.Beachten Sie, dass im Allgemeinen ein
Sanitizereffizienter sein dürfte als eineSanitizerConfig, wenn die Konfiguration wiederverwendet werden soll.
Rückgabewert
EinDocument.
Ausnahmen
TypeErrorDiese wird ausgelöst, wenn:
htmlein String ist, wennTrusted Typesdurch eine CSP durchgesetzt werden, und keine Standardrichtlinie definiert ist.options.sanitizereinen:SanitizerConfigerhält, der nichtgültig ist.Zum Beispiel eine Konfiguration, die sowohl "allowed" als auch "removed" Konfigurationseinstellungen enthält.- String, der nicht den Wert
"default"hat. - Wert, der kein
Sanitizer,SanitizerConfigoder String ist.
Beschreibung
DieparseHTMLUnsafe() statische Methode kann verwendet werden, um eine neueDocument-Instanz zu erstellen und dabei optional unerwünschte Elemente und Attribute herauszufiltern.Das resultierendeDocument wird einencontent type von "text/html", einencharacter set von UTF-8 und eine URL von "about:blank" haben.
Die eingehende HTML kanndeklarative Shadowroots beinhalten.Wenn die HTML-Zeichenkette mehr als einedeklarative Shadowroot in einem bestimmten Shadow Host definiert, dann wird nur das ersteShadowRoot erstellt — nachfolgende Deklarationen werden als<template>-Elemente innerhalb dieser Shadowroot analysiert.
parseHTMLUnsafe() führt standardmäßig keine Sanitärmaßnahmen durch.Wenn keinsanitizer 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 zuDocument.parseHTML()).Obwohl es dies tun kann, wenn es mit einem geeignetensanitizer verwendet wird, muss es keinen effektivensanitizer verwenden — oder überhaupt keinen!Die Methode ist daher ein möglicher Vektor fürCross-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 immerTrustedHTML-Objekte anstelle von Strings verwenden undvertrauenswürdige Typen durchsetzen unter Verwendung derrequire-trusted-types-for CSP-Direktive.Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion geleitet wird, die die Gelegenheit hat, die Eingabe zusanitizen, um potenziell gefährlichen Markup (wie<script>-Elemente und Ereignishandler-Attribute) zu entfernen, bevor sie injiziert wird.
Die Verwendung vonTrustedHTML 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 keinensanitizer an die Methode übergeben müssen, wenn SieTrustedHTML verwenden.
Wenn Sie aus irgendeinem GrundTrustedHTML (oder sogar noch besser,setHTML()) nicht verwenden können, dann ist die nächst sicherste Option die Verwendung vonsetHTMLUnsafe() 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