小编典典

CORS是执行跨域AJAX请求的安全方法吗?

ajax

阅读有关CORS(跨源资源共享)的信息后,我不了解它如何提高安全性。如果发送了正确的ORIGIN标头,则允许跨域AJAX通信。例如,如果我发送

来源:http//example.com

服务器检查此域是否在白名单中,以及是否在标头中:

访问控制允许来源:[此处接收的网址]

与响应一起发送回去(这是简单的情况,也有预先要求的请求,但问题是相同的)。

这真的安全吗?如果有人想接收该信息,则伪造ORIGIN标头似乎是一件非常琐碎的任务。该标准还指出,该策略是在浏览器中实施的,如果Access-
Control-Allow-Origin不正确,则会阻止响应。显然,如果有人试图获取该信息,他将不会使用标准的浏览器来阻止它。


阅读 285

收藏
2020-07-26

共1个答案

小编典典

您无法在网络浏览器中使用JavaScript伪造Origin标头。CORS旨在防止这种情况。

在网络浏览器之外,这无关紧要。它并非旨在阻止人们获取可供公众使用的数据。没有公众的了解,您就无法将其公开。

它的设计目的是给定:

  • Alice,提供旨在通过Ajax访问的API的人
  • 鲍勃(Bob),拥有网络浏览器
  • 查理(Charlie),运行自己的网站的第三方

如果Bob访问Charlie的网站,则Charlie无法将JS发送到Bob的浏览器,以便它从Alice的网站获取数据并将其发送给Charlie。

如果Bob在Alice的网站上拥有一个用户帐户,从而使他能够执行诸如发表评论,删除数据或查看公众 无法
获得的数据之类的事情,上述情况就变得更加重要-
因为在没有保护的情况下,Charlie的JS可以告诉Bob的浏览器在Bob的背后进行操作(然后将结果发送给Charlie)。

如果要阻止未经授权的人员查看数据,则需要使用密码,SSL客户端证书或其他一些基于身份的身份验证/授权方式来保护数据。

2020-07-26