您如何阻止用户欺骗Firebase中的用户名?

时间:2015-04-22 21:04:18

标签: firebase firebase-security

如何通过使用有效的身份验证,但错误的“用户名”向Firebase发布内容来阻止用户欺骗用户名?

我只能存储UID,但是我必须让客户端一直查找所有UID。如果我能以某种方式确保指定的用户名与登录用户的用户名相同,那将是理想的。

理想情况下,我会制定一个如下规则:

{
    "rules": {
        "chat":{
          "messages":{
            ".read":true,
            ".write":true,
            "$message":{
              ".read":true,
              ".write":true
              ".validate": "newData.child('name').val() == auth.facebook.displayName"
            }
          }
        }
    }
}

但是auth变量不包含用户名。

1 个答案:

答案 0 :(得分:4)

在大多数此类情况下,开发人员会将所有用户的完整信息存储在其Firebase中的/users节点下。 E.g。

/
  users
    twitter:478645678
      username: "puf"
      displayName: "Frank van Puffelen"
  chat
    messages
      -J328764236789
        author: twitter:478645678
        name: "puf"
        message: "Hello world"

使用此结构,您可以将用户名交叉引用到/users/<uid>/username

".validate": "newData.child('name').val() == root.child('users').child(auth.uid).child('username').val()"