缩放、CORS 和网络

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 提供适合您旅程每个阶段的云产品。 立即开始使用 200 美元的免费信用额度!

有点可悲又有趣的是,Zoom 的重大漏洞 最终与网络技术有关,而不是与应用程序本身有关。

存在自定义协议或“URL 方案”。 因此,就像 gittower://dropbox:// 或其他一些方案。 本机应用程序可以注册它们,然后命中它们的URL 将传递给本机应用程序。iOS“通用链接”,这些链接据称即将出现在网络上。(Atishay Jain 有关于它们的精彩文章。)但是,这样的链接没有多少选择——它们*将*在应用程序中打开。 如果您的应用程序同时具有网络和本机组件,您可能希望为用户提供选择。 因此,您使用常规的URL 而不是这种链接。

为了让该网页打开一个本机应用程序,显然,许多人使用的策略是让它与运行在您自己计算机上的本地主机上的服务器进行通信,该服务器使用URL 方案来打开本机应用程序。 很巧妙,但我从像这样的人那里听说过这种观点:

  • 我不知道这款软件在我的机器上运行着一个本地主机服务器。
  • 感觉很奇怪,互联网上的网站可以与我的本地主机服务器通信。

但情况就是这样。 但是,有一些保护措施。 即:CORS(跨域资源共享)。 哎呀。 我感觉我每周都会遇到某种CORS 问题。 但是它很重要。 它可以防止来自未经授权的网站的XHR 请求。 想象一下,您访问了我的网站,而我让您的浏览器向 Facebook 发送请求,希望您已登录以便我可以代表您执行操作。 糟糕。CORS 无法阻止这种情况,浏览器的同源策略可以阻止这种情况。CORS 是控制这种机制的机制。

如果我的网站尝试与您的网站通信,而您的网站的响应中没有包含具有我的域名或*Access-Control-Allow-Origin 标头,它将失败。 但并非*所有*内容都受CORS 限制。 例如,图像不受限制。 我们可以从任何域链接图像,它们将返回数据。

Chris Foster 认为,CORSCORS 的缺乏了解 是 Zoom 漏洞的症结所在。

Zoom 可能需要发布此功能,并且没有理解CORS。 他们无法在浏览器禁止尝试的情况下发出 AJAX 请求。 相反,他们创建了这种图像黑客来绕过CORS。 通过这样做,他们使 Zoom 容易受到严重漏洞的攻击,因为不仅 Zoom 网站可以触发本机客户端中的操作并访问响应,而且互联网上的所有其他网站也可以这样做。

在此事件发生后,Nicolas Bailly 撰写了“您应该了解 CORS”

这通常是新手感到困惑的地方,因为他们无法立即明白CORS 应该实现什么。 首先,CORS 本身不是安全措施,它实际上是相反的:CORS 是一种绕过“同源策略”的方法,同源策略是阻止您对不同域发出 [AJAX] 请求的安全措施。