この記事のとおり、X-Frame-Options
の「パススルー」を実装して、パートナーサイトが雇用主のサイトをiframeでラップできるようにします。 http://blogs.msdn.com/b/ ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx
(投稿するURLを分割する)
簡単に言えば、パートナーのページには、ドメインに対するURLを含むiframeがあります。ドメイン内のすべてのページに対して、&@mykey=topleveldomain.com
のような特別なurl引数を追加して、ページのトップレベルドメインとは何かを教えます。
フィルターは、提供されている場合はURLからパートナーTLDを取得し、ホワイトリストに対して検証します。リストにある場合は、X-Frame-Options
ヘッダーに値ALLOW-FROM topleveldomain.com
を付けて出荷します(今後のクリックのためにCookieを追加します)。ホワイトリストにない場合は、SAMEORIGIN
またはDENY
を発送します。
問題は、ALLOW-FROM domain
を送信すると、最新のFirefoxおよびGoogle Chromeで全体的にノーオペレーションになるように見えることです。少なくともIE8はALLOW-FROM
を正しく実装しているようです。
このページをご覧ください: http://www.enhanceie.com/test/clickjack 。 「コンテンツを表示する必要がある」5番目のボックスの直後にあるのは、コンテンツを表示するべきではないが、実際に表示するボックスです。この場合、iframeのページは、X-Frame-Options: ALLOW-FROM http://www.debugtheweb.com
とは明らかに異なるTLDであるhttp://www.enhanceie.com
を送信しています。それでも、フレームにはコンテンツが表示されます。
関連する(デスクトップ)ブラウザ間でX-Frame-Options
がALLOW-FROM
で本当に実装されているかどうかについての洞察はありますか?おそらく構文が変更されましたか?
興味のあるリンク:
ALLOW-FROMはChromeまたはSafariではサポートされていません。 MDNの記事を参照してください: https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
カスタムヘッダーを作成して正しいデータで送信する作業を既に行っています。ヘッダーが有効なパートナーからのものであることを検出し、他のすべての要求にDENYを追加したときにヘッダーを除外することはできませんか?既にロジックを動的に構築しているとき、AllowFromの利点がわかりませんか?
私はこの質問を投稿しましたが、フィードバックを見たことはありませんでした(数か月後に来たようです:)。
Kinlanが述べたように、ALLOW-FROMはX-Frame-Options値としてすべてのブラウザーでサポートされているわけではありません。
解決策は、ブラウザの種類に基づいて分岐することでした。 IEの場合、 X-Frame-Options を出荷します。それ以外の場合は、 X-Content-Security-Policy を出荷します。
これがお役に立てば幸いです。そして、ループを閉じるのに長い時間がかかってすみません!
Chromeでは、代わりに
response.AppendHeader("X-Frame-Options", "ALLOW-FROM " + Host);
Content-Security-Policy
を追加する必要があります
string selfAuth = System.Web.HttpContext.Current.Request.Url.Authority;
string refAuth = System.Web.HttpContext.Current.Request.UrlReferrer.Authority;
response.AppendHeader("Content-Security-Policy", "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: *.msecnd.net vortex.data.Microsoft.com " + selfAuth + " " + refAuth);
hTTP応答ヘッダーへ。
これは、refAuthが許可されているかどうかをサーバーで確認したことを前提としています。
また、Chrome(コンソールでの出力エラー)にallow-from
ヘッダーを追加しないようにするには、ブラウザー検出を行う必要があることに注意してください。
詳細については、 私の答えはこちら を参照してください