web-dev-qa-db-ja.com

Internet Explorerのコンテンツ-セキュリティ-ポリシー(CSP)の回避策

私たちは_ASP.NET_ウェブサイトを構築しており、私たちのウェブサイトをiFrameできる人だけを許可したいと考えています一部のドメイン。 CSPはInternetExplorerではサポートされていません。 Response.AddHeader("Content-Security-Policy", "frame-ancestors mydomain1.com mydomain2.com")のようなものを設定しています。

誰もがInternetExplorerをどのように扱っていますか。 IEは_X-Content-Security-Policy_をサポートしていますが、_frame-ancestors_はありません。

また、IISによって追加されたデフォルトのX-Frame-Optionsヘッダーを削除します。

_Response.Headers.Remove("X-Frame-Options")
_
7
sri

Microsoft が推奨するソリューションは次のとおりです。

  1. 内部的には、domain1.comとdomain2.comをホワイトリストに登録します
  2. iframe URLを埋め込むときは、オリジンを指定するパラメーターをURLに追加します。iframesrc= "http://example.org/frame.html?origin=http://domain1.com"
  3. サーバーで、Originの値がホワイトリストに登録されているかどうかを確認します。これを使用してX-Frame-Optionsを設定します:ALLOW-FROM http://domain1.com

リファラーヘッダーが存在する場合は、それを確認することもできます。

9
Julien

X-Frame-OptionsはContent-Security-Policyに取って代わられていますが、あなたが言うように、まだすべてのブラウザーがContent-Security-Policyを完全にサポートしているわけではありません。

X-Frame-Optionsを意図的に削除するとおっしゃっていますが、削除すべきではありません。これはInternetExplorerでサポートされているため、Content-Security-Policyに加えて使用すると、より広範囲のブラウザーで同じ効果が得られます。

ここにあるX-Frame-Optionsのドキュメントを参照してください。これには、IEサポート: https://developer.mozilla.org/en-US/docs/Web/HTTP/ X-Frame-Options

4
Chris Denning

Internet Explorer 8〜11はX-Frame-Optionsのみをサポートし、ALLOW-FROM値を使用できます。そこでiframeのURLを指定します。

最新のInternetExplorerブラウザのみがX-Content-Security-Policyをサポートしていることに注意してください。

1
user5707883

X-Content-Security-PolicyはIEで機能し、ブラウザでcspサポートをテストします https://content-security-policy.com/browser-test/

Expressのスニペットは次のようになります。

function applyCSPforIE(req, res, next) {
    res.setHeader('X-Content-Security-Policy', 'frame-ancestors \'self\' http://whatever.com/');
    next();
}

両方を一緒に使用することができ、それは機能しますが、これについての警告があります 記事

1
Abhijeet

次のApache構成は、すべての主要なブラウザーで機能します(2018年4月)。

<IfModule mod_headers.c>

    Header set Content-Security-Policy "frame-ancestors http://*.example.com/ 'self';"

    # For IE 11 and below
    Header set X-Frame-Options SAMEORIGIN
    Header append X-Frame-Options "ALLOW-FROM http://example.com/" </IfModule>
1
theBell