Webnachrichten
Webnachrichten oder Cross-Dokument-Nachrichten, ist ein API eingeführt in der Waswg HTML5 Entwurfsspezifikation, sodass Dokumente miteinander über verschiedene Ursprünge hinweg oder Quelldomänen kommunizieren können[1] während in a gerendert Webbrowser. Vor HTML5 haben Webbrowser nicht zugelassen Cross-Site-Scripting, um vor Sicherheitsangriffen zu schützen. Diese Praxis verbot die Kommunikation zwischen nicht-hostilen Seiten und erschwert das Dokumenteninteraktion jeglicher Art.[1][2] Durch mit Kreuzdokument-Messaging können Skripte über diese Grenzen hinweg interagieren und gleichzeitig ein rudimentäres Sicherheitsniveau bereitstellen.
Anforderungen und Attribute
Verwenden der Messaging -APIs POST-Meldung
Methode, einfache Textnachrichten können von einer Domäne an eine andere gesendet werden, z. von einem übergeordneten Dokument zu einem Iframe.[3] Dies erfordert, dass der Autor zuerst die erhalten Fenster
Objekt des Empfangsdokuments. Infolgedessen können Nachrichten an Folgendes veröffentlicht werden:[2]
- Andere Frames oder Iframes im Fenster des Absendungsdokuments
- Windows Das Absendungsdokument wird explizit über JavaScript -Anrufe geöffnet
- Das übergeordnete Fenster des Absendungsdokuments
- Das Fenster, das das Absendungsdokument öffnete
Die Nachricht Veranstaltung
Empfangen hat die folgenden Attribute:
-
Daten
- Die Daten oder der tatsächliche Inhalt der eingehenden Nachricht. -
Ursprung
- Der Ursprung des Absendungsdokuments. Dies enthält typischerweise das Schema, Hostname und Port. Es enthält nicht den Pfad oder die Fragmentkennung.[1] -
Quelle
- dasFensterproxy
woher das Dokument kam (das Quellfenster).
POST-Meldung
ist kein blockierender Anruf; Nachrichten werden asynchron verarbeitet.[4]
Beispiel
Bedenken Sie, dass wir dokumentieren möchten, die von geladen werden Beispiel.net
zu kommunizieren mit dokument b von geladen von Beispiel.com
In ein iframe
oder Popup -Fenster.[1] Das JavaScript Für das Dokument A wird wie folgt aussehen:
var o = dokumentieren.GetElementsByTagName("Iframe") [0]; o.ContentWindow.POST-Meldung('Hallo b', 'http://example.com/');
Der Ursprung unserer ContentWindow
Objekt wird an übergeben POST-Meldung
. Es muss mit dem übereinstimmen Ursprung
des Dokuments möchten wir mit (in diesem Fall Dokument B) kommunizieren. Andernfalls wird ein Sicherheitsfehler geworfen und das Skript wird gestoppt.[3] Das JavaScript für Dokument B wird wie folgt aussehen:
Funktion Empfänger(Veranstaltung) { wenn (Veranstaltung.Ursprung == 'http://example.net') { wenn (Veranstaltung.Daten == 'Hallo b') { Veranstaltung.Quelle.POST-Meldung("Hallo A, wie geht es dir?", Veranstaltung.Ursprung); } anders { Alarm(Veranstaltung.Daten); } } } Fenster.AddEventListener('Botschaft', Empfänger, FALSCH);
Ein Event -Listener wird eingerichtet, um Nachrichten aus Dokument A zu empfangen. Verwenden Sie die Ursprung
Eigenschaft, dann prüft es, dass die Domäne des Absenders die erwartete Domäne ist. Dokument B prüft dann die Nachricht, entweder dem Benutzer anzeigt oder wiederum mit einer eigenen Nachricht für Dokument A antwortet. Dokument A.[1]
Sicherheit
Eine schlechte Ursprungsprüfung kann ein Risiko für Anwendungen darstellen, bei denen Cross-Dokument-Nachrichten eingesetzt werden.[5] Um sich vor böswilligen Code von ausländischen Domänen zu schützen, sollten die Autoren das überprüfen Ursprung
Attribut, um sicherzustellen, dass Nachrichten aus Domänen akzeptiert werden, von denen sie erwarten, dass sie Nachrichten erhalten. Das Format eingehender Daten sollte auch überprüft werden, ob es dem erwarteten Format übereinstimmt.[1]
Die Unterstützung
Die Unterstützung für Cross-Dokument-Nachrichten gibt es in aktuellen Versionen von Internet Explorer, Mozilla Firefox, Safari, Google Chrome, Oper, Opera Mini, Opera Mobile, und Android Webbrowser.[6] Unterstützung für die API existiert in der Dreizack, Gecko, Webkit und Presto Layout -Motoren.[7]
Siehe auch
- Cross-Site-Scripting
- Cross-Site-Anfragefälschung
- Gleiche Ursprungsrichtlinie
- Cross-Origin-Ressourcenfreigabe
- JSONP
Verweise
- ^ a b c d e f Cross-Dokument-Messaging-HTML-Entwurfsstandard
- ^ a b Webkit -DOM -Programmiersthemen - Querüberschreitende Messaging[Dead Link]
- ^ a b Remy, scharf, Nachrichten, Arbeiter und Steckdosen, Einführung von HTML5, New Riders, 2011, p. 197-199
- ^ "HTML5 Web Messaging".
- ^ HTML5 -Sicherheit auf den Punkt gebracht
- ^ Wann kann ich Cross-Dokument-Nachrichten verwenden?
- ^ Eine Auswahl unterstützter Funktionen in HTML5[Dead Link]
Externe Links
- HTML5 Web Messaging -Empfehlung
- HTML5 -Web -Messaging -Spezifikation
- Cross-Dokument-Messaging-HTML-Entwurfsstandard, Waswg
- Webkit -DOM -Programmiersthemen - Querüberschreitende Messaging, Apple Developer Library, archiviert aus das Original Am 2012-06-09, abgerufen 2013-12-29
- Eng, Chris (2010-05-17), HTML5 -Sicherheit auf den Punkt gebracht, Veracode
- Wann kann ich Cross-Dokument-Nachrichten verwenden?, Kann ich benutzen
- Eine Auswahl unterstützter Funktionen in HTML5