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 - das Fensterproxy 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

Verweise

  1. ^ a b c d e f Cross-Dokument-Messaging-HTML-Entwurfsstandard
  2. ^ a b Webkit -DOM -Programmiersthemen - Querüberschreitende Messaging[Dead Link]
  3. ^ a b Remy, scharf, Nachrichten, Arbeiter und Steckdosen, Einführung von HTML5, New Riders, 2011, p. 197-199
  4. ^ "HTML5 Web Messaging".
  5. ^ HTML5 -Sicherheit auf den Punkt gebracht
  6. ^ Wann kann ich Cross-Dokument-Nachrichten verwenden?
  7. ^ Eine Auswahl unterstützter Funktionen in HTML5[Dead Link]

Externe Links