Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在firebase中,我应该编写哪些安全规则来只允许推送对象_Security_Firebase_Firebase Security - Fatal编程技术网

Security 在firebase中,我应该编写哪些安全规则来只允许推送对象

Security 在firebase中,我应该编写哪些安全规则来只允许推送对象,security,firebase,firebase-security,Security,Firebase,Firebase Security,我在根目录中有messages对象,它只是字符串数组。 我想允许用户推送新对象。若他们可以推送到消息根目录,那个么他们应该对它有写权限,这意味着他们可以轻松地用其他有效数据替换整个消息对象。我应该编写什么样的安全规则来避免这种情况?您可以编写一个规则,允许在数据不存在时添加数据,但防止使用以下规则修改或删除数据 ".write": "!data.exists() && newData.exists()" “data”变量是Firebase中的当前数据如果允许写入,则“newDa

我在根目录中有messages对象,它只是字符串数组。
我想允许用户推送新对象。若他们可以推送到消息根目录,那个么他们应该对它有写权限,这意味着他们可以轻松地用其他有效数据替换整个消息对象。我应该编写什么样的安全规则来避免这种情况?

您可以编写一个规则,允许在数据不存在时添加数据,但防止使用以下规则修改或删除数据

".write": "!data.exists() && newData.exists()"
“data”变量是Firebase中的当前数据如果允许写入,则“newData”是结果数据


有关更详细的解释,请查看。

完整的规则定义应为

{
   "rules": {
        ".read": false,
        "feedback": {
            "$key": {
               ".write": "!data.exists()"
            }
        }
    }
}

这使您可以在
/feedback
位置进行推送。您可以自由选择变量名
$key

您要查找的是“仅在位置中还没有数据时写入”规则。Firebase文档中有一个这样的例子。一旦我使用了更好的键盘,我会查一下。找到了链接,但Saeed同时已经回答了。为了完整起见,《安全指南》正好提供了您在本节中寻找的示例:嗨,Saeed,这也是我所认为的,但我无法让它工作。我正在使用写入规则推送到一个位置反馈:
反馈:{.write:“!data.exists()”}
。如果反馈不存在,则第一次推送成功,但下一次推送会出现以下错误:
FIREBASE警告:设置为/feedback/-KDQSPPW7e9QurROMUb7失败:权限被拒绝
。显然,data.exist()在某个位置
feedback
下时为真。你知道我做错了什么吗?找到了答案。看我对这个问题的回答。