Access-Control-Allow-Origin和CORS背后的概念是什么?

Tob*_*obi 2 javascript xmlhttprequest same-origin-policy cors

我真的不懂Access-Control-Allow-Origin和CORS.
如果我允许来自任何域的请求到我的页面,这是否意味着我的页面存在任何安全问题?

我一直认为,SOP确保不能在页面上运行任何脚本,该脚本从另一台服务器请求数据,因为该数据可能是恶意的.但是,由于服务于恶意数据的服务器只能回复包含的标头Access-Control-Allow-Origin:*,所以可以从该服务器加载所有内容.
因此,只要有人设法将一段JS代码注入页面,就可以从属于攻击者的服务器加载每个恶意代码.

Unitl现在我假设,我必须启用跨域请求以允许我的页面上的代码从另一个域请求数据,但它似乎是相反的方式; 另一个域必须允许我的域请求数据.我真的没有看到这个概念的安全性好处.
任何人都可以解释这背后的概念,或者告诉我,如果我弄错了吗?

Que*_*tin 5

鉴于:

  • Alice,有浏览器的用户
  • Bob,网站所有者
  • Mallory,一个拥有网站的恶意网站所有者

Alice在Bob的服务器上有一个帐户.也许这是她的网络邮件.也许这是她的网上银行.也许这是她喜欢购物的地方.

爱丽丝访问马洛里的网站,不知道它是邪恶的.

同源策略阻止Mallory的网站使用JavaScript告诉Alice的浏览器向Bob的网站发出请求,并将Alice的个人信息(例如她的银行余额)提供给Mallory的网站(因此也提供给Mallory).

(有时请求将被阻止,因为条件需要飞行前请求,有时请求将通过,但响应将不会提供给Mallory的站点.如果您想要抵御危险所在的攻击,请查找CSRF服务器在获取请求时所执行的操作,而不是从响应中泄漏的信息).

CORS允许Bob说他的网站上的资源不包含任何个人信息,因此允许其他网站访问它是安全的(或者可以信任某个特定网站的个人信息).

所以只要有人设法将一段JS代码注入页面,

XSS是一个完全不同的安全问题.你需要阻止人们注入JS.