2016-12-06 60 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(你的),我將會遇到未經授權的錯誤。

相關問題