我正在研究Firebase实时数据库的身份验证,并且有几个问题我似乎找不到答案 .

我们有一个Firebase实时数据库,其中包含一系列应该可供所有用户访问的数据 . 但是,它只能通过我们的移动应用程序访问,最好不需要用户注册和登录 . 用户不会写入数据库,它只是我们担心的阅读部分 . 我们不希望有人通过脚本/应用程序“复制”整个数据库 .

这个问题与Restrict Firebase database access to one Android appFirebase Read Only With No Authentication from App非常相似 . 在这些讨论中,建议使用匿名身份验证https://firebase.google.com/docs/auth/web/anonymous-auth .

如果我正确理解匿名身份验证,它将无法解决问题 . 任何人都可以使用Firebase SDK从他们自己的脚本/应用程序连接到同一个Firebase网址,只需匿名登录即可 . 这将允许他们阅读我们的所有数据 .

即使集成了用户登录,例如Facebook或谷歌,我们的数据仍将面临遭受损害的巨大风险 . 任何人都可以在我们的应用中创建用户 . 之后,他们可以创建自己的Firebase脚本/应用程序,并与该用户连接到我们的数据库并检索数据 .

讨论Restrict Firebase database access to one Android app讨论了限制仅访问移动应用程序的可能解决方案 . 这可以通过使用API密钥或用户名/密码组合来完成 . 然后,这将在应用程序中进行硬编码或通过服务发送 . 如讨论中所述,由于反编译,硬编码似乎既麻烦又不安全,如果用户名/密码组合由于某种原因而改变,将来很难更新 . 通过服务发送API密钥也是不安全的,因为任何人都可以从外部请求服务 . 如How to prevent other access to my firebase中所述,没有办法保护网址 .

这是可以实现还是我遗漏了什么?