Access-Control-Allow-Origin 和 CORS 背后的概念是啥?
Posted
技术标签:
【中文标题】Access-Control-Allow-Origin 和 CORS 背后的概念是啥?【英文标题】:What is the concept behind Access-Control-Allow-Origin and CORS?Access-Control-Allow-Origin 和 CORS 背后的概念是什么? 【发布时间】:2014-03-23 06:23:52 【问题描述】:我真的不明白 Access-Control-Allow-Origin
和 CORS。
如果我允许来自任何域的请求到我的页面,这是否意味着我的页面存在任何安全问题?
我一直认为,SOP 确保不能在页面上运行任何脚本,该脚本从另一台服务器请求数据,因为该数据可能是恶意的。但是,因为提供恶意数据的服务器可以只回复包含Access-Control-Allow-Origin:*
的标头,所以可以从该服务器加载所有内容。
因此,一旦有人设法将一段 JS 代码注入页面,每个恶意代码都可以从属于攻击者的服务器加载。
Unitl 现在我假设我必须启用跨域请求以允许我的页面上的代码从另一个域请求数据,但它似乎是相反的;另一个域必须允许我的域请求数据。 我并没有真正看到这个概念的安全优势。 任何人都可以解释这背后的概念或告诉我我是否完全错了?
【问题讨论】:
任何代码都可以从其他服务器加载,只是不能与非jsonp请求进行双向通信。 CORS 是一种握手,表示是的,您可以与我交谈并获取数据。 【参考方案1】:给定:
Alice,使用浏览器的用户 Bob,拥有网站的网站所有者 Mallory,一个拥有网站的恶意网站所有者Alice 在 Bob 的服务器上有一个帐户。也许是她的网络邮件。也许是她的网上银行。也许这是她喜欢购物的地方。
Alice 访问 Mallory 的网站,却不知道它是邪恶的。
同源政策阻止 Mallory 的网站使用 javascript 告诉 Alice 的浏览器向 Bob 的网站发出请求,并将 Alice 的个人信息(例如她的银行余额)提供给 Mallory 的网站(因此也提供给 Mallory)。
(有时请求会被阻止,因为条件需要飞行前请求,有时请求会通过,但不会将响应提供给 Mallory 的站点。如果您想防御攻击,请查找 CSRF危险在于服务器在收到请求时所做的事情,而不是响应中泄漏的信息)。
CORS 允许 Bob 说他网站上的资源不包含任何个人信息,因此允许其他网站访问它是安全的(或者可以信任特定网站的个人信息)。
所以一旦有人设法将一段 JS 代码注入到页面中,
XSS 是一个完全不同的安全问题。你需要防止人们注入 JS。
【讨论】:
很好的解释!我想我现在明白了……我认为这与 XSS 有关。谢谢!以上是关于Access-Control-Allow-Origin 和 CORS 背后的概念是啥?的主要内容,如果未能解决你的问题,请参考以下文章