Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Warnung: Diese Methode analysiert ihre Eingabe als HTML und schreibt das Ergebnis in das DOM. APIs wie diese sind bekannt als injection sinks und sind potenziell ein Vektor für Cross-Site-Scripting (XSS) Angriffe, wenn die Eingabe ursprünglich von einem Angreifer stammt.
Sie können dieses Risiko mindern, indem Sie immer TrustedHTML-Objekte anstelle von Strings übergeben und vertrauenswürdige Typen durchsetzen. Siehe Sicherheitsüberlegungen für weitere Informationen.
Die parseFromString() Methode der DOMParser Schnittstelle analysiert eine Eingabe, die entweder HTML oder XML enthält, und gibt ein Document mit dem im contentType Attribut angegebenen Typ zurück.
Hinweis: Die statische Methode Document.parseHTMLUnsafe() bietet eine ergonomische Alternative zur Analyse von HTML-Markup in ein Document.
Eine TrustedHTML Instanz oder ein String, der das zu analysierende HTML definiert. Das Markup muss ein HTML, XML, XHTML oder SVG Dokument enthalten.
mimeTypeEin String, der spezifiziert, ob der XML-Parser oder der HTML-Parser verwendet wird, um den String zu analysieren.
Erlaubte Werte sind:
Ein Document mit einem contentType, das dem angegebenen mimeType entspricht.
Hinweis: Der Browser kann tatsächlich ein HTMLDocument oder ein XMLDocument Objekt zurückgeben. Diese leiten sich aus Document ab und fügen keine Attribute hinzu: sie sind im Wesentlichen gleichwertig.
Dies wird ausgelöst, wenn:
Die parseFromString() Methode analysiert eine Eingabe, die entweder HTML oder XML enthält, und gibt ein Document mit einem contentType, das dem mimeType entspricht, zurück. Dieses Document enthält ein vollständiges In-Memory-DOM, das vom Hauptdokument auf der zugehörigen Seite getrennt ist.
Wenn der mimeType text/html ist, wird die Eingabe als HTML analysiert und <script> Elemente sind als nicht ausführbar markiert, Ereignisse werden nicht ausgelöst und Ereignishandler werden nicht aufgerufen, um Inline-Skripte auszuführen. Obwohl das Dokument Ressourcen herunterladen kann, die in <iframe> und <img> Elementen spezifiziert sind, ist es im Wesentlichen inert. Dies ist nützlich, weil Sie HTML-Eingaben analysieren können, die declarative shadow roots enthalten, und Operationen am Dokument durchführen können, ohne die sichtbare Seite zu beeinflussen. Zum Beispiel können Sie dies verwenden, um den Eingabebaum zu bereinigen und Teile der Eingabe bei Bedarf in das sichtbare DOM zu injizieren.
Für die anderen erlaubten Werte (text/xml, application/xml, application/xhtml+xml und image/svg+xml) wird die Eingabe als XML analysiert. Dies ist nützlich, wenn Sie XML-Dateien importieren, ihre Struktur validieren und Daten extrahieren möchten. Wenn die Eingabe kein wohlgeformtes XML darstellt, enthält das zurückgegebene Dokument ein <parsererror> Element, das die Art des Analysefehlers beschreibt.
Nicht erlaubte mimeType Werte führen zu einem TypeError.
Diese Methode analysiert ihre Eingabe in ein separates In-Memory-DOM, wobei alle <script> Elemente deaktiviert und Ereignishandler deaktiviert werden. Obwohl das zurückgegebene Dokument im Wesentlichen inert ist, können Ereignishandler und Skripte in seinem DOM ausgeführt werden, wenn sie in das sichtbare DOM eingefügt werden. Die Methode ist daher ein potenzieller Vektor für Cross-Site-Scripting (XSS) Angriffe, bei denen potenziell unsichere Eingaben zuerst ohne Bereinigung in ein Document analysiert und dann in das sichtbare/aktive DOM injiziert werden, wo der Code ausgeführt werden kann.
Sie sollten dieses Risiko mindern, indem Sie immer TrustedHTML Objekte anstelle von Strings übergeben und vertrauenswürdige Typen mit der require-trusted-types-for CSP-Direktive durchsetzen. Dies stellt sicher, dass die Eingabe durch eine Transformationsfunktion geht, die die Möglichkeit hat, die Eingabe zu bereinigen, um potenziell gefährliches Markup (wie <script> Elemente und Ereignishandler-Attribute) zu entfernen, bevor es injiziert wird.
Die Verwendung von TrustedHTML ermöglicht es, zu prüfen und zu überprüfen, dass der Bereinigungscode in nur wenigen Stellen wirksam ist, anstatt überall in Ihren Injektionen verstreut zu sein. Sie sollten keinen Bereiniger an die Methode übergeben müssen, wenn Sie TrustedHTML verwenden.
Beachten Sie, dass selbst wenn Sie die Eingabe von Elementen und Attributen bereinigen, die Code ausführen können, Sie dennoch vorsichtig sein müssen, wenn Sie Benutzereingaben verwenden. Zum Beispiel könnte Ihre Seite Daten in einem XML-Dokument verwenden, um Dateien abzurufen, die dann ausgeführt werden.
In diesem Beispiel analysieren wir sicher eine potenziell schädliche HTML-Eingabe und injizieren sie dann in das DOM der sichtbaren Seite.
Um das Risiko von XSS zu verringern, erstellen wir ein TrustedHTML Objekt aus dem String, der das HTML enthält. Vertrauenswürdige Typen werden noch nicht von allen Browsern unterstützt, daher definieren wir zuerst den trusted types tinyfill. Dies fungiert als transparenter Ersatz für die trusted types JavaScript-API:
Als nächstes erstellen wir eine TrustedTypePolicy, die eine createHTML() definiert, um einen Eingabestring in TrustedHTML Instanzen zu verwandeln. Häufig verwenden Implementierungen von createHTML() eine Bibliothek wie DOMPurify, um die Eingabe zu bereinigen, wie unten gezeigt:
Dann verwenden wir dieses policy Objekt, um ein TrustedHTML Objekt aus dem potenziell unsicheren Eingabestring zu erstellen und es in ein Document zu analysieren. Beachten Sie, dass das resultierende Document ein vollständiges HTML-Dokument mit einem Root-<html>, <head> und <body> darstellt, obwohl die Eingabe diese Elemente nicht enthält:
Das safeDocument enthält nun ein DOM, das gemäß unserer Richtlinie von schädlichen Elementen bereinigt ist. Unten verwenden wir Element.replaceWith(), um den body des sichtbaren DOMs mit dem body unseres Dokuments zu ersetzen: Skripte im neuen body werden ausgeführt, ebenso wie der Code, wenn Ereignishandler ausgelöst werden.
Der untenstehende Code zeigt, wie Sie die Methode verwenden, um die jeweiligen Inhaltstypen zu parsen. Während Sie in echtem Code vertrauenswürdige Typen verwenden sollten, werden sie hier der Kürze halber ausgelassen.
Beachten Sie, dass die MIME-Typen application/xml und image/svg+xml oben funktional identisch sind — der letztere beinhaltet keine SVG-spezifischen Parsingregeln.
Wenn der XML-Parser mit einem String verwendet wird, der kein wohlgeformtes XML darstellt, enthält das von parseFromString zurückgegebene XMLDocument ein <parsererror> Element, das die Art des Parsing-Fehlers beschreibt.
Zusätzlich könnte der Parsing-Fehler in der JavaScript-Konsole des Browsers gemeldet werden.
| HTML # dom-domparser-parsefromstring-dev |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.