Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 在安全方面,允许特定域的COR有意义吗?_Http_Cors - Fatal编程技术网

Http 在安全方面,允许特定域的COR有意义吗?

Http 在安全方面,允许特定域的COR有意义吗?,http,cors,Http,Cors,我们可以设置并允许跨源资源共享 所有域,特定域和不允许任何域 但我想知道允许特定领域的CORS有意义 如果黑客知道服务器允许的域。(例如www.facebook.com) 黑客可以将请求中的源标题伪造为www.facebook.com 因此,从安全的角度来看。我认为只有允许所有域和不允许任何域才有意义。因为很容易伪造请求者的来源 我说得对吗?浏览器是强制执行CORS限制的地方。浏览器知道脚本运行的真正来源。他们就是这样工作的。如果他们不这样做,网络上的安全性将为零 因此,浏览器会根据已知的J

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

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

但我想知道允许特定领域的CORS有意义


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

黑客可以将请求中的源标题伪造为
www.facebook.com


因此,从安全的角度来看。我认为只有允许所有域不允许任何域才有意义。因为很容易伪造请求者的来源


我说得对吗?

浏览器是强制执行CORS限制的地方。浏览器知道脚本运行的真正来源。他们就是这样工作的。如果他们不这样做,网络上的安全性将为零

因此,浏览器会根据已知的JavaScript代码的真实来源进行CORS检查,而不是根据
origin
头的值进行XHR或
fetch()
请求

浏览器是设置
Origin
请求头并通过网络发送它的开始。浏览器根据他们知道的真实原点设置
原点
值,而不是为自己使用,因为他们已经知道原点是什么,并且该值是他们内部使用的值

因此,即使您设法更改浏览器通过网络发送的
原点
头,这对浏览器来说也无关紧要,它将忽略该值并继续检查真实原点


更多详细信息

就CORS而言,服务器只需将带有
Access Control Allow Origin
头和其他CORS头的文档发回任何请求它们的客户端

考虑是否使用
curl
或其他方法从服务器请求文档:服务器不检查
Origin
标题,如果请求的来源与
Access Control Allow Origin
标题不匹配,则拒绝发送文档。不管怎样,服务器都会发送响应

就客户端而言,
curl
和非浏览器工具没有原点的概念,因此通常不发送任何
origin
头。您可以让
curl
发送一个包含您想要的任何值的文件,但这是毫无意义的,因为服务器不关心该值是什么

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

但是浏览器是不同的。浏览器引擎实际上是唯一一个一开始就有原点概念,并且知道Web应用程序JavaScript运行的实际原点的客户端

curl
等不同,如果请求文档的XHR或
fetch()
调用来自服务器的
Access Control Allow origin
头中不允许的源,浏览器将不允许脚本获取文档


同样,浏览器通过已经知道源代码是什么来确定源代码是什么,而不是基于请求中可能最终发送的任何
origin
请求头的值。

请看,CORS的安全透视图不是服务器,而是用户代理,这有助于我正确记住这个概念。所有选项都不会为您保存保护服务器的表单。