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

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

js
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 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. Wenn nicht angegeben, wird kein Sanitizer verwendet.

Beachten Sie, dass im Allgemeinen ein Sanitizer effizienter erwartet wird als eine SanitizerConfig, wenn die Konfiguration wiederverwendet werden soll.

Rückgabewert

Ein Document.

Ausnahmen

TypeError

Dies 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 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

Siehe auch