正如我所读到的,相同的原始策略是关于防止(邪恶)域A中的源脚本向(好)域B发出请求 - 换句话说就是跨站点请求伪造。
玩了一下我了解了Access-Control-Allow-Origin
标题和CORS
,正如我在某种程度上所理解的那样,允许从好域B指定服务器域A是允许的来源(因此不是邪恶的) )。如果跨域响应中不存在此标头,则浏览器将不会从中读取任何内容,但它仍然已经提出请求。
现在,我在某处错过了这一点。如果域B具有Web服务API并且用户登录时进行cookie身份验证,则基本上任何操作都可以由恶意源A代表穷人用户执行,只是攻击者不会看到响应。
我在这里缺少什么?我的推理在哪里错了?
答案 0 :(得分:1)
正如我所读到的,相同的原始策略是关于防止(邪恶)域A中的源脚本向(好)域B发出请求 - 换句话说就是跨站点请求伪造。
同源策略可防止来自其他来源的域名,端口或协议组合读取不匹配。它没有说明限制请求首先被制作。
e.g。
http://www.example.com
无法阅读http://www.example.edu
https://www.example.com
无法读取http://www.example.com
上的任何内容(Cookie除外,因为Cookie的同源政策不同)http://www.example.com:8080
无法阅读http://www.example.com
同源策略不会阻止发送到另一个域的请求。只有响应是只读的。所以......
http://www.example.com
可以通过AJAX或表单将数据发布到http://www.example.edu
(如果在浏览器中启用了第三方Cookie,则使用凭据)http://www.example.com
可以通过AJAX或表单https://www.example.com
https://www.example.com
可以将数据发布到http://www.example.com
,尽管浏览器很可能阻止请求或警告用户,因为通过HTTPS访问HTTP内容页。当通过AJAX时,通过表单将取决于浏览器和设置http://www.example.com
可以从http://www.example.edu
加载图片,但图片数据无法通过脚本获取因此,CORS不会放松已有可能的安全性,它允许域选择加入CORS并允许其他域从其中读取响应。
答案 1 :(得分:0)
CORS没有阻止在CORS发明之前允许的任何内容。它仅指定网站允许以前始终被拒绝的请求的方式。
从Web开始,一个站点总是会导致用户代理向其他站点发出请求。想想热门图片。
通常情况下,网站仅根据Cookie授权操作是不正确的,因为正如您所指出的,任何网站都可以使用其他网站提出请求。饼干。
网站通常要求请求中包含cookie以外的内容。例如,它可能会查找必须从先前响应中读取的CSRF令牌。作为站点B,您需要使用CORS来获取此令牌。