私たちは_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")
_
Microsoft が推奨するソリューションは次のとおりです。
リファラーヘッダーが存在する場合は、それを確認することもできます。
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
Internet Explorer 8〜11はX-Frame-Optionsのみをサポートし、ALLOW-FROM値を使用できます。そこでiframeのURLを指定します。
最新のInternetExplorerブラウザのみがX-Content-Security-Policyをサポートしていることに注意してください。
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();
}
両方を一緒に使用することができ、それは機能しますが、これについての警告があります 記事 。
次の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>