在没有 Firebase 身份验证的情况下保护 Firebase 数据库
Posted
技术标签:
【中文标题】在没有 Firebase 身份验证的情况下保护 Firebase 数据库【英文标题】:Securing Firebase Database without having Firebase Auth 【发布时间】:2020-01-10 04:32:42 【问题描述】:我正在通过关注Codelab Firebase Tutorial 来学习 Flutter,并开发与此类似的测试 android 应用程序。用户保存他们的婴儿名字,其他人投票他们最喜欢的,这会更新数据库中的投票数。基于此,我有几个与 Firebase 安全相关的问题。
-
应用当前没有任何 Firebase 身份验证。是否有必要让 Firebase Auth 看到将投票的用户不需要任何形式的注册。
有人可以反编译我的应用程序并获取 google-services.json 文件吗?如果是,这是否允许他们在他们的应用中使用此文件并弄乱我的数据库?
如果我不包括 Firebase 身份验证并将安全规则保持为默认值(读取、写入全部),我的应用对于非用户(如我在上面提到的)的安全性如何?
抱歉,由于我仍处于应用程序开发的学习阶段,因此未能正确传达我的观点。
【问题讨论】:
【参考方案1】:如果您想要对每个用户进行读/写限制,则必须使用 Firebase 身份验证。如果您不使用它,您只能限制世界上任何人可以通过公共访问执行的操作。
是的,任何人都可以从您的 google-services.json 文件中获取值。它们作为字符串资源添加到您的应用程序中。不,它不允许任何人访问所有内容。您在这里问的问题很常见,请尝试进行一些搜索。例如this。
如果您使用允许所有读取和写入访问的安全规则,任何有互联网连接的人都可以读取和写入您的数据库。在大多数情况下,这是不可接受的。
【讨论】:
谢谢。如果我添加(比如说)电子邮件/密码登录方法并相应地设置安全规则,这是否足以保护我的应用免受某人对应用源代码进行逆向工程以更改我的数据库? 不,这是 Firebase 身份验证的主要目的之一 - 以每个用户为基础控制对项目资源的访问。 谢谢道格。那很有帮助。我会进一步研究如何让应用更安全。以上是关于在没有 Firebase 身份验证的情况下保护 Firebase 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有客户端身份验证的情况下从服务器验证 Firebase 用户?
如何在没有身份验证的情况下添加 Firebase 数据库规则?
使用 Firebase 登录的 Loopback 4 身份验证
在不使用 Firebase 的情况下使用电子邮件和密码进行 Flutter 身份验证