ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 如何确保只有我自己的网站(客户端代码)可以与Firebase后端通信?

2019-09-17 11:33:37  阅读:253  来源: 互联网

标签:firebase-security javascript firebase security client-side


我读过大约Firebase,它看起来很棒,我想做什么.
我已经阅读了有关身份验证以及如何根据规则确定某些登录用户有权执行不同的操作.好的.

但是,我不确定另一种类型的安全性:我如何确保只有我自己的站点(使用客户端javascript)可以与我的firebase-backend通信?我问,因为afaik没有办法阻止任何人从客户端代码(url指向我的特定firebase后端)查找我的firebase端点并开始使用它,因为上帝知道什么.

在我想要打开匿名用户角色的写入的情况下,这尤其令人担忧. (例如:某些分析)

任何有助于清除我的想法的人都非常感激.

解决方法:

在我看来,这不是一个关于Firebase安全性的问题,而是对今天互联网架构的一般性讨论.由于网络是一个开放的平台,因此您无法阻止任何人访问网址(包括您的Firebase),因为您可以阻止某人在现实世界中驾车经过您的房屋.如果可以的话,访客仍然可以在原产地撒谎,也无法阻止它.

通过身份验证保护您的数据使用Forge中的授权域来阻止CSRF.将security rules放在适当的位置以防止用户做他们不应该做的事情.大多数数据写入您将使用服务器来防止可以单独使用安全规则来完成.

实际上,这实际上是Firebase和API服务的一个更好的特性.客户端完全隔离,因此可以轻松更换或扩展.只要你能证明你被允许进入并遵守规则,你所在的地方就不重要了.

关于匿名访问,如果你只能让他们访问你的网站,那仍然不会阻止恶意写入(我可以打开我的JavaScript调试器,并在你的网站上写多次).相反,对匿名用户可写入的数据的格式,内容和长度设置严格的安全规则,或者节省一些时间并找到现有服务来为您处理分析,例如无处不在的Google Analytics.

当然,您可以像使用任何数据存储一样使用服务器作为中介.这对于某些高级逻辑非常有用,这些逻辑不能由安全规则强制执行或者对经过身份验证的用户信任(如高级游戏机制).但即使您将Firebase(或任何数据库或服务)隐藏在服务器后面以防止访问,服务器仍将拥有API,并且仍然面临识别客户端起源的所有相同挑战,只要它在网络上即可.

匿名访问的另一种替代方法是使用custom login,这将允许服务器创建自己的Firebase访问令牌(用户不必为此进行身份验证;令牌的签名完全取决于您).这是有利的,因为如果匿名用户行为不当,则可以撤销访问令牌(by storing a value in Firebase,安全规则使用by storing a value in Firebase来强制访问).

UPDATE

Firebase现在已经内置了简单登录anonymous authentication,这里不需要使用自定义登录常见用例.

标签:firebase-security,javascript,firebase,security,client-side
来源: https://codeday.me/bug/20190917/1809373.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有