我有一个服务器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,我想确保它会被浏览器应用。
我将要做的是以下步骤:
user-agent
。而且,无法从客户端代码更改浏览器发送的user-agent
标头。因此,我将在Web服务器端使用该值来确定我要处理的浏览器。参考:understanding user-agentbrowser-not-supported.html
表示,对于其他浏览器,我将继续进行。index.html
或其他html页面中添加一些琐碎的JS代码,以便在该浏览器不支持我的网站所需要的确切CSP标头时不发出请求。X-Frame-Options "SAMEORIGIN"
,如果浏览器不尊重/理解CSP标头,它将满足我们的特定目的。