了解面向 Cloud Storage 的 Firebase 安全规则

安全性通常是应用开发过程中最复杂的部分之一。在大多数应用中,开发者所构建和运行的服务器必须能够处理身份验证(用户是谁)和授权(用户可以做什么)这两大问题。 建立身份验证和授权机制本身就十分困难,要确保正确则更加困难,而这直接关系到您的产品能否取得成功。

Firebase 身份验证让您能够轻松验证用户身份,与之类似,面向 Cloud Storage 的 Firebase 安全规则可以为您简化向用户授权和验证请求的工作。存储安全规则允许您指定基于路径的权限,降低了复杂性。只需几行代码,您就可以编写出授权规则,用于限定哪些用户能够发出 Cloud Storage 请求,或限制上传文件的大小。

Firebase 实时数据库具有类似的功能,称为 Firebase 实时数据库规则

身份验证

了解您的用户是谁,这是构建应用时需要考虑的一个重要方面,Firebase 身份验证提供了一种易于使用且安全的纯客户端侧身份验证解决方案。面向 Cloud Storage 的 Firebase 安全规则与 Firebase 身份验证相结合,可以实现基于用户的安全性。当使用 Firebase 身份验证对某个用户进行了身份验证后,存储安全规则中的 request.auth 变量会变成一个包含该用户唯一 ID (request.auth.uid) 和令牌 (request.auth.token) 中所有其他用户信息的对象。当用户未通过身份验证时,request.auth 则为 null。这可以让您针对每个用户安全地控制数据访问。如需了解详情,可参阅用户安全部分。

授权

识别用户身份只是安全工作的一部分。在知道用户的身份后,您需要一种方法来控制该用户对 Cloud Storage 中的文件的访问权限。

Cloud Storage 允许您指定基于文件和路径的授权规则(这些规则驻留在服务器上),以及确定对您应用中的文件的访问权限。例如,默认的 Storage 安全规则需要借助 Firebase 身份验证才能对所有文件执行任何 readwrite 操作:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

您可以前往 Firebase 控制台选择一个 Firebase 应用并查看“Storage”(存储)部分的Rules标签,来修改这些规则。

数据验证

面向 Cloud Storage 的 Firebase 安全规则也可用于数据验证,包括验证文件名和路径以及文件元数据属性(例如 contentTypesize)。

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

现在您已经了解了有关存储安全规则用途的基础知识,那么就开始使用吧!

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面