2016-06-05 22 views
0

Ich entwickle eine Chrome-Erweiterung und ich möchte iFrame-Erkennung (dh Buster) Skripte umgehen.Bypass iFrame Buster Skript

Ich kann diese Erkennung umgehen:

if (top !== self) { 
    //break out 
} 

mit Injektion diesen Code oben:

window.self = window.top; 

Aber was, wenn ich so etwas wie dieses:

if (window != top) { 
    //break out 
} 

Wie kann ich window neu definieren?

+0

Erstens: Die Umgehung des Frame-Busters kann gegen die Nutzungsbedingungen verstoßen, und Sie könnten dafür verklagt werden. Dann: 'window' ist das globale Objekt, es verweist auf das DOM, alle verfügbaren Bibliotheken in JS, ... alles; Leg dich nicht damit an/brich das nicht. Als eine Idee: Sie könnten die Bedingung in der JS-Datei ändern, bevor sie ausgewertet wird. Das würde wahrscheinlich auch gegen die Nutzungsbedingungen verstoßen, und wenn Sie dies nicht wirklich gut machen, haben Sie möglicherweise eine unangenehmere Erfahrung für Ihre Kunden geschaffen als der iFrame. nämlich: manchmal funktioniert es, manchmal nicht – Thomas

Antwort

1

Sie können nicht neu definieren, die window und top Eigenschaften des globalen Objekts

window ist im Wesentlichen ein Verweis auf die window Eigenschaft des globalen Fensterobjekt (window.window). Diese Eigenschaft ist als nicht konfigurierbar und nicht wiederbeschreibbar definiert. Sie können dies überprüfen, indem Sie Object.getOwnPropertyDescriptor(window, "window") in der Konsole ausführen. Die Attribute configurable: false und writable: false bedeuten, dass alle Versuche, sie zu ändern, fehlschlagen (entweder mit einem false Rückgabewert oder mit einem Fehler im strikten Modus). Dieses Verhalten der window-Eigenschaft wird von der specification of the Window object erforderlich.

Die Eigenschaft eines Fensters ist nicht konfigurierbar und nicht wiederbeschreibbar, so dass Sie das auch nicht überschreiben können. (parent und self, auf der anderen Seite, kann überschrieben werden.)

Sie scheinen zu versuchen, eine universell brauchbare Art und Weise zu täuschen, FrameBusters. Das scheint mir eine unmögliche Aufgabe zu sein. Sie können vielleicht die Elemente <script> abfangen und die iframe-Erkennung aus dem Code entfernen, bevor sie ausgeführt wird. Aber selbst wenn Sie dies bei einigen FrameBustern schaffen, wird es immer andere geben, auf die sich Ihre Erweiterung nicht kümmert.