我正在阅读有关CORS的信息,我认为实现既简单又有效。

但是,除非我遗漏了某些东西,否则我认为规范中仍有很大一部分遗漏。据我了解,是外国站点根据请求的来源(并可选地包括凭据)来决定是否允许访问其资源。这可以。

但是,如果页面上的恶意代码想要将用户的敏感信息发布到外部站点,该怎么办?外部站点显然将对请求进行身份验证。因此,如果我不遗漏任何东西,CORS实际上会使窃取敏感信息更加容易。

我认为,如果原始站点还可以提供其页面允许访问的服务器的不可变列表,那将更加有意义。

因此,扩展顺序为:

  • 提供一个页面,其中包含可接受的CORS服务器列表(abc.com,xyz.com等)
  • Page想要向abc.com发出XHR请求-浏览器允许此操作,因为它在允许的列表中,并且身份验证像普通
  • 一样进行
  • Page希望向恶意网站发出XHR请求-由于服务器不在列表中,因此本地拒绝了请求(即被浏览器拒绝)。

  • 我知道恶意代码仍可以使用JSONP来完成其肮脏的工作,但是我认为完整的CORS实现将意味着关闭脚本标记多站点漏洞。

    我还检查了CORS的官方规范(http://www.w3.org/TR/cors),但未发现任何有关此问题的信息。

    最佳答案



    那呢您无需使用CORS就可以做到这一点。甚至追溯到Netscape 2,您始终能够通过简单的GET和POST请求将信息传输到任何第三方站点,这些请求是由诸如form.submit()new Image或设置window.location这样的简单接口(interface)引起的。

    如果恶意代码可以访问敏感信息,则您已经完全迷路。



    为什么页面会尝试向尚未列入白名单的站点发出XHR请求?

    如果您试图防止由于XSS漏洞而注入(inject)的恶意脚本的行为,那么您尝试的是解决症状,而不是原因。

    10-05 20:55
    查看更多