【问题标题】:Firebase storage size limits not enforcedFirebase 存储大小限制未强制执行
【发布时间】:2019-02-25 18:30:10
【问题描述】:

您好,我对文件夹 /posts/media/{userId}/{media} 有如下规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPath=**} {
      allow read, create, write;
    }

    match /posts/media {
        allow create: if request.auth != null && request.resource.size < 10 * 1024 * 1024
                   && request.resource.contentType.matches('(image|video)/.*');

      match /{userId}/{allPaths=**} {
        allow create, write: if request.auth.uid == userId && request.resource.size < 10 * 1024 * 1024
                   && request.resource.contentType.matches('(image|video)/.*');
      }
    }
  }
}

不强制要求 10MB 的文件大小。用户可以轻松发布数倍于 10MB 限制的视频。

有什么帮助吗?

谢谢你, 米歇尔

【问题讨论】:

  • 如果不查看执行上传的代码,就无法查看您的规则和代码是否真正符合您的预期。我们需要能够看到您的代码实际上将文件上传到受安全规则保护的位置。我建议首先从一些非常简单的规则开始,以确保它们按预期触发,然后让它们变得更复杂。
  • 确实如此,因为文件最终到达了预期的位置。除了它接受大于限制的文件。上传有效,但它不应该接受这么大的文件。

标签: firebase firebase-storage firebase-security


【解决方案1】:

此规则允许对您的整个存储桶进行不受限制的读写访问:

match /{allPath=**} {
  allow read, create, write;
}

如果您不想要这种行为,请删除该规则。它的许可性将凌驾于所有其他规则之上。您不能缩小其他规则授予的访问范围。如果任何规则允许访问文件,则不能被其他规则更改。

【讨论】:

  • 好的,我会试试的。但是如果我完全删除它,所有访问都会被拒绝。感谢您的回答
  • 不是全部,访问。其他规则将在那时生效。像这样为整个存储桶设置规则是一种反模式。您应该为特殊需要分配存储桶的特殊区域(使用文件的路径)。如果您需要一个完整的读写区域,请为其创建一个特殊的路径。
猜你喜欢
  • 2017-01-13
  • 2016-11-18
  • 1970-01-01
  • 2016-10-10
  • 2016-01-16
  • 1970-01-01
  • 2011-07-29
  • 2012-07-28
  • 2016-11-26
相关资源
最近更新 更多