我们正在构建一个ASP.NET
网站,并且只允许{strong>某些域谁可以iFrame
我们的网站。 Internet Explorer中不支持CSP。我正在设置类似的东西
Response.AddHeader("Content-Security-Policy", "frame-ancestors mydomain1.com mydomain2.com")
。
每个人如何处理Internet Explorer。我看过IE支持X-Content-Security-Policy
,但它没有frame-ancestors
。
此外,我通过执行
删除IIS添加的默认X-Frame-Options标头Response.Headers.Remove("X-Frame-Options")
答案 0 :(得分:8)
Microsoft推荐的解决方案如下:
如果Referer标题存在,您也可以检查它。
答案 1 :(得分:4)
X-Frame-Options正在被Content-Security-Policy取代,但正如您所说,并非所有浏览器都完全支持Content-Security-Policy。
您说您有意删除X-Frame-Options,但您不应该这样做。 Internet Explorer支持这一点,因此如果您在Content-Security-Policy之外使用它,您将在更广泛的浏览器中获得相同的效果。
请参阅此处的X-Frame-Options文档,其中包括对IE支持的提及: https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options
答案 2 :(得分:1)
Internet Explorer 8到11仅支持X-Frame-Options,您可以使用ALLOW-FROM值。在那里指定iframe的网址。
请注意,只有最新的Internet Explorer浏览器支持X-Content-Security-Policy。
答案 3 :(得分:1)
X-Content-Security-Policy适用于IE,使用https://content-security-policy.com/browser-test/测试浏览器的csp支持
快递中的代码段看起来像:
function applyCSPforIE(req, res, next) {
res.setHeader('X-Content-Security-Policy', 'frame-ancestors \'self\' http://whatever.com/');
next();
}
你可以同时使用它们并且它可以工作但是在article处有关于它的警告。
答案 4 :(得分:1)
以下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>