限制Firebase数据库访问权限只针对一个Android应用程序

20

我正在开发一款Android应用程序,该程序从Firebase数据库中读取数据。应用程序用户不会登录或修改数据库。所有应用程序用户将查看相同的数据;我使用Firebase是为了其实时更新功能。

理想情况下,我希望限制对数据库的访问,以便仅我的应用程序可以读取数据。

我知道有几件事情可以做:

1.编写安全规则,允许任何人阅读,也就是说,

{
  "rules": {
     ".read": true,
     ".write": false
  }
}

缺点:任何人都可以阅读 :(

2.编写安全规则,允许已认证的用户读取数据,然后在应用程序中硬编码用户名和密码。

{
  "rules": {
    "$user_id":{
       ".read": "auth.uid === $user_id",
       ".write": false
    }
  }
}

反:在应用程序中硬编码用户名和密码似乎非常不正确。而且,它实际上并没有锁定数据库,因为任何人都可以反编译应用程序,获取google-services.json和硬编码的用户名/密码,并编写他们自己的应用程序,共享我的包名称。

通过搜索发现这个,它专门针对写入操作,以及这个,虽然几年前发布但也回答了类似问题。

限制对数据库访问的正确方法是什么?我是从错误方向考虑的吗?


1
你连接的答案仍然是正确的:没有办法限制对Firebase数据库的访问仅限于您的应用程序。 - Frank van Puffelen
好的,谢谢@FrankvanPuffelen。 - Michiyo
你的最终选择是什么? - androfan
1
@michiyo,你最终解决了这个问题吗? - NullHypothesis
不好意思,据我所知没有办法。 - Michiyo
2个回答

7

1
这似乎比第二种方法还不够安全,因为我将失去隐藏/加密/混淆(虽然不是很好,但总比没有强)用户名和密码的能力。您能澄清一下为什么您认为这更好吗? - Michiyo

-1

当您将应用程序添加到Firebase项目时,必须指定应用程序的SHA1证书,以便除了您之外的任何人都无法访问您的数据。


10
不正确。使用 ".read": true,任何人都可以通过 http://project_name.firebaseio.com/ 访问基于Web的数据库界面。 - androfan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接