当前位置: 首页 > 面试题库 >

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

蒯宏达
2023-03-14
问题内容

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

来源:http://example.com

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

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

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

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


问题答案:

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

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

它的设计目的是给定:

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

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

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

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



 类似资料:
  • 本文向大家介绍JQuery Ajax执行跨域请求数据的解决方案,包括了JQuery Ajax执行跨域请求数据的解决方案的使用技巧和注意事项,需要的朋友参考一下 今天前端因为需要ajax调用两个不同的项目,请求域不一样,所以涉及ajax跨域的问题 ,其实很简单,具体如下 原来的ajax请求如下: 只需改动ajax固定参数 dataType:"jsonp", crossDomain:true, jso

  • 本文向大家介绍跨域请求两种方法 jsonp和cors的实现,包括了跨域请求两种方法 jsonp和cors的实现的使用技巧和注意事项,需要的朋友参考一下 在网站后台跨域访问另一服务器时,若被访问服务器未设置response[‘Access-Control-Allow-Origin'] = ‘*' 那么将无法获取。 jsonp方法 伪造ajax提交请求 请求端 服务端 jsonp获电视台节目案例 取到

  • 问题内容: 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。 我在脚本顶部仅添加了以下两行,以使它们能够做到: 现在我的问题是:这里是否遗漏了任何安全方面的考虑?这个简单的解决方案会带来严重的问题吗? 如果是这样,什么是更好的解决方案? 感谢您的回复。 问题答案: 如上所述,任何人都可以随时向您的页面发送请求:因此,您需要考虑的主

  • 问题内容: 如何使用XDomainRequest正确重写Ajax请求以使其在IE 8 +中工作? 问题答案: 将此插件用于IE8-9 Xdomain支持。 https://github.com/MoonScript/jQuery-ajaxTransport- XDomainRequest

  • 问题内容: curl -v -X POST -H “Authorization: Basic ” -k -d “grant_type=password&username= &password= ” -H “Content-Type:application/x-www-form-urlencoded” https://localhost:9443/oauth2/token (来自 https://d

  • 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展<我只是在我的脚本顶部添加了这两行,让他们完成这项任务: 现在我的问题是:这里有我错过的任何安全考虑吗?这个简单的解决方案会产生严重的问题吗? 如果是,更好的解决方案是什么? 感谢您的回复。