ドメインexample1.com iframeを埋め込みます。
ドメインexample2.comexample1.comから提供されるiframeを埋め込みます。
X-Frame-Options: ALLOW FROM *.example1.com
と同様 Content-Security-Policy
とframe-ancestors
。
ただし、ウィンドウのドメインはexample2.comであり、これはexample1.comと等しくないため、ブラウザはiframeコンテンツの表示を許可しません。
埋め込み(example1.com)と埋め込みの埋め込み(example2.com)にホワイトリストを要求するにはどうすればよいですか?
CSP _frame-ancestors
_はすでに必要なことを行っています
_Content-Security-Policy: frame-ancestors [...]
_は、entire祖先チェーンをチェックします。親ドキュメントがソースホワイトリストと一致しない場合、ドキュメントは読み込まれません。
チェーンがtop(child(grandchild))
の場合、grandchild
に対するこのポリシーは次のようになります。
_Content-Security-Policy: frame-ancestors top child
_
しかし、これらのどれも:
_ Content-Security-Policy: frame-ancestors top
Content-Security-Policy: frame-ancestors child
Content-Security-Policy: frame-ancestors 'none'
_
_X-Frame-Options: allow-from [...]
_は単一の祖先のみをチェックします。ほとんどのブラウザのデファクトインプリメンテーションは、topOriginをチェックしますが、中間のOriginはチェックしません。
チェーンがtop(child(grandchild))
の場合、grandchild
に対するこのディレクティブは機能します。
_X-Frame-Options: allow-from http://top/
_
しかし、これらのどれも:
_X-Frame-Options: allow-from http://child/
X-Frame-Options: sameorigin
X-Frame-Options: deny
_
W3C CSP2仕様でも違いが説明されています。
7.7.1。 X-Frame-Optionsとの関係
このディレクティブは、いくつかのユーザーエージェントが実装した_
X-Frame-Options
_ヘッダーに似ています。 _'none'
_ソース式は、そのヘッダーのDENY
、_'self'
_からSAMEORIGIN
などとほぼ同等です。主な違いは、多くのユーザーエージェントがSAMEORIGIN
を実装して、トップレベルのドキュメントの場所とのみ一致することです。このディレクティブは、各祖先をチェックします。祖先が一致しない場合、ロードはキャンセルされます。 [RFC7034]