2016-12-06 23 views
0

由于Google不赞成使用频道并要求切换Firebase,所以我想知道公众如何访问这些数据。Firebase中的所有数据都可以提供给所有人吗?

由于您可以在前端使用Javascript连接到Firebase,我相信任何获得密钥的人(可以在init安装程序中获得)都可以读取和写入数据到firebase,从而影响应用程序的工作方式?此外,我的问题依赖于传输给客户的数据是私密的,但据我了解Firebase,它只是一个大的JSON对象,通过密钥进行过滤,所以任何人都可以使用,我是正确的还是我错过了什么吗?

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

+2

https://firebase.google.com/docs/database/security/ –

+1

该链接的第一行:* Firebase实时数据库规则确定谁有读取和写入数据库的权限* – UnholySheep

回答

0

在默认的Firebase设置中,任何人都可以读取项目中的任何数据,但只有经过身份验证的用户(包括Facebook,Google,Twitter等)才能添加或修改它。

要解决此问题,您需要为您的数据库和存储桶实施安全规则。

要设置您的规则,首先需要确定您希望保护哪些节点,我们使用一个基本示例 - 待办事宜应用程序。

{ 
    "rules": { 
     "todos": { 
      "$user_id": { 
       ".read": "$user_id === auth.uid", 
       ".write": "$user_id === auth.uid" 
      } 
     } 
    } 
} 

这些规则的含义如下:

有,将持有的所有待办事项的所有用户提供“待办事项”节点。

在'todos'节点中,每个用户都有自己的文件夹,这个文件夹将被命名为与他们的用户ID相同的名称(这个ID是在您的应用中使用Facebook,Google,Twitter等注册时生成的)。

你会发现下面的字符串:

".read": "$user_id === auth.uid", 
".write": "$user_id === auth.uid" 

这意味着,只有与被命名为节点可以读取和写入特定节点的auth.uid用户。

例如,我的auth.uid是eq45weq54eqwe而你的是eq213er2w1

我只能读取,并在节点{}根/写待办事项/ eq45weq54eqwe

如果我尝试加载节点{root}/todos/eq213er2w1(你的),我将会遇到未经授权的错误。

相关问题