我想了解为什么CORS会按照其工作方式工作。
当我从了解到这个职位,当从网页 **www.a.com 使得AJAX请求 **www.b.com,那么它的 **www.b.com** 是决定是否请求应该被允许。
但是,在这种模式下,什么可以在客户端上完全保证呢?例如,如果黑客成功将XSS脚本注入到我的页面,那么它将向其域发出AJAX请求以存储用户数据。因此,黑客的域肯定会允许这样的请求。
我认为 **www.a.com 应该决定允许请求访问的域。因此,从理论上讲,我想在标头 Access-Control-Allow-Origin** 中放入AJAX CORS请求允许的域的整个列表。
有人可以解释一下当前CORS实现所处理的安全问题吗?
正如我从这篇文章中学到的,当从www.a.com发出AJAX请求到时www.b.com,是由www.b.com决定是否应允许该请求。
www.a.com
www.b.com
不完全的。该请求未被阻止。
默认情况下,运行的JavaScript www.a.com禁止访问的响应www.b.com。
CORS允许www.b.com授予JavaScript www.a.com访问权限。
但是,在这种模式下,什么可以在客户端上完全保证呢?
它使作者的访问者www.a.com无法www.b.com使用访问了两个站点并通过身份验证www.b.com(因此可以访问非公开数据)的用户的浏览器读取数据。
例如,爱丽丝已登录Google。爱丽丝访问malicious.example使用XMLHttpRequest从中访问数据gmail.com。爱丽丝有一个GMail帐户,因此响应中的收件箱中包含最近发送的电子邮件列表。相同的来源策略会阻止malicious.example读取它。
malicious.example
gmail.com
例如,黑客成功将XSS脚本注入到我的页面,然后向其域发出AJAX请求以存储用户数据。因此,黑客域将肯定允许此类请求。
正确。XSS是另一个安全问题,需要从源头(即在www.a.com浏览器中而不是浏览器中)解决。