我有一个数据库,并收到一封电子邮件,指出我的规则不安全。 这就是我现在拥有的:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
我想将其更改为网站示例中的内容,因此用户只能对其记录进行读/写操作,但这是行不通的。我被否认。
我在做什么错了?
我怎么知道我的密钥是$ uid还是$ user_id?
数据库结构如下:
root
--uid
-- all the data
规则:
{
"rules": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
}
}
我的数据样本:
答案 0 :(得分:0)
您在游乐场屏幕截图中使用的这些规则:
{
"rules": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
}
}
在这些规则中,$uid
是变量,这意味着该节点下的规则适用于任何顶级节点。然后,这些规则允许用户在路径($uid
与自己的UID匹配时读取/写入自己的数据。
但是在同一游乐场的屏幕显示中,您尝试读取/uid
,在这种情况下,uid
只是一个硬编码的值。由于auth.uid
不是用户的实际UID,因此拒绝读/写。
使用您在游乐场屏幕快照中设置的用户,您可以读取/写入位置/c252019c-c9c3-461e-bb79-e8a346862f08
(用户的UID)。