好的,我对Firebase有以下用例:
客户希望我们存储表单中的数据并将其放入数据库中。这是使用Express。
在后端处理的这必须很快完成,所以我只想确保我做得正确。
我目前有规则允许读写访问成立。鉴于用户只能通过表单输入数据,这在生产中是否可以?他们无法访问API密钥,因此其他用户无法处理数据?
答案 0 :(得分:3)
从您的描述中听起来像是:
{
"rules": {
".read": true,
".write": true
}
}
这意味着任何能够找到数据库URL(https://yours.firebaseio.com
)的人都可以写入数据库。如果他们使用您的表单,直接使用Firebase SDK,或者即使他们只使用curl发出REST请求也无关紧要:
curl -X DELETE 'https://yours.firebaseio.com/.json'
最后一行将删除整个数据库。所有这一切都需要一个恶意用户或一个错误的开发(这比你想象的要多得多)。
所以你真的应该将数据库安全规则设置为:
答案 1 :(得分:2)
是的,将读取和写入权限设置为true
是一个很大的安全漏洞,原因有多种:
read
访问会为您的用户带来隐私问题。write
访问权限允许拥有数据库URL的任何人随意删除或修改其内容。另请注意,如果您的应用通过其前端向用户公开Firebase,那么获取数据库网址就像阅读应用的HTML源代码一样简单。
通过服务器端验证您的应用程序并设置对数据库的私有访问权限。请查看如何创建service account,还详细here。
如果您使用较旧版本的firebase,则必须使用server tokens
希望这有帮助!