[英]How Secure is Firebase Real-time (Online) database for Android?
我最近剛剛開始使用 Google 的firebase作為 android 應用程序數據的在線集中式數據庫(從使用本地 sqlite 遷移)。
作為 firebase 的新手,我想問一下 android 的 firebase 在線數據庫有多安全?
從以下線程中閱讀,是否真的可以訪問 google-services.json 的任何人都可以插入和修改我的 firebase 數據庫中的在線數據?
我所關注的人誰怎樣才能獲得一個反編譯的apk的配置文件(谷歌services.json)可以使用它在自己的Android項目,比如,創建具有類似的包名的Android應用程序,推動惡意數據或刪除我的火力數據庫。
如果有新的聰明的解決方法可以使在線數據庫更安全,您能否提供建議?
到目前為止,為了增加安全性,我已嘗試:
{ "rules": { ".read": "auth != null", ".write": "auth != null" } }
將 firebase 電子郵件/密碼身份驗證添加到我的應用程序以控制登錄。
但是,我發現即使沒有身份驗證功能,新創建的應用程序仍然可以將數據推送和修改到在線 firebase 數據庫中,只需使用“被黑”的 google-services.json。
感謝您的意見和建議!
歡迎享受有效的兩層系統帶來的樂趣。 您可以采取多種措施來保護您的數據——但不是免費的。
首先是一些事實:
有一些反措施可以提高攻擊者的門檻,但堅定的(或幸運的)攻擊者可以獲得訪問權限。 如果他有訪問權限,則很難防止他造成損害,因為例如更改數據庫憑據也會強制您的所有用戶進行更新。
你能做的是
決定保護數據是不值得的努力和你/你的管理可以用風險住(但后來你有一個decission確實做到了)
像您一樣使用firebase ACL 。 要創建用戶特定的“倉庫”,請使用每個用戶節點(見下文,這里不會呈現代碼)。 配置發生在控制台中。
在服務器上構建業務邏輯並將所有憑據放在那里。 這將確保您擁有完全控制權
防止應用程序以明文形式讀取數據。 使用公鑰算法來加密數據。 將私鑰保存在必須讀取數據的系統上。 然后應用程序無法讀取純數據(但仍然例如找出您擁有多少以及變化率是多少)。 這也不會阻止數據的操縱或刪除。
示例 ACL:
// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
一些 Firebase 項目方法,例如常規的 Android 和 Web (JS) 快速入門項目,存在將 Firebase 項目的訪問權限和憑據共享給用戶的風險。 通過正確定義和構建安全規則,保護 firebase 數據的唯一方法(如果不能選擇對前端客戶端隱藏 firebase 憑據)確實如@Jens 所提議的那樣。 惡意黑客將很難使用您的數據,即使他們可以訪問您的項目憑據。 可以在此處找到更多信息說明:
作為對 firebase 項目憑據公開的快速更新,我發現使用后端腳本與 Firebase 通信將消除這種擔憂,因為腳本和代碼實現對用戶是隱藏的。 Firebase 為各種幫助程序庫(例如 NodeJS、PHP、Python 等)上的REST API提供了出色的支持。 使用 REST API 加上安全規則將使我們的 Firebase 憑據和數據更加私密和安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.