CORS标头流程

时间:2018-07-06 20:24:41

标签: cors

我对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。我看到这是允许myverynicesite.com的hackerwebsite.com。

所以我不理解CORS的增值。

谢谢

2 个答案:

答案 0 :(得分:0)

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

此外,CORS主要是为了保护您的网站不受他人的侵害。

假设您在rubbishbank.com上拥有一个帐户,并且他们将您的所有信用卡详细信息都放在一张图片中。如果没有CORS,攻击者可能只是从badsite.com请求该图像并将其发送到他们的服务器,如果您在登录rubbishbank.com时访问badsite.com。 CORS停止了此操作。

仅当rubbishbank.com允许来自badlysecuredbankpartner.com的CORS(rubbishbank.com需要具有您所谈论的标头)且该站点受到XSS攻击或类似攻击时,CORS才会失败。由于rubbishbank.com已为badlysecuredbankpartner.com禁用了CORS,因此rubbishbank.com不受此保护,也不受其上运行的任何JavaScript的保护。

答案 1 :(得分:0)

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

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

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

如果攻击者向站点B注入JS,则JS将在站点B上运行。它不需要任何特殊权限就可以从站点B读取数据,因为它是同一源。

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