【问题标题】:How would you prevent users from spoofing a username in Firebase?您将如何防止用户在 Firebase 中欺骗用户名?
【发布时间】:2015-04-22 21:04:18
【问题描述】:

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

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

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

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

但 auth 变量不包含用户名。

【问题讨论】:

    标签: firebase firebase-security


    【解决方案1】:

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

    /
      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()"
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2021-09-18
      • 1970-01-01
      • 2011-03-03
      • 2017-01-12
      • 1970-01-01
      • 2017-05-14
      • 2017-01-08
      • 1970-01-01
      相关资源
      最近更新 更多