无法使用 Firebase 安全验证子节点
Unable to validate child nodes with Firebase security
我显然遗漏了 firebase 安全的一些基本方面,因为这不应该起作用。我希望它在尝试推送无效数据时抛出验证错误。 (将新节点插入 /nodes)
规则:
{
"rules": {
"nodes": {
".read": "auth !== null && auth.provider === 'google'",
".write": "auth !== null && auth.provider === 'google'",
"user": {
".validate": "newData.val() === auth.uid"
},
"ts": {
".validate": "newData.val() <= now && newData.val() >= (now-1000*60*60*24)"
}
}
}
}
然后在我的控制台中我尝试故意插入无效数据:
ref.child('nodes').push({
'user': 'abc',
'ts': 123
}, function(err){console.log(err);});
记录为空,当我检查我的数据库时,它已被插入,没有验证错误!我知道我有一些根本性的错误,因为紧跟在下面的 .read 和 .write 行之后的验证规则不允许任何写入。 .validate": "newData.hasChildren(['user', 'ts'])",
{
"nodes" : {
"-KAgH0BLneWfGu8NymBo" : {
"ts" : 123,
"user" : "abc"
}
}
}
哎呀。缺少“$node_id”
{
"rules": {
"nodes": {
"$node_id":{
".read": "auth !== null && auth.provider === 'google'",
".write": "auth !== null && auth.provider === 'google'",
"user": {
".validate": "newData.val() === auth.uid"
},
"ts": {
".validate": "newData.val() <= now && newData.val() >= (now-1000*60*60*24)"
}
}
}
}
}
我显然遗漏了 firebase 安全的一些基本方面,因为这不应该起作用。我希望它在尝试推送无效数据时抛出验证错误。 (将新节点插入 /nodes)
规则:
{
"rules": {
"nodes": {
".read": "auth !== null && auth.provider === 'google'",
".write": "auth !== null && auth.provider === 'google'",
"user": {
".validate": "newData.val() === auth.uid"
},
"ts": {
".validate": "newData.val() <= now && newData.val() >= (now-1000*60*60*24)"
}
}
}
}
然后在我的控制台中我尝试故意插入无效数据:
ref.child('nodes').push({
'user': 'abc',
'ts': 123
}, function(err){console.log(err);});
记录为空,当我检查我的数据库时,它已被插入,没有验证错误!我知道我有一些根本性的错误,因为紧跟在下面的 .read 和 .write 行之后的验证规则不允许任何写入。 .validate": "newData.hasChildren(['user', 'ts'])",
{
"nodes" : {
"-KAgH0BLneWfGu8NymBo" : {
"ts" : 123,
"user" : "abc"
}
}
}
哎呀。缺少“$node_id”
{
"rules": {
"nodes": {
"$node_id":{
".read": "auth !== null && auth.provider === 'google'",
".write": "auth !== null && auth.provider === 'google'",
"user": {
".validate": "newData.val() === auth.uid"
},
"ts": {
".validate": "newData.val() <= now && newData.val() >= (now-1000*60*60*24)"
}
}
}
}
}