Firebase安全規則
使用我們靈活,可擴展的Firebase安全規則來保護Cloud Firestore,Firebase實時數據庫和Cloud Storage中的數據。
Firebase安全規則介於您的數據和惡意用戶之間。您可以編寫簡單或複雜的規則,以將應用程序的數據保護到特定應用程序所需的粒度級別。
Firebase安全規則利用可擴展的靈活配置語言來定義您的用戶可以訪問實時數據庫,Cloud Firestore和Cloud Storage的哪些數據。 Firebase實時數據庫規則在規則定義中利用JSON,而Cloud Firestore安全規則和Cloudbase的Firebase安全規則利用為適應更複雜的特定於規則的結構而構建的獨特語言。
詳細了解如何為您的應用中使用的特定Firebase產品設置規則,以及規則行為在Firebase產品之間如何不同。
關鍵能力
靈活性 | 編寫對您的應用程序的結構和行為有意義的自定義規則。規則使用允許您利用自己的數據來授權訪問的語言。 |
粒度 | 您的規則可以根據您的需要而寬或窄。 |
獨立安全 | 由於規則是在您的應用程序外部定義的(在Firebase控制台或Firebase CLI中),因此客戶端不負責強制執行安全性,錯誤不會破壞數據,並且始終保護您的數據。 |
它們如何運作?
Firebase安全規則的工作方式是將模式與數據庫路徑進行匹配,然後應用自定義條件以允許訪問這些路徑中的數據。 Firebase產品中的所有規則都有一個路徑匹配組件和一個條件語句,允許進行讀取或寫入訪問。您必須為在應用程序中使用的每個Firebase產品定義規則。
對於Cloud Firestore和Cloud Storage,規則使用以下語法:
service <<name>> {
// Match the resource path.
match <<path>> {
// Allow the request if the following conditions are true.
allow <<methods>> : if <<condition>>
}
}
對於實時數據庫,基於JSON的規則使用以下語法:
{
"rules": {
"<<path>>": {
// Allow the request if the condition for each method is true.
".read": <<condition>>,
".write": <<condition>>
}
}
}
規則作為OR
語句而不是AND
語句應用。因此,如果多個規則與一個路徑匹配,並且任何匹配的條件都授予訪問權限,那麼規則將授予對該路徑上數據的訪問權限。因此,如果寬泛的規則授予對數據的訪問權限,則不能使用更具體的規則進行限制。但是,可以通過確保規則重疊不太多來避免此問題。 Firebase安全規則標誌在您匹配的路徑中作為編譯器警告重疊。
Firebase安全規則還可以利用身份驗證來授予基於用戶的權限,並且您設置的條件可能非常基礎,也可能非常複雜。在開始編寫規則之前,請詳細了解規則語言和行為。
實施路徑
集成產品SDK | 為您的應用設置Cloud Firestore , Cloud Storage或實時數據庫。 | |
編寫您的Firebase安全規則 | 詳細了解規則的工作原理並設置一些基本規則 | |
測試您的Firebase安全規則 | 在將它們部署到生產環境之前,請使用實時數據庫和Cloud Firestore模擬器來測試您的應用程序的行為並驗證您的規則。 | |
部署您的Firebase安全規則 | 使用Firebase控制台或Firebase CLI將規則部署到生產環境。 |
下一步
- 了解Firebase安全規則語言。
- 了解有關Firebase安全規則如何工作的更多信息。
- 探索您應該避免的常見錯誤。