Firebase - 让数据库的客户知道其他客户端的uid是否存在安全问题?

时间:2016-06-11 09:34:54

标签: security firebase firebase-authentication

TL; DR:是否有任何安全问题让数据库的客户知道其他客户端的uid?例如:是否可以使用已知的uid创建auth对象以像其他用户一样查询数据库?

我需要超级用户在各自的节点内定义默认值。然后,常规用户(属于超级用户“组”)可以定义自己的值,但如果有一个未由用户定义的密钥,则该用户节点的客户端可以回退到超级用户的默认值。

但要完成它,我需要用户知道他们各自超级用户的uid。

示例数据库将是:

{
   "superusers": {
      "K32kd2dD8F9vf9...": {
         "key1": "value1",
         "key2": "value2",
         "key3": "value3"
      }
   },
   "users": {
      "T53ggft56Df52G...": {
         "key2": "myvalue2",
         "key3": "myvalue3",
         "superuser": "K32kd2dD8F9vf9..."
      }
   }
}

在这种情况下,用户“T53ggft56Df52G ...”为“key2”和“key3”定义自己的值,但不为“key1”定义。因此,任何读取“T53ggft56Df52G ...”节点的客户端都可以读取“超级用户”值并回退到“K32kd2dD8F9vf9 ...”并检索默认的“key1”值。

更新

至于周杰伦的评论。实际上,我已计划超级用户创建用户。但是,因为不可能再想到的是实现会员请求系统来完成类似的事情。

为了更好地解释我的用例,这是一个新的JSON示例,它显示了我需要处理的实际数据:

{
   "restaurant_franchise": {
      "K32kd2dD8F9vf9...": {
         "info": ...,
         "menu": {
            "awesome burguer": { ... }, //recipe, cost, sizes...
            "amazing burguer": { ... },
            "incredible burguer": { ... }
         },
         "members": { "T53ggft56Df52G...": true },
         "membership_requests": { ... }
      }
   },
   "restaurant": { // the actual establishment
      "T53ggft56Df52G...": {
         "info": { ... },
         "menu": {
            "amazing burguer": { ... }, //this one has less sizes available
            "incredible burguer": { ... } //this other one costs more
         },
         "default_to": "K32kd2dD8F9vf9..."
      }
   }
}

这里,读取“T53ggft56Df52G ...”菜单的客户端可以从丢失的密钥中获取默认值。在这种情况下,餐厅缺少“令人敬畏的burguer”,因为它没有改变“K32kd2dD8F9vf9 ...”中定义的原始值。

0 个答案:

没有答案