【问题标题】:CORS header flow [duplicate]CORS 标头流 [重复]
【发布时间】:2018-12-15 11:06:15
【问题描述】:

我不明白 CORS 标头的某些内容:

假设我在这个域上有我的网站:http://myverynicesite.com

假设黑客设法在我的网站上注入了恶意 javascript 代码。

此恶意 javascript 正在向黑客的网站发送数据:http://hackerwebsite.com

CORS 标头有一些我不理解的地方:允许的标头是在 Web 服务站点上设置的。因此,黑客只需添加此标头即可:

<?php
header("Access-Control-Allow-Origin: http://myverynicesite.com");
?>

我不明白为什么 CORS 不适用于倒流?我在想 myverynicesite.com 应该允许使用 CORS 的hackerwebsite.com。我看到这是hackerwebsite.com,它允许myverynicesite.com。

所以我不明白 CORS 的附加值。

谢谢

【问题讨论】:

  • 如果我没记错的话,发送Access-Control-Allow-Origin标头的是服务器,而不是客户端。

标签: cors


【解决方案1】:

同源策略旨在阻止站点 A 上运行的 JavaScript 读取站点 B 愿意与浏览器所有者共享的数据。

例如:Evil Site 无法使用我的浏览器向 GMail 发出 HTTP 请求并阅读我的电子邮件(Evil Site 可以随后将其转发给 Evil Hacker)

CORS 旨在放宽该政策,以便站点 B 可以授予站点 A 访问数据的权限。

如果攻击者将 JS 注入到站点 B,那么 JS 将在站点 B 上运行。它不需要任何特殊权限即可从站点 B 读取数据,因为它是同源的。

攻击者的 JS 在站点 B 上运行,然后可以将数据发送到站点 A。它不需要特殊权限来执行此操作,因为它是发送数据,而不是读取数据。即使它确实需要许可,站点 A 也会授予它,因为站点 A 是攻击者的站点。

【讨论】:

    【解决方案2】:

    JavaScript 在您的计算机上运行,​​而不是在服务器上,因此如果有人设法让 JavaScript 运行,这并不意味着 PHP 将在您的服务器上执行。

    另外,CORS 主要是为了保护您的网站免受其他人的攻击。

    假设您有一个 rubbishbank.com 帐户,他们将您的所有信用卡详细信息放在一张图片中。如果没有 CORS,如果您在登录 rubbishbank.com 时访问 badsite.com,攻击者就可以从 badsite.com 请求该图像并将其发送到他们的服务器; CORS 阻止了这一点。

    只有在 rubbishbank.com 允许来自 badlysecuredbankpartner.com 的 CORS(rubbishbank.com 需要在您的问题中包含您正在谈论的标题)并且该站点受到 XSS 攻击或类似情况时,CORS 才会在此处失败;由于 rubbishbank.com 已为 badlysecuredbankpartner.com 禁用了 CORS,因此 rubbishbank.com 不受其或任何运行在其上的 JavaScript 的保护。

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2017-03-21
      • 2017-01-09
      • 2023-04-01
      相关资源
      最近更新 更多