我是Firebase数据库的新手,我不打算使用Firebase身份验证。
是否可以根据Firebase实例ID而不是经过身份验证的用户ID设置Firebase数据库规则?
这是我想要实现的结构:
/instanceIDs
/iid1
/somedata
/someotherdata
/iid2
...
/iid3
...
我想限制只读特定实例ID的读/写权限
任何人都可以展示如何设置这样的规则?
否则,如果我为所有用户设置读/写为真,那么安全风险是什么? 如果我的原生移动应用程序代码只读取/写入特定的实例ID分支,我可以期待一些安全问题吗?
答案 0 :(得分:3)
使用Firebase Cloud Messaging的应用中的实例ID可识别该特定设备上该特定应用的安装。 Firebase安全规则中不提供此值。
虽然基于此实例ID进行保护听起来是一个有趣的想法,但从长远来看它不会起作用。 Instance ID can change over time,每次发生时,设备都将失去对其数据的访问权。
访问Firebase(数据库和存储)通常基于应用的用户。与实例ID不同,用户的ID随时间变化是稳定的:意味着同一用户将始终具有相同的UID,因此可以访问相同的资源。如果您不想让用户登录,可以使用Firebase's anonymous authentication。
PS:如果您想尝试使用实例ID来保护访问权限,可以轻松地将实例ID传递给服务器mint a Firebase Authentication token from it(您可以use Cloud Functions for this),然后{{3 }}。