我没有得到Access-Control-Allow-Origin
和CORS。
如果我允许来自任何域的请求到我的页面,这是否意味着我的页面存在任何安全问题?
我一直认为,SOP确保在页面上不能运行任何脚本,该脚本向另一台服务器请求数据,因为该数据可能是恶意的。但是,由于提供恶意数据的服务器只能使用包含Access-Control-Allow-Origin:*
的 header 进行回复,因此可以从该服务器加载所有内容。
因此,只要有人设法将一段JS代码注入(inject)到页面中,就可以从属于攻击者的服务器上加载每个恶意代码。
现在我假设,Unitl必须启用跨域请求才能允许页面上的代码从另一个域请求数据,但这似乎是相反的。另一个域必须允许我的域请求数据。
我没有真正看到此概念的安全性好处。
谁能解释这个背后的概念,或者告诉我我是否理解错了?
最佳答案
鉴于:
爱丽丝在鲍勃的服务器上有一个帐户。也许是她的网络邮件。也许是她的网上银行。也许是她喜欢购物的地方。
爱丽丝在不知道这是邪恶的情况下访问了马洛里的网站。
相同来源政策可防止Mallory的网站使用JavaScript告诉Alice的浏览器向Bob的网站发出请求,并将Alice的个人信息(例如,她的银行存款)提供给Mallory的网站(并因此提供给Mallory)。
(有时,由于条件要求进行飞行前请求,因此该请求将被阻止,有时,该请求将通过,但不会将响应提供给Mallory的站点。如果您想防御存在危险的攻击,请查阅CSRF。服务器在收到请求时执行的操作,而不是响应中的信息泄漏。
CORS允许Bob声明他网站上的资源不包含任何个人信息,因此可以安全地允许其他网站访问它(或者可以使用该个人信息来信任特定网站)。
XSS是完全不同的安全性问题。您需要防止人们注入(inject)JS。
关于javascript - Access-Control-Allow-Origin和CORS背后的概念是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21939495/