如何检测浏览器是否在服务器上支持CSP?

问题描述 投票:1回答:1

我有一个服务器helper.com,该服务器使用自定义CSP为GET请求提供响应,例如:

Content-Security-Policy: default-src 'self'; frame-ancestors https://my.com;

想法是,只有my.com可以包含helper.com中的小部件。

这在现代浏览器(Chrome,Safari,Firefox)中很好用。

问题是,如何才能可靠地排除不支持CSP的浏览器?

这就是IE系列(?),是优秀浏览器的很旧版本,旧版浏览器,如果有人碰巧使用它,甚至是NN?

[技术原因是,如果用户在helper.com上拥有会话cookie,我计划提供用户的机密信息,并且我担心有人在使用例如IE已登录,一些黑客将创建hacker.com,尝试通过Ajax或脚本标签或字体资源或图像从helper.com中获取内容,以绘制画布并窃取用户的机密数据。

排序,如果我提供CSP,我想确保它会被浏览器应用。

browser server content-security-policy
1个回答
0
投票

我将要做的是以下步骤:

  1. 通常,浏览器在请求标头上发送user-agent。而且,无法从客户端代码更改浏览器发送的user-agent标头。因此,我将在Web服务器端使用该值来确定我要处理的浏览器。参考:understanding user-agent
  2. 然后基于browser and CSP headers compatibility matrix,我应该知道是否应该允许/禁止该浏览器。当然,我确切知道我的网站需要哪些CSP标头支持。
  3. 对于列入黑名单的浏览器,我将用browser-not-supported.html表示,对​​于其他浏览器,我将继续进行。
  4. 我还将在index.html或其他html页面中添加一些琐碎的JS代码,以便在该浏览器不支持我的网站所需要的确切CSP标头时不发出请求。
  5. 此外,我会在http响应上添加旧的浏览器兼容标头,例如X-Frame-Options "SAMEORIGIN",如果浏览器不尊重/理解CSP标头,它将满足我们的特定目的。
© www.soinside.com 2019 - 2024. All rights reserved.