我正在开发一款Android应用程序,该程序从Firebase数据库中读取数据。应用程序用户不会登录或修改数据库。所有应用程序用户将查看相同的数据;我使用Firebase是为了其实时更新功能。
理想情况下,我希望限制对数据库的访问,以便仅我的应用程序可以读取数据。
我知道有几件事情可以做:
1.编写安全规则,允许任何人阅读,也就是说,
{
"rules": {
".read": true,
".write": false
}
}
缺点:任何人都可以阅读 :(
2.编写安全规则,允许已认证的用户读取数据,然后在应用程序中硬编码用户名和密码。
{
"rules": {
"$user_id":{
".read": "auth.uid === $user_id",
".write": false
}
}
}
反:在应用程序中硬编码用户名和密码似乎非常不正确。而且,它实际上并没有锁定数据库,因为任何人都可以反编译应用程序,获取google-services.json
和硬编码的用户名/密码,并编写他们自己的应用程序,共享我的包名称。
通过搜索发现这个,它专门针对写入操作,以及这个,虽然几年前发布但也回答了类似问题。
限制对数据库访问的正确方法是什么?我是从错误方向考虑的吗?