Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保护多个用户需要写入的firebase表_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

保护多个用户需要写入的firebase表

保护多个用户需要写入的firebase表,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我有一个firebase实时数据库,其结构如下: users: user_id: name: str friend_ids: [str] records: record_id: text: str 我现在正试图保护该数据库,以最大限度地降低恶意用户删除或覆盖数据库中有价值信息的可能性。如果每个用户只能写入用户表中的记录,我相信我可以使用Firebase规则保护数据,如: "users": { "$uid": {   ".write": "$uid ===

我有一个firebase实时数据库,其结构如下:

users:
  user_id:
    name: str
    friend_ids: [str]
records:
  record_id:
    text: str
我现在正试图保护该数据库,以最大限度地降低恶意用户删除或覆盖数据库中有价值信息的可能性。如果每个用户只能写入用户表中的记录,我相信我可以使用Firebase规则保护数据,如:

"users": {
  "$uid": {
    ".write": "$uid === auth.uid"
  }
}
但是,每个用户还需要能够写入其他用户的记录,以便例如,用户A可以成为用户B的朋友,并且可以原子地更新用户A和B的friend_ID属性


我的问题是:我应该如何使用此设置保护数据库?每个用户都需要能够写入任何用户id和任何记录id。其他人就这个问题提供的任何建议都将非常有用

如果我理解正确,您希望任何用户都能够在其他人的朋友列表中写入自己的UID,只要他们同时在自己的朋友列表中写入其他人的UID

如果是这样的话,应该是:

"friends": {
  "$uid1": {
    "$uid2": {
      ".write": "$uid1 === auth.uid && 
        newData.parent().parent().child($uid2).child(auth.uid).exists"
    }
  }
}

为了简单起见,我编写了检查,就好像friends节点位于这里的顶层一样。实际上,我还是建议您这样做,因为最好是在Firebase中,而不是嵌套实体类型。

每个用户都需要能够写入任何用户id,这与您在上一段中关于朋友的内容直接冲突。假设您不是有意这么说,那么您需要做的是使用数据库中表示用户之间关系的内容,并在规则中查询它,以确保满足给定写入操作所需的条件。请参阅:似乎理想的方法是在用户表中的注册用户记录中存储一个属性,然后使用一些基于属性的安全规则:@DougStevenson很高兴认识另一个Doug!谢谢你的来信。是的,我想我需要firebase文档中基于属性的身份验证: