Internet Explorer的内容安全策略(CSP)解决方法

时间:2015-11-18 03:36:47

标签: internet-explorer iframe content-security-policy

我们正在构建一个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")

5 个答案:

答案 0 :(得分:8)

Microsoft推荐的解决方案如下:

  1. 内部,白名单domain1.com和domain2.com
  2. 在嵌入您的iframe网址时,请在指定来源的网址中添加参数:iframe src =" http://example.org/frame.html?origin = http://domain1.com" ;
  3. 在您的服务器上,检查原始值是否列入白名单。用它来设置X-Frame-Options:ALLOW-FROM http://domain1.com
  4. 如果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>