Firebase中的所有数据都可供所有人使用吗?

时间:2016-12-06 10:06:47

标签: javascript python firebase

由于Google正在弃用频道并要求切换Firebase,我想知道公众方面的数据是如何访问的。

由于您可以在前端使用Javascript连接到Firebase,我相信任何获取密钥的人(再次,在init设置中都可用)可以读取和写入firebase的数据,从而影响应用程序的工作方式?

此外,我的问题依赖于这样一个事实,即传输给客户的数据是私有的,但就我对Firebase的了解而言,它只是一个通过密钥过滤的大型JSON对象,所以任何人都可以使用,我纠正或错过了什么?

感谢您的帮助。

(有关信息,我打算使用Firebase作为Channels / Websockets的替代品,因此我将从服务器(Python)发送更新前端(Javascript)但包含敏感数据的数据。)

1 个答案:

答案 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(你的),我将收到未经授权的错误。