blog.bartlweb - a technologist's external brain

Cross-Site Scripting (XSS) mit Hilfe von iFrames

Will man zwischen einem iFrame und der Hauptseite Daten mittels JavaScript austauschen oder Funktionen auf der anderen Seite aufrufen benötigt man den ansatz von Cross-Site Scripting (XSS).

Dabei gibt es allerdings von Anfang an folgende Einschränkungen:

  • Die Hauptseite und der iFrame müssen von der selben Domain aufgerufen werden.
  • Dabei ist es auch nicht erlaubt zwischen Subdomains zu kommunizieren
  • und zuletzt muss auch der Port (also http/https) übereinstimmen.

Erfüllt man diese Bedingungen steht einem Regen austausch nichts mehr im Wege. Dabei kann dann aus dem iFrame heraus eine Funktion der Hauptseite mittels folgendem Code aufgerufen werden:

window.top.function();

Grund für die Einschränkung in der Kommunikation zwischen iFrames ist die Same Origin Policy der Browser. Um zwischen Dokumenten einer Domain bzw. deren Subdomains zu kommunizieren, kann man für beide Dokumente die Eigenschaft Domain (die standardmäßig auf die Adresse des Servers gesetzt wird) auf die Hauptdomain setzen. D.h. sollen test.domain.com und iframe.domain.com miteinander per XSS kommunizieren ist dies möglich wenn in beiden Dokumenten die Eigenschaft Domain auf domain.com gesetzt wird. Ein kommunizieren mit Drittwebseiten ist damit leider, aber aus gutem Grund, weiterhin nicht möglich.

document.domain = "domain.com";

Dieser Artikel hat dir deinen Tag gerettet?
... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? ... oder einfach nur dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Spende honorierst:

Kommentare

Noch kein Kommentar vorhanden.
Sei der Erste - ich freue mich über deine Anmerkungen, Kritik und Fragen.

Kommentar schreiben

Deine E-Mailadresse wird nur für Benachrichtigungen und Rückfragen verwendet und wird nicht veröffentlicht.

Benachrichtigungen können jederzeit wieder abbestellt werden.

Bitte tippe die Zahlenkombination "3920" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.