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

问题描述 投票:1回答:1

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

> check-in-station-content
> reports

这是两个文件夹,我正在尝试对check-in-station-content设置限制,以仅接受不超过30MB的视频/ mp4文件,并且仅由经过身份验证的各方上载。因此,我的规则如下所示:

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

然后,当我进入用于存储的UI并单击Upload按钮时,没有什么阻止我上传具有任何大小的任何文件

enter image description here

firebase firebase-storage firebase-security
1个回答
2
投票

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

顺便说一下,请注意您的规则与check-in-station-background-content路径匹配,但与check-in-station-content路径不匹配。

© www.soinside.com 2019 - 2024. All rights reserved.