同源政策的可疑目的

时间:2015-01-04 01:09:27

标签: javascript web-services security http web

正如我所读到的,相同的原始策略是关于防止(邪恶)域A中的源脚本向(好)域B发出请求 - 换句话说就是跨站点请求伪造。

玩了一下我了解了Access-Control-Allow-Origin标题和CORS,正如我在某种程度上所理解的那样,允许从好域B指定服务器域A是允许的来源(因此不是邪恶的) )。如果跨域响应中不存在此标头,则浏览器将不会从中读取任何内容,但它仍然已经提出请求。

现在,我在某处错过了这一点。如果域B具有Web服务API并且用户登录时进行cookie身份验证,则基本上任何操作都可以由恶意源A代表穷人用户执行,只是攻击者不会看到响应。

我在这里缺少什么?我的推理在哪里错了?

2 个答案:

答案 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来获取此令牌。