我正在开发一个从
Firebase database读取的Android应用程序.应用程序用户不会登录或修改数据库.所有应用用户都将查看相同的数据;我正在使用Firebase进行实时更新.
理想情况下,我想限制对数据库的访问,以便只有我的应用程序才能读取数据.
我知道我可以做的一些事情:
1.编写允许任何人阅读的安全规则,即
{ "rules": { ".read": true,".write": false } }
骗局:任何人都可以阅读:(
2.编写allow authenticated users to read的安全规则,然后将用户名和密码硬编码到应用程序中
{ "rules": { "$user_id":{ ".read": "auth.uid === $user_id",".write": false } } }
Con:在应用程序中硬编码用户名和密码似乎非常错误.此外,它实际上并没有锁定数据库,因为任何人都可以反编译应用程序,获取google-services.json和硬编码的用户名/密码,并编写自己的应用程序来共享我的包名.
解决方法
3.使用FirebaseAuth和signInAnonymously()方法
参考:https://firebase.google.com/docs/auth/android/anonymous-auth
然后调整安全规则:
{ "rules": { ".read": "auth != null",... } }
Con:多个帐户仅用于读取相同的数据