Ich bin die Umsetzung eines "Pass-Through" für X-Frame-Options
eine Partnerseite meines Arbeitgebers wickelt Website in einem Iframe zu lassen, gemäß diesem Artikel: http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspxX-Frame-Options: allow-FROM in Firefox und Chrome
(Aufteilen der URLs zum Posten)
Kurz gesagt, die Seite unseres Partners hat einen iframe mit einer URL für unsere Domain. Für jede Seite in unserer Domain fügen sie ein spezielles URL-Argument wie &@mykey=topleveldomain.com
hinzu und sagen uns, was die Top-Level-Domain der Seite ist.
Unsere Filter holen die Partner-TLD, falls vorhanden, von der URL ab und validieren sie gegen eine Whitelist. Wenn es in der Liste ist, versenden wir die X-Frame-Options
Kopfzeile mit dem Wert ALLOW-FROM topleveldomain.com
(und fügen ein Cookie für zukünftige Klicks hinzu). Wenn es nicht auf unserer Whitelist ist, versenden wir SAMEORIGIN
oder DENY
.
Das Problem ist, es sieht aus wie Senden ALLOW-FROM domain
Ergebnisse in einem No-Op-Overall für den neuesten Firefox und Google Chrome. Zumindest scheint IE8 ALLOW-FROM
korrekt zu implementieren.
Schauen Sie sich diese Seite an: http://www.enhanceie.com/test/clickjack. Unmittelbar nach der 5. (von 5) Boxen, die "Inhalt zeigen soll", ist eine Box, die Inhalt nicht zeigen sollte, aber das ist. In diesem Fall sendet die Seite im Iframe X-Frame-Options: ALLOW-FROM http://www.debugtheweb.com
, eine deutlich andere TLD als http://www.enhanceie.com
. Der Rahmen zeigt jedoch immer noch Inhalt an.
Gibt es einen Einblick, ob X-Frame-Options
wirklich mit ALLOW-FROM
über relevante (Desktop-) Browser implementiert ist? Vielleicht hat sich die Syntax geändert?
Einige Links von Interesse:
- Entwurf rfc auf x-Frame-Optionen: http://tools.ietf.org/html/draft-gondrom-frame-options-01
- developer.mozilla Artikel den Header als 2-Optionsheader (sameorigin oder verweigern) zu diskutieren. https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
- Msdn Blog, dass die ganze Sache initiiert: http://blogs.msdn.com/b/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx
- Msdn Blog, das über 3 Werte spricht: Hinzufügen von allow-von Herkunft http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
Wenn Sie etwas mehr auf eigene Faust Figur dann fühlen sich frei, Ihre eigene Antwort zu schreiben. Du bekommst eine Erwähnung von mir! – Prestaul
Ein Patch wurde gestern für Firefox hinzugefügt: https://bugzilla.mozilla.org/show_bug.cgi?id=690168 Wir werden sehen, ob es die Überprüfung durchmacht und bald auf einen Browser in Ihrer Nähe ... – Prestaul
Old quesiton , aber für die Nachwelt - die Methode, die Sie beschrieben haben (die TLD als Argument an den iframe übergeben), würde sehr leicht von jedem besiegt werden, der Ihre Inhalte einbetten möchte. Sie würden nur die Quelle anzeigen, sehen, was Sie tun, und kopieren/einfügen. Da ALLOW-FROM noch nicht zuverlässig ist, könnten Sie einen gemeinsamen geheimen Schlüssel verwenden, der mit der aktuellen Uhrzeit (innerhalb eines Fensters) verschlüsselt und in die iframe-URL aufgenommen wird. Überprüfen Sie auf der Iframe-Seite das Hashed Shared Secret. Content-Diebe könnten diesen Hash stehlen, aber es würde nur für ein kurzes Fenster funktionieren und effektiv nicht autorisierte Einbettungen blockieren. – Mark