Content-Security-Policy
無視X-Frame-Options
、サーバーから返される、またはX-Frame-Options
まだプライマリですか?
私が持っていると仮定:
X-Frame-Options: DENY
Content-Security-Policy: frame-src a.com
ブラウザはこのフレームをロードしますか?
不明です。
一方で、 http://a.com はフレーミングを明示的に拒否します。
一方で、- http://b.com は http://a.com のフレーミングを明示的に許可します。
frame-src
CSPディレクティブ (廃止され、child-src
に置き換えられます)は、ページ上のフレームで使用できるソースを決定します。
一方、X-Frame-Options
応答ヘッダーは、他のどのページがiframeでそのページを使用できるかを決定します。
あなたの場合、http://a.com
とX-Frame-Options: DENY
は、他のページがフレームでそれを使用できないことを示します。 http://b.com
がCSPに何を持っているかは関係ありません。フレームでhttp://a.com
を使用できるページはありません。
X-Frame-Options
がCSPと交差する場所は、 frame-ancestors
ディレクティブ です。 CSPの仕様 (エンファシスマイニング)から:
このディレクティブは、いくつかのユーザーエージェントが実装している
X-Frame-Options
ヘッダーに似ています。'none'
ソース式は、そのヘッダーのDENY
、'self'
からSAMEORIGIN
などにほぼ相当します。主な違いは、多くのユーザーエージェントがSAMEORIGIN
を実装して、最上位のドキュメントの場所とのみ一致することです。このディレクティブは、各祖先をチェックします。祖先が一致しない場合、ロードはキャンセルされます。 [RFC7034]
frame-ancestors
ディレクティブは、X-Frame-Options
ヘッダーを廃止します。リソースに両方のポリシーがある場合、frame-ancestors
ポリシーを実施する必要があり、X-Frame-Options
ポリシーを無視する必要があります。
以前の質問 は、これが当時Firefoxで機能しなかったことを示していますが、できれば状況が変わったことを願っています。
コンテンツセキュリティポリシー:ディレクティブ「child-src」は廃止されました。ディレクティブ「worker-src」を使用してワーカーを制御するか、ディレクティブ「frame-src」を使用してフレームを制御してください。
child-src
は廃止され、frame-src
が復活したようです。
あなたの仮説はどれも普遍的に真実ではありません。
X-Frame-Options
を無視します。frame-ancestors
を無視します。frame-ancestors
ディレクティブを尊重しますが、両方が指定されている場合はprioritizeX-Frame-Options
です。答えは実際にテストすることで見つかりました。
2つのWebサイトを作成し、記載されている状況を再現しました。
X-Frame-Optionsが主要なようです。
ターゲットサーバーがフレーミングを拒否する場合、クライアントWebサイトはiframe
のどの値Content-Security-Policy
設定されています。
ただし、ドキュメントに確認はありません。
テスト済みChrome 54およびIE 11。