Firebase 安全规则

使用我们灵活、可扩展的 Firebase 安全规则可保护您在 Cloud Firestore、Firebase Realtime Database 和 Cloud Storage 中存储的数据。

Firebase 安全规则是您的数据与恶意用户之间的屏障。您可以编写简单或复杂的规则来保护您的应用数据,使其达到特定应用所需的细化级别。

Firebase 安全规则利用灵活的可扩展配置语言来定义用户可以访问 Realtime Database、Cloud Firestore 和 Cloud Storage 的哪些数据。 Firebase Realtime Database 安全规则在规则定义中采用 JSON,而 Cloud Firestore 安全规则和 Cloud Storage for Firebase 安全规则利用独特的语言,以适应专用于更复杂规则的结构。

详细了解如何为您在应用中使用的特定 Firebase 产品设置规则,以及规则行为在各种 Firebase 产品中有何不同。

主要功能

灵活性 编写对您的应用结构和行为有意义的自定义规则。 规则使用多种语言来让您利用自己的数据对访问授权。
细化程度 视您的需求而定,您的规则可以很宽泛,也可以很具体。
独立的安全性 由于规则是在您的应用之外(在 Firebase 控制台或 Firebase CLI 中)定义的,因此客户端不负责强制执行安全性,bug 不会造成数据泄露,并且您的数据始终受到保护。

规则的工作原理

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>>
  }
}

对于 Realtime Database,基于 JSON 的规则使用以下语法:

{
  "rules": {
    "<<path>>": {
    // Allow the request if the condition for each method is true.
      ".read": <<condition>>,
      ".write": <<condition>>
    }
  }
}

规则作为 OR 语句而不是 AND 语句进行应用。 因此,如果多条规则都与一个路径相匹配,只要其中有一项匹配的条件授予访问权限,这些规则就会授予对该路径上数据的访问权限。所以,如果宽泛的规则授予了对数据的访问权限,您无法通过更具体的规则来限制访问权限。但是,您可以通过确保规则没有过多重叠来避免这一问题。Firebase 安全规则将匹配路径中的重叠标记为编译器警告。

Firebase 安全规则还可以利用 Authentication 来授予基于用户的权限,您设置的条件可以非常基本,也可以异常复杂。在开始编写规则之前,请详细了解规则语言行为

实现路径

集成产品 SDK 为您的应用设置 Cloud FirestoreCloud StorageRealtime Database
编写您的 Firebase 安全规则 详细了解规则的工作原理设置一些基本规则
测试您的 Firebase 安全规则 在部署到生产环境之前,使用 Realtime Database 和 Cloud Firestore 模拟器测试您的应用行为并验证您的规则。
部署您的 Firebase 安全规则 使用 Firebase 控制台或 Firebase CLI 将规则部署到生产环境中。

后续步骤