Dokument: parseHTMLUnsafe() statische Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Warnung: Diese Methode parst ihre Eingabe als HTML und schreibt das Ergebnis in das DOM. APIs wie diese sind bekannt als Injektions-Senken und stellen potenziell eine Angriffsmöglichkeit für Cross-Site-Scripting (XSS) dar, wenn die Eingabe ursprünglich von einem Angreifer stammt.
Sie können dieses Risiko mindern, indem Sie immer TrustedHTML
-Objekte statt Strings übergeben und Trusted Types durchsetzen.
Siehe Sicherheitsüberlegungen für weitere Informationen.
Hinweis:
Document.parseHTML()
sollte fast immer anstelle dieser Methode verwendet werden – in 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 parsen 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 Instanz von
TrustedHTML
oder ein String, der das zu parsende HTML definiert. options
Optional-
Ein Optionsobjekt mit den folgenden optionalen Parametern:
sanitizer
Optional-
Ein
Sanitizer
oderSanitizerConfig
Objekt, das definiert, welche Elemente der Eingabe erlaubt oder entfernt werden. Dies kann auch ein String mit dem Wert"default"
sein, welcher einenSanitizer
mit der Standardkonfiguration (XSS-sicher) anwendet. Wenn nicht angegeben, wird kein Sanitizer verwendet.Beachten Sie, dass im Allgemeinen ein
Sanitizer
effizienter erwartet wird als eineSanitizerConfig
, wenn die Konfiguration wiederverwendet werden soll.
Rückgabewert
Ein Document
.
Ausnahmen
TypeError
-
Dies wird ausgelöst, wenn:
html
ein String übergeben wird, während Trusted Types durch eine CSP durchgesetzt werden und keine Standardrichtlinie definiert ist.options.sanitizer
eine:- Wert erhält, der kein
Sanitizer
,SanitizerConfig
oder String ist. - nicht normalisiertes
SanitizerConfig
(eine Konfiguration, die sowohl „allowed“- als auch „removed“-Einstellungen enthält). - String ist, der nicht den Wert
"default"
hat.
- Wert erhält, der kein
Beschreibung
Die parseHTMLUnsafe()
statische Methode kann verwendet werden, um eine neue Document
-Instanz zu erstellen und dabei optional unerwünschte Elemente und Attribute zu filtern.
Das resultierende Document
hat einen content type von "text/html", einen character set von UTF-8 und eine URL von "about:blank".
Die Eingabe-HTML kann declarative shadow roots enthalten.
Wenn der HTML-String mehr als eine declarative shadow root in einem bestimmten Shadow-Host definiert, wird nur der erste ShadowRoot
erstellt — nachfolgende Deklarationen werden als <template>
-Elemente innerhalb dieses Shadow-Roots geparst.
parseHTMLUnsafe()
führt standardmäßig keine Säuberung 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 die Entfernung aller XSS-unsicheren HTML-Entitäten durchsetzt (im Gegensatz zu Document.parseHTML()
).
Während es dies tun kann, wenn es mit einem geeigneten Sanitizer verwendet wird, muss es keinen effektiven Sanitizer verwenden oder überhaupt einen Sanitizer.
Die Methode ist daher eine mögliche Angriffsmöglichkeit für Cross-Site-Scripting (XSS), bei der potenziell unsichere, von einem Benutzer bereitgestellte Strings in das DOM injiziert werden, ohne vorher gesäubert zu werden.
Sie sollten dieses Risiko mindern, indem Sie immer TrustedHTML
-Objekte anstelle von Strings übergeben und durch das Erzwingen von Trusted Types mit der require-trusted-types-for
CSP-Direktive arbeiten.
Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion geleitet wird, die die Möglichkeit bietet, die Eingabe zu säubern, um potenziell gefährliches Markup (wie <script>
-Elemente und Ereignishandler-Attribute) zu entfernen, bevor es injiziert wird.
Die Verwendung von TrustedHTML
ermöglicht es, den Säuberungscode an nur wenigen Stellen zu überprüfen und sicherzustellen, dass er wirksam ist, anstatt über alle Ihre Injektionssenken verstreut zu sein.
Sie sollten keinen Sanitizer an die Methode übergeben müssen, wenn Sie TrustedHTML
verwenden.
Wenn Sie aus irgendeinem Grund TrustedHTML
(oder noch besser, setHTML()
) nicht verwenden können, dann ist die nächstsicherste Option die Verwendung von setHTMLUnsafe()
mit dem XSS-sicheren Standard Sanitizer
.
Spezifikationen
Specification |
---|
HTML> # dom-parsehtmlunsafe> |
Browser-Kompatibilität
Loading…
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