gpt4 book ai didi

ios - Swift + Firebase 安全性不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:43 26 4
gpt4 key购买 nike

我在我的 Firebase 控制台中创建了两个用户,他们都有不同的用户名和电子邮件地址。

我希望他们能够将他们的分数在线存储在数据库中。这是结构:

AppName
- GameStats
- DBW9WQEs2sQn9CuPTE9t7Q1qWSz2
- Score : 0986
- Li75C2BYW7bQnKqMmrqLAZ67HUy4
- Score : 44131

要访问这个值并保持同步,我正在使用这个:

let baseRef = FIRDatabase.database().reference(withPath: "GameStats/" + user.uid + "")
let scoreRef = scoreRef.child("Score")

scoreRef.observe(.value, with: { snapshot in
print(snapshot.value)
})

我想测试这两个用户是否可以访问另一个用户的其他信息。我更改了行以包含其他 user.uid,如下所示:

let baseRef = FIRDatabase.database().reference(withPath: "GameStats/Li75C2BYW7bQnKqMmrqLAZ67HUy4")

// Logged in User: DBW9WQEs2sQn9CuPTE9t7Q1qWSz2

出于某种原因,它输出了这个:

Optional(44131)

如果我更改数据库中的值,它会自动将值更新为我输入的值。

这是错误的用户,由于某种原因它能够访问它。

这些是我的规则:

  {
"rules": {
".read": "auth != null",
".write": "auth != null",
"GameStats": {
"$user_id": {
".write": "auth != null && auth.uid === $user_id && auth.provider === 'password'",
".read": "auth != null && auth.uid === $user_id && auth.provider === 'password'"
}
}
}
}

为什么该应用允许一个用户读取另一个用户的数据,我该如何限制访问权限,以便该用户只能访问其用户 ID 下的数据?

正如@M_G 所建议的,我从父级和.read 中取出了.write。所以我现在的规则是:

  {
"rules": {
// ".read": "auth != null",
// ".write": "auth != null",
"GameStats": {
"$user_id": {
".write": "auth != null && auth.uid === $user_id && auth.provider === 'password'",
".read": "auth != null && auth.uid === $user_id && auth.provider === 'password'"
}
}
}
}

我现在得到这个输出:

[FirebaseDatabase] setValue: or removeValue: at /GameStats/DBW9WQEs2sQn9CuPTE9t7Q1qWSz2 failed: permission_denied - This is for the correct user too. I get this error if wrong user also. 

最佳答案

Firebase 文档是错误的(目前)。在 Firebase 控制台中,打开规则模拟器。目前没有“密码”选项,我认为这是一个错误。

如果您没有使用多重身份验证或多重身份验证在您的项目中无关紧要,请不要在您的规则中使用提供程序。否则,您可以测试此规则以进行密码验证:

".write": "auth != null && auth.uid === $user_id && auth.token.firebase.identities.email !== null"

关于ios - Swift + Firebase 安全性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39859283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com