Wie kann ich verhindern, dass ein iframe auf den übergeordneten Frame zugreift?

8

Ich habe eine Seite mit einem iframe. Die Seite und die Quelle des Iframes befinden sich in verschiedenen Domänen. Innerhalb des iframe benutze ich einen Rich-Text-Editor namens CuteEditor (der sich als nicht so süß herausgestellt hat). Es gibt bestimmte JavaScript-Funktionen in CuteEditor, die versuchen, auf 'Dokument' zuzugreifen, aber der Browser verweigert den Zugriff, da sie nicht in der gleichen Domäne sind.

Hier ist der genaue Fehler:

  

Berechtigung verweigert Zugriff auf Eigenschaft 'Dokument'    Ссылка   Zeile 1

Das Bearbeiten des Javascript kommt nicht in Frage, denn es wurde minimiert und verschleiert, so dass alle Variablennamen kryptisch sind.

Die Verwendung eines anderen Editors kommt derzeit nicht in Frage, da es sich um ein Arbeitsprojekt handelt, und dies ist der Editor, den ich benutzen soll.

Gibt es eine Möglichkeit, den iframe in sich geschlossen zu halten? Also macht es alles innerhalb des Iframe und versucht nicht, in den Eltern-Frame auszubrechen?

    
Justin 05.12.2011, 19:47
quelle

2 Antworten

7

Wenn der untergeordnete iframe aus einer anderen Domäne geladen wird, kann er nicht auf die übergeordnete Seite oder das DOM zugreifen.

Es gibt jedoch immer noch eine mögliche Verwundbarkeit für einen Man-in-the-Middle-Angriff wie folgt. Angenommen, Ihre Seite wird von Ссылка geladen und der Iframe wird an Ссылка

  • zuerst Ссылка leitet Sie zu Ссылка

  • Dies ist der Schritt, der einen Man-in-the-Middle-Angriff erfordert. Der Angreifer muss entweder in der Lage sein, zwischen dem Benutzer und yoursite.com zu gelangen, oder die Antworten auf Ihre DNS-Suche kontrollieren. Das ist einfacher als es klingt - jeder, der administrative Kontrolle über einen öffentlichen WLAN-Zugangspunkt hat, könnte dies tun (denken Sie an Starbucks, Hotels, Flughäfen). Das Ziel ist es, den Inhalt von Ссылка von der Website des Angreifers, nicht von Ihrer tatsächlichen Website.

  • Der Angreifer kann dann beliebigen schädlichen Code aus der (falschen) Ссылка bedienen. Da dies in der gleichen Domäne wie die Hauptseite ist, hat es Zugriff auf das übergeordnete DOM.

Das HTML5-Iframe-Sandbox-Attribut scheint der Weg zu sein, dies zu vermeiden. Sie können die Spezifikation lesen, aber die Die beste Beschreibung könnte hier sein.

Dies wird anscheinend auf Chrome , IE10 , FireFox , Safari .

Die Spezifikation besagt, dass, wenn das Attribut "allow-same-origin" nicht festgelegt ist, "der Inhalt als von einem eindeutigen Ursprung stammend" behandelt wird. Dies sollte verhindern, dass Ihr untergeordneter iframe auf irgendeinen Teil des DOMs des Elternteils zugreift, unabhängig davon, was der Browser für den URL hält.

    
Jonathan Stray 28.11.2012 18:37
quelle
-2

Sie sollten sich darüber keine Gedanken machen.

Die einzige Möglichkeit, iframes über den Ursprung hinweg zu sprechen, ist mit postMessage, und das ist nur möglich, wenn Sie diese Domäne direkt anhören.

Ссылка

    
Jeffrey Sweeney 05.12.2011 19:53
quelle