Firebase安全防止从其他用户保存数据

时间:2016-08-11 16:30:45

标签: firebase firebase-realtime-database firebase-authentication firebase-security

我得到了这样的firebase数据库结构:

firebase.database().ref("chat/user2/user3/chat2").set({
     message: "HAHA"
});

问题是,如何阻止用户( user1 )从 user3 user2 撰写聊天消息。

示例:

user1 javascript 命令

{{1}}

上面的命令说我作为 user1 user3 user3 撰写新聊天消息" HAHA&# 34; 即可。我想用firebase规则来防止这种情况。我可以帮助我如何编写规则并使用登录方法吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

看起来你的结构如下:

chats
    $recipientUid
        $senderUid
            $chatMessageId

确保只有发件人可以写:

{
  "rules": {
    "chat": {
      "$recipientUid": {
        "$senderUid": {
          ".write": "auth.uid == $senderUid"
        }
      }
    }
  }
}

更常见的是,在聊天室结构中的特定用户之间存储消息。见Best way to manage Chat channels in Firebase

答案 1 :(得分:0)

您是否尝试过firebase documentation的数据结构? 因为在你的情况下,我认为这样做是不可能的,因此你需要弄平你的数据库结构。即使你可能能够使用通配符,但它仍然很难做到,因为在一个客户端只有一个uid,因此你无法真正写出#34;聊天消息"在其他用户的节点中,不知道他们在前端的uid。

我的建议是,尝试通过思考"聊天参与者如何访问他们自己的聊天数据库来修改结构?"你可以简单地使用每个用户可以写入自己节点的规则#34;聊天室"其他人可以阅读。 CMIIW

的问候,

R上。微米。