您将如何防止用户在 Firebase 中伪造用户名?
How would you prevent users from spoofing a username in Firebase?
如何防止用户通过使用有效的身份验证 uid 但错误的身份验证 uid 向 Firebase 发布内容来欺骗用户名 "username"?
我可以只存储 UID,但是我必须让客户端一直查找所有 UID。如果我能以某种方式确保指定的用户名与登录用户的用户名相同,那就太理想了。
理想情况下,我会制定如下规则:
{
"rules": {
"chat":{
"messages":{
".read":true,
".write":true,
"$message":{
".read":true,
".write":true
".validate": "newData.child('name').val() == auth.facebook.displayName"
}
}
}
}
}
但是 auth 变量不包含用户名。
在大多数此类情况下,开发人员将所有用户的完整信息存储在其 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()"
如何防止用户通过使用有效的身份验证 uid 但错误的身份验证 uid 向 Firebase 发布内容来欺骗用户名 "username"?
我可以只存储 UID,但是我必须让客户端一直查找所有 UID。如果我能以某种方式确保指定的用户名与登录用户的用户名相同,那就太理想了。
理想情况下,我会制定如下规则:
{
"rules": {
"chat":{
"messages":{
".read":true,
".write":true,
"$message":{
".read":true,
".write":true
".validate": "newData.child('name').val() == auth.facebook.displayName"
}
}
}
}
}
但是 auth 变量不包含用户名。
在大多数此类情况下,开发人员将所有用户的完整信息存储在其 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()"