2017-01-24 83 views
6

我正在研究從Firebase database讀取的Android應用程序。應用程序用戶不會登錄或修改數據庫。所有應用程序用戶都將查看相同的數據;我正在使用Firebase實時更新功能。限制Firebase數據庫訪問一個Android應用程序

理想情況下,我想限制對數據庫的訪問,以便只有我的應用可以讀取數據。

我所知道的幾件事情我可以做的:

1.編寫安全規則,允許任何人閱讀,即

{ 
    "rules": { 
    ".read": true, 
    ".write": false 
    } 
} 

缺點:任何人都可以閱讀:(

2.編寫安全規則allow authenticated users to read,然後將用戶名和密碼硬編碼到應用程序中

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

Con:在應用程序中對用戶名和密碼進行硬編碼似乎非常錯誤。另外,它並沒有真正鎖定數據庫,因爲任何人都可以反編譯應用程序,抓取google-services.json和硬編碼的用戶名/密碼,然後編寫他們自己的應用程序來共享我的軟件包名稱。

谷歌搜索顯示this,這是特定的寫作,和this,它說「不」,但是幾歲。

限制訪問數據庫的正確方法是什麼?我是否從錯誤的方向接近了這個?

+1

你們聯繫的答案仍然是正確的:沒有辦法限制無需訪問您的Firebase數據庫即可訪問您的應用。 –

+0

好的,謝謝@FrankvanPuffelen。 – Michiyo

+0

你最終的選擇是什麼? – androfan

回答

0

當您將應用程序添加到Firebase項目時,您必須指定應用程序的SHA1證書,這樣除了您之外,沒有人能夠訪問您的數據。

+5

這不是真的。使用'「.read」:true,'任何人都可以通過http://project_name.firebaseio.com/ – androfan

+0

訪問基於Web的數據庫界面,當你將你的項目名稱放在這個應用程序中時,你會感到害怕:https://play.google .com/store/apps/details?id = amit.ya.fire.realtimefirebase – iMobaio

1

3.使用FirebaseAuthsignInAnonymously()方法

參考:https://firebase.google.com/docs/auth/android/anonymous-auth

然後調整安全規則:

{ 
     "rules": { 
     ".read": "auth != null", 
     ... 
     } 
    } 

缺點:僅用於讀取相同數據的多個帳戶

+0

這似乎比#2更安全,因爲我會放棄hide/encrypt/obfuscate的能力(不是很好,但比沒有好?)一個用戶名和密碼。你能否澄清爲什麼你認爲這樣更好? – Michiyo

相關問題