CORS是否可以防止“违反网络拓扑”?

时间:2019-01-29 22:17:16

标签: cors

我正在搜索CORS默认情况下禁用浏览器的原因。 我以为我在旧帖子中找到了带有示例的答案

  

Why is CORS without credentials forbidden?这里主要要考虑的是基于网络拓扑的访问控制。 假设您在您的家庭网络上运行HTTP服务(实际上,如果路由器本身具有Web界面,则几乎可以确定)。我们将这项服务称为R,只有连接到家庭路由器的机器才能使用该服务。   当您的浏览器访问evil.example.com时,该站点将为您的浏览器提供一个脚本,告诉它获取R的内容并将其发送回evil.example.com。即使没有凭据,这也可能很糟糕,因为这违反了以下假设:本地网络外部的任何人都无法查看本地网络中运行的服务。同源政策阻止了这种情况的发生。

然后我实际上读了一个关于CORS机制的观察,听起来不错

  

Why is CORS Disabled by Default? CORS基于从API返回的响应标头。并不是API拒绝响应请求,Web浏览器明确禁止处理响应。 API将正常处理请求。

因此,我对第一个引用的“示例” 表示怀疑:由于启用CORS是通过将正确的标头(Access-Control-Allow-Origin,...)设置为服务器响应来完成的,因此保护是否会绕过它,“ evil.example.com”只需要“在响应中设置标头以在客户端上启用CORS”即可?

如果是,是否还有其他简单示例说明为何禁用CORS?

1 个答案:

答案 0 :(得分:0)

CORS是一个禁用“相同来源策略”的系统。这是放松安全性的一种手段,而不是安全性功能。

同一起源策略可防止Site Evil使用用户的浏览器(和凭据)从Site Secret中读取数据。

Site Evil无法添加CORS标头来禁用“相同来源策略”并允许其读取“站点秘密”。只有Site Secret可以做到。

“同源起源策略”不能防御CSRF attacks。如果网站信任允许HTTP请求进行需要身份验证的更改,则应采取措施确保它不受CSRF的攻击。<​​/ p>