为了账号安全,请及时绑定邮箱和手机立即绑定

设置访问控制允许来源有哪些安全隐患?

/ 猿问

设置访问控制允许来源有哪些安全隐患?

跃然一笑 2019-10-10 15:49:09

我最近不得不设置Access-Control-Allow-Origin*,以便能够进行跨子域的ajax调用。
现在,我不禁感到自己正在使环境面临安全风险。
如果我做错了,请帮助我。

查看完整描述

3 回答

?
潇潇雨雨

通过使用响应Access-Control-Allow-Origin: *,所请求的资源允许与每个来源共享。基本上,这意味着任何站点都可以向您的站点发送XHR请求并访问服务器的响应,如果您尚未实现此CORS响应,则不会这样。


因此,任何站点都可以代表其访问者向您的站点发出请求并处理其响应。如果您基于浏览器自动提供的内容(例如cookie,基于cookie的会话等)实施了诸如身份验证或授权方案之类的内容,则由第三方站点触发的请求也将使用它们。


这确实带来了安全风险,尤其是如果您不仅允许共享所选资源,还允许共享每个资源的资源,则尤其如此。在这种情况下,您应该看看何时可以安全启用CORS?。


查看完整回答
反对 回复 2019-10-10
?
慕标琳琳

Access-Control-Allow-Origin: *完全安全地添加到任何资源中,除非该资源包含受非标准凭据(Cookie,基本身份验证,TLS客户端证书)以外的内容保护的私有数据。


例如:受Cookie保护的数据是安全的

想象一下https://example.com/users-private-data,根据用户的登录状态,它可能会公开私有数据。此状态使用会话cookie。添加到此资源是安全的Access-Control-Allow-Origin: *,因为只有在没有cookie的情况下发出请求,并且需要cookie才能获取私有数据时,此标头才允许访问响应。结果,没有私有数据泄漏。


例如:受位置/ IP /内部网络保护的数据并不安全(不幸的是,内部网和家用电器很常见):

想象一下https://intranet.example.com/company-private-data,它公开了私人公司的数据,但是只有当您在公司的wifi网络上时,才能访问该数据。这是不是安全添加Access-Control-Allow-Origin: *到这个资源,因为它使用比标准凭据以外的东西保护。否则,错误的脚本可能会将您用作通往Intranet的隧道。


经验法则

想象一下,如果用户在隐身窗口中访问资源,将会看到什么。如果您对每个人都能看到此内容(包括浏览器收到的源代码)感到满意,则可以安全地添加Access-Control-Allow-Origin: *。


查看完整回答
反对 回复 2019-10-10
?
慕娘9325324

AFAIK,Access-Control-Allow-Origin只是从服务器发送到浏览器的http标头。将其限制为一个特定的地址(或禁用它)不会使您的网站更安全,例如,机器人。如果机器人愿意,他们可以忽略标题。默认情况下,常规浏览器(Explorer,Chrome等)使用标头。但是像Postman这样的应用程序只会忽略它。


当服务器端返回响应时,它实际上并不检查请求的“来源”。它只是添加http标头。发送请求的是浏览器(客户端),它决定读取访问控制标头并对其执行操作。请注意,在XHR的情况下,它可以使用特殊的“ OPTIONS”请求首先请求标头。


因此,任何具有创造性脚本功能的人都可以轻松忽略整个标头,无论其中设置了什么。


另请参阅设置Access-Control-Allow-Origin的可能的安全问题。


现在要实际回答问题


我忍不住觉得自己正在使我的环境面临安全风险。


如果有人想攻击您,他们可以轻松绕过Access-Control-Allow-Origin。但是通过启用“ *”,您确实可以给攻击者更多的“攻击向量”,例如,使用支持该HTTP标头的常规网络浏览器。


查看完整回答
反对 回复 2019-10-10

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信