由于Google正在弃用频道并要求切换Firebase,我想知道公众方面的数据是如何访问的。
由于您可以在前端使用Javascript连接到Firebase,我相信任何获取密钥的人(再次,在init设置中都可用)可以读取和写入firebase的数据,从而影响应用程序的工作方式?
此外,我的问题依赖于这样一个事实,即传输给客户的数据是私有的,但就我对Firebase的了解而言,它只是一个通过密钥过滤的大型JSON对象,所以任何人都可以使用,我纠正或错过了什么?
感谢您的帮助。
(有关信息,我打算使用Firebase作为Channels / Websockets的替代品,因此我将从服务器(Python)发送更新前端(Javascript)但包含敏感数据的数据。)
答案 0 :(得分:0)
在默认的Firebase设置中,任何人都可以从您的项目中读取任何数据,但只有经过身份验证的用户(使用Facebook,Google,Twitter等)才能添加或修改它。
要解决此问题,您需要为数据库和存储桶实施安全规则。
要首先设置规则,您需要确定要保护的节点,让我们使用一个基本示例,一个待办事项的应用程序。
{
"rules": {
"todos": {
"$user_id": {
".read": "$user_id === auth.uid",
".write": "$user_id === auth.uid"
}
}
}
}
这些规则意味着以下内容:
有一个'todos'节点可以保存所有用户的所有待办事项。
在“todos”节点内,每个用户都有自己的文件夹,此文件夹的名称与其用户ID相同(当使用Facebook,Google,Twitter等在您的应用中注册时,会生成此ID)。 / p>
您会注意到以下字符串:
".read": "$user_id === auth.uid",
".write": "$user_id === auth.uid"
这意味着只有名为节点的auth.uid用户才能读写该特定节点。
例如,我的auth.uid是eq45weq54eqwe,你的是eq213er2w1
我只能在节点{root} / todos / eq45weq54eqwe
中读写如果我尝试加载节点{root} / todos / eq213er2w1(你的),我将收到未经授权的错误。