我对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的增值。
谢谢
答案 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是攻击者的站点。