我正在阅读有关CORS的信息,我认为实现既简单又有效。
但是,除非我遗漏了某些东西,否则我认为规范中仍有很大一部分遗漏。据我了解,是外国站点根据请求的来源(并可选地包括凭据)来决定是否允许访问其资源。这可以。
但是,如果页面上的恶意代码想要将用户的敏感信息发布到外部站点,该怎么办?外部站点显然将对请求进行身份验证。因此,如果我不遗漏任何东西,CORS实际上会使窃取敏感信息更加容易。
我认为,如果原始站点还可以提供其页面允许访问的服务器的不可变列表,那将更加有意义。
因此,扩展顺序为:
我知道恶意代码仍可以使用JSONP来完成其肮脏的工作,但是我认为完整的CORS实现将意味着关闭脚本标记多站点漏洞。
我还检查了CORS的官方规范(http://www.w3.org/TR/cors),但未发现任何有关此问题的信息。
最佳答案
那呢您无需使用CORS就可以做到这一点。甚至追溯到Netscape 2,您始终能够通过简单的GET和POST请求将信息传输到任何第三方站点,这些请求是由诸如form.submit()
,new Image
或设置window.location
这样的简单接口(interface)引起的。
如果恶意代码可以访问敏感信息,则您已经完全迷路。
为什么页面会尝试向尚未列入白名单的站点发出XHR请求?
如果您试图防止由于XSS漏洞而注入(inject)的恶意脚本的行为,那么您尝试的是解决症状,而不是原因。