所有
我是AngularFire的新手,当我按照教程做一个简单的待办事项应用程序时,我想我怎么能只允许用户添加新的待办事项,但不能删除。基本上我不希望客户端黑客破坏我的数据。就像用户打开控制台并手动调用$ remove API一样,我该怎么做呢?
由于
答案 0 :(得分:3)
要阻止客户在Firebase数据库上执行不需要的CRUD操作,您需要定义database rules。
规则在JSON结构中定义,可以引用当前的auth
信息。例如,如果要将用户信息存储在/users/<uid>
下的数据库中,则以下规则将授予每个用户对其自身信息的读/写访问权限以及对其他用户的读取权限。信息:
{
"rules": {
"users": {
".read": "auth != null"
"$uid": {
".write": "auth != null && auth.uid == $uid"
}
}
}
}
规则还可以引用数据库中已有的数据,因此只有在特定密钥上没有现有数据时才允许写入 - 也就是说,您可以阻止更新。
同样,规则可以引用要存储的新数据,因此可以检查是否已指定新数据 - 也就是说,您可以阻止删除。
这样的规则允许创建todos(存储在/todos/<uid>/<todoId>
下),但既不更新也不删除:
...
"todos": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
"$todoId": {
".write": "auth != null && auth.uid == $uid && data.val() == null && newData.val() != null"
}
}
}
...
维护JSON结构中的规则定义会变得困难;您可能会发现Firebase的Bolt工具可用于定义更复杂的规则。