2009-01-20 8 views
6

Wir hatten kürzlich ein Problem, wo andere Seiten unsere E-Commerce-Site in einem Frameset betreiben, wo unsere Seite (mit der Täter-Affiliate-ID angeheftet) der einzige Inhalt in einem einzigen Rahmen voller Breite ist. Im Wesentlichen sieht es so aus und fühlt sich an wie unsere Website mit ihrer URL an der Spitze. Wir können ihre Affiliate-ID abschneiden, was es für sie sinnlos machen würde, aber das hindert zukünftige Täter nicht daran, dasselbe zu tun, bis wir es herausfinden.Kann verhindert werden, dass unsere Website innerhalb des Frame-Sets oder IFrame einer anderen Domain läuft?

Gibt es einen allgemeinen Weg (durch JavaScript, das vielleicht auf jeder Seite erscheint?), Um dies zu verhindern? Beachten Sie, dass das Hinzufügen von Zielen zu allen Links nicht möglich ist, aber das Hinzufügen eines Snippets von JS zu allen Seiten ist, da die Kopf- und Fußzeilenabschnitte von einer einzigen Quelle aus verteilt sind.

Eine andere Möglichkeit wäre auf der Apache-Ebene (wenn es etwas gibt, was wir auf der Serverseite tun könnten), da wir alle Anfragen durch Mod-Rewrite übergeben.

Beachten Sie, dass es wichtig wäre, Seiten zu Schweller erlauben innerhalb eines IFrame zu laden, wenn die übergeordnete Seite aus unserer Domain stammt, wie wir es hier zu raten gültig Verwendung von IFrames

Antwort

3

Ich glaube, die richtige moderne Methode, dies zu erreichen mit The X-Frame-Options response header ist.

Vom MDN:

Der Header X-Frame-Options HTTP-Antwort kann, ob oder nicht soll ein Browser eine Seite in einem Frame oder Iframe zu machen verwendet werden, um anzuzeigen erlaubt. Sites können dies verwenden, um Clickjacking-Angriffe zu vermeiden, indem sichergestellt wird, dass ihr Inhalt nicht in andere Websites eingebettet ist.

Werfen Sie einen Blick auf: How to prevent IFRAME from redirecting top-level window

+0

Okay. Ich habe bearbeitet. –

+0

Dies ist die richtige Antwort für 2017. OWASP hat eine großartige [Clickjacking Defense Cheat Sheet] (https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet), die die Angriffs- und Sanierungsmöglichkeiten diskutiert. – thirdender

+0

Ich habe die gewählte Antwort auf meine alte Frage aktualisiert, die die modernen Best Practices enthält – Peter

0

einfach machen ... aber was, wenn Sie verwenden Javascript, um das übergeordnete Fenster aufzurufen, um auf das Dokumentobjekt zuzugreifen? Sie könnten prüfen, ob es nicht null ist, und wenn es ein Eltern-Fenster gibt (dh ein Frame geladen Ihre Website), könnten Sie alle Ihre HTML durch Javascript verstecken ...

2

Werfen Sie einen Blick auf diesen Artikel. Es bietet eine ziemlich einfache Lösung zum Erkennen von Frames und zum Ausbrechen von Frames.

How to Break Out of Frames with JavaScript

Darüber hinaus würde ich gehen noch einen Schritt weiter. Wenn Sie einen Frame erkennen, greifen Sie die Affiliate-ID des Fremder der anfälligen Site auf und schieben Sie diese zusammen mit der von Ihnen verwendeten URL auf den Server mit AJAX. Dann können Sie entweder automatisch oder manuell überprüfen, ob sie Ihre Site gestalten und den Affiliate-Code nacheinander löschen.

5

Ich habe von Lösungen für dieses Problem gehört, die als "Frame-Popper-Skript" bezeichnet werden. Eine schnelle Google kommt mit this thread. Sieht aus wie das ist eine der einfachsten:

if (window != top) top.location.href = location.href; 
+0

die ziemlich raffinierte wäre, können die Hacking-Website zu ‚Iframe‘ Ihre Website versuchen, auf Ihrer Website in dem übergeordneten Fenster umgeleitet werden würde :) – Jobo

+0

Sie auch diese schreiben als 'if (top! == self) top.location.href = self.location.href - das gleiche, aber symmetrischer – Christoph

+0

Es gibt Workarounds für viele dieser" Framepopper-Skripte ", , so dass sie nicht länger sein sollten benutzt. Siehe OWASP [Clickjacking Defense Cheat Sheet: Unsichere nicht arbeitende Skripts NICHT VERWENDEN] (https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Insecure_Non-Working_Scripts_DO_NOT_USE) – thirdender

Verwandte Themen