gpt4 book ai didi

http - 在安全方面,允许特定域的 CORS 有意义吗?

转载 作者:可可西里 更新时间:2023-11-01 16:32:26 25 4
gpt4 key购买 nike

我们可以设置并允许跨源资源共享

所有域特定域不允许任何域

但我想知道是否允许 CORS特定域有意义。


如果黑客知道服务器允许的域。 (例如 www.facebook.com)

黑客可以将请求中的 origin header 伪造为 www.facebook.com


因此,从安全的角度来看。我认为只有 Allow all domainsNot allow for any domains 才有意义。因为很容易伪造请求者的来源

我说得对吗??

最佳答案

浏览器是执行 CORS 限制的地方。浏览器知道脚本运行的真实来源。这就是它们的工作方式。如果他们不这样做,Web 上的安全性就会为零。

因此,浏览器会根据他们所知道的生成 XHR 或 fetch() 的 JavaScript 代码的真正来源进行 CORS 检查。请求—不反对 Origin 的值标题。

浏览器设置 Origin请求 header 并首先通过网络发送它。浏览器设置 Origin值(value)基于他们所知道的真正来源,而不是供他们自己使用——因为他们已经知道来源是什么,并且该值(value)是他们在内部使用的。

所以即使你设法改变一个Origin header 浏览器通过网络发送,这对浏览器来说无关紧要——它将忽略该值并继续检查真实来源。


更多详情

就 CORS 而言,服务器只是发回文档,带有 Access-Control-Allow-Origin header 和其他 CORS header ,发送给任何请求它们的客户端。

考虑一下你是否使用curl或者从服务器请求文档的东西:服务器不检查 Origin如果请求来源与 Access-Control-Allow-Origin 不匹配,则拒绝发送文档 header 。服务器无论如何都会发送响应。

就客户而言,curl和非浏览器工具没有起源的概念,因此通常不会发送任何 Origin标题开头。你可以制作curl发送一个——你想要的任何值——但这毫无意义,因为服务器不关心值是什么。

curl等,不要检查 Access-Control-Allow-Origin 的值服务器发送的响应头,如果请求的 Origin 拒绝获取文档 header 与 Access-Control-Allow-Origin 不匹配服务器响应中的 header 。他们只是拿到文件。

但是浏览器不同。浏览器引擎实际上是唯一具有起源概念的客户端,并且知道运行 Web 应用程序的 JavaScript 的实际起源。

curl不同等,如果 XHR 或 fetch(),浏览器将不会让您的脚本获取文档。请求它的调用来自服务器的 Access-Control-Allow-Origin 中不允许的来源标题。

再一次,浏览器确定来源的方式是已经知道来源是什么,而不是基于任何Origin 的值。请求 header 可能最终会在请求中发送。

关于http - 在安全方面,允许特定域的 CORS 有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40835863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com