未考虑在特定路径写入的Firebase存储规则

未考虑在特定路径写入的Firebase存储规则,firebase,firebase-storage,firebase-security,Firebase,Firebase Storage,Firebase Security,我有一个非常简单的Firebase存储结构: > check-in-station-content > reports 这是两个文件夹,我正试图对签入站内容设置一个限制,只接受视频/mp4文件,不超过30MB,并且只能由经过身份验证的各方上传。我的规则是这样的: rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow

我有一个非常简单的Firebase存储结构:

> check-in-station-content
> reports
这是两个文件夹,我正试图对签入站内容设置一个限制,只接受视频/mp4文件,不超过30MB,并且只能由经过身份验证的各方上传。我的规则是这样的:

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

    match /check-in-station-content {
      // Allow write files, subject to the constraints:
      // 1) File is less than 30MB
      // 2) Content type is video/mp4
      match /{videoId} {
        allow write: if request.auth != null && request.resource.size < 30 * 1024 * 1024 && request.resource.contentType.matches('video/mp4')
      }
    }
  }
}
rules_version='2';
服务firebase.storage{
匹配/b/{bucket}/o{
匹配/{allpath=**}{
允许读取:if request.auth!=null;
}
匹配/签入站点内容{
//允许写入文件,但受以下限制:
//1)文件大小小于30MB
//2)内容类型为视频/mp4
匹配/{videoId}{
允许写入:if request.auth!=null&&request.resource.size<30*1024*1024&&request.resource.contentType.matches('video/mp4'))
}
}
}
}
然后,当我转到存储的UI并单击上载按钮时,没有任何东西阻止我上载任何大小的文件


当您使用Firebase控制台时,您实际上绕过了所有安全规则,因为您是作为项目所有者(或具有类似访问权限的其他角色,如编辑器)与Cloud Firestore交互的。这些规则仅在使用一个客户端SDK或其他客户端API时适用


顺便说一句,请注意,您的规则与
值机柜台背景内容
路径匹配,与
值机柜台内容
路径不匹配。

是的,您是对的,我键入了匹配路径。我刚刚编辑了它。@user2128702雷诺回答的另一部分也是正确的:当你在Firebase控制台上传文件(或执行任何其他操作)时,它绕过了安全规则。要在控制台中测试安全规则,您需要使用规则编辑器左下角显示的规则游乐场。@FrankvanPuffelen感谢您对规则游乐场的精确/澄清,Frank。