簡體   English   中英

適用於 Android 的 Firebase 實時(在線)數據庫的安全性如何?

[英]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應用程序,推動惡意數據或刪除我的火力數據庫。

如果有新的聰明的解決方法可以使在線數據庫更安全,您能否提供建議?

到目前為止,為了增加安全性,我已嘗試:

  1. 將 firebase 的數據庫規則編輯為:

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

  1. 將 firebase 電子郵件/密碼身份驗證添加到我的應用程序以控制登錄。

    但是,我發現即使沒有身份驗證功能,新創建的應用程序仍然可以將數據推送和修改到在線 firebase 數據庫中,只需使用“被黑”的 google-services.json。

感謝您的意見和建議!

歡迎享受有效的兩層系統帶來的樂趣。 您可以采取多種措施來保護您的數據——但不是免費的。

首先是一些事實:

  1. 擁有數據庫憑據的人可以訪問它
  2. 如果應用程序可以訪問數據,那么任何可以從您的應用程序中提取數據的人都可以有效地使用您的數據庫憑據

有一些反措施可以提高攻擊者的門檻,但堅定的(或幸運的)攻擊者可以獲得訪問權限。 如果他有訪問權限,則很難防止他造成損害,因為例如更改數據庫憑據也會強制您的所有用戶進行更新。

你能做的是

  1. 決定保護數據是不值得的努力和你/你的管理可以用風險住(但后來你有一個decission確實做到了)

  2. 像您一樣使用firebase ACL 要創建用戶特定的“倉庫”,請使用每個用戶節點(見下文,這里不會呈現代碼)。 配置發生在控制台中

  3. 在服務器上構建業務邏輯並將所有憑據放在那里。 這將確保您擁有完全控制權

  4. 防止應用程序以明文形式讀取數據。 使用公鑰算法來加密數據。 將私鑰保存在必須讀取數據的系統上。 然后應用程序無法讀取純數據(但仍然例如找出您擁有多少以及變化率是多少)。 這也不會阻止數據的操縱或刪除。

示例 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM