我可以根据实例ID设置Firebase数据库规则吗?

时间:2017-06-27 12:48:50

标签: firebase firebase-realtime-database firebase-cloud-messaging

我是Firebase数据库的新手,我不打算使用Firebase身份验证。

是否可以根据Firebase实例ID而不是经过身份验证的用户ID设置Firebase数据库规则?

这是我想要实现的结构:

/instanceIDs
    /iid1
         /somedata
         /someotherdata
    /iid2
         ...
    /iid3
         ...

我想限制只读特定实例ID的读/写权限

任何人都可以展示如何设置这样的规则?

否则,如果我为所有用户设置读/写为真,那么安全风险是什么? 如果我的原生移动应用程序代码只读取/写入特定的实例ID分支,我可以期待一些安全问题吗?

1 个答案:

答案 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 }}。

相关问题