javascript - 同源策略与 CORS 的用处

标签 javascript cross-domain cors same-origin-policy

我读过一些有关同源策略和 CORS 的文章,但仍然不太了解它给用户带来的安全性。

同源策略提供了真正有值(value)的安全性,可以防止某个来源的网站访问另一个网站上的某些网页内容。从而防止容器脚本访问 iframe 内容的威胁,可能是伪造/网络钓鱼网站。

但是 AJAX 和 CORS 来了。 CORS 使服务器能够控制哪些源可以访问它。但是,最后,如果不允许,浏览器会在 header 手工检查后停止请求。

所以,想象一下您遇到了一些恶意网站 myphishing.com。您希望通过 AJAX 请求向此网站显示来自另一个受信任网站 mybank.com 的信息。这个受到配置良好的 CORS header 的保护,仅允许来自 mybank.com 来源的请求。如果我是 myphising.com 的作者,通过代理将所有请求转发到 mybank.com,该代理会更改请求和响应方式中的 header 以伪造客户端浏览器和银行服务器?似乎可以更改 mybank.com 请求中的 origin header ,并更改 CORS 响应 header 以使浏览器认为 myphishing.com 被允许提出请求。 header 手动检查已通过,然后您可以发送请求并使用类似的 header 替换技巧获取响应。

也许我完全被误导了,但如果有人能告诉我我在哪里误解了整个事情,我会非常高兴。

可能重复,但我在这里没有找到答案:What is the threat model for the same origin policy? .

最佳答案

What if, me author of myphising.com, relay all requests to mybank.com by a proxy that alter headers in both request and response way to fake client browser and bank server?

无论如何,无论是否有 CORS,您都可以这样做。

但是,如果请求来自您的代理,那么它无法知道如果请求来自浏览器,浏览器将向服务器发送哪些凭据。

关于javascript - 同源策略与 CORS 的用处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757343/

相关文章:

javascript - 从父文档获取 iframe URL 位置

jquery - Chrome 说没有 'Access-Control-Allow-Origin' header ,但 header 在那里

node.js - Express + Passport.js : req. 用户未定义

javascript - Cookie 只发送到一个 API

javascript - 停留在一个简单的对象文字范围/引用问题上

javascript - 根据页面属性上的路径移动 AEM Touch UI 页面

javascript - Accordion 中的鼠标悬停和鼠标移出

javascript - 使用跨域帖子发送凭据?

javascript - 跨站点服务器上的 jQuery/Ajax 请求不使用该服务器上设置的 (auth) cookie

apache - 带有 Cloudflare 的 Drupal 7 上的 CORS Access-Control-Allow-Origin 错误