Firebase存储安全规则(映像维度)

Firebase存储安全规则(映像维度),firebase,firebase-storage,firebase-security,Firebase,Firebase Storage,Firebase Security,我的应用程序出现问题。我想在后端检查上传的照片是否具有允许的尺寸(例如,1024px*1024px或1024px*1980 px),以及图像是否低于30MB(对于所有尺寸) rules_version='2'; 服务firebase.storage{ 匹配/b/{bucket}/o{ 匹配/photos/{photo}{ 函数hasValidSize(){ //最大照片尺寸=30MB(适用于所有尺寸) return request.resource.size

我的应用程序出现问题。我想在后端检查上传的照片是否具有允许的尺寸(例如,1024px*1024px或1024px*1980 px),以及图像是否低于30MB(对于所有尺寸)

rules_version='2';
服务firebase.storage{
匹配/b/{bucket}/o{
匹配/photos/{photo}{
函数hasValidSize(){
//最大照片尺寸=30MB(适用于所有尺寸)
return request.resource.size<30*1024*1024;
}
允许读取;
允许写入:if request.auth!=null&&hasValidSize();
}
}
}
是否可以检查照片尺寸作为安全规则

Pd:我已经实现了一个具有3个可能维度的照片裁剪器,但是如果黑客下载客户端代码并修改它呢


谢谢。

无法在安全规则中检查图像尺寸。您唯一可以检查的是文件的总大小,这就是
request.resource.size
的用途

事实上,云存储可用于任何类型的内容。它不仅限于图像,而且对图像没有任何特殊的考虑。对于云存储来说,一切都只是一个字节序列


如果需要对文件内容进行限制,则需要为此编写一些后端代码,并确保所有客户端都使用该后端进行上载。或者使用云函数编写触发器,在上传无效文件后删除这些文件。

我应该使用吗?您知道如何从存储中获取图像尺寸吗?您可以使用图像处理库来查找。最后,我添加了自定义元数据(宽度和高度)(用户ID也可以发送电子邮件给那些试图破坏应用程序安全的人)到图像。我知道这不是最好的解决方案,但很有效。非常感谢您的关注。请注意,客户端可以选择他们添加的任何元数据。它不必与对象的内容匹配。
rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /photos/{photo} {
      function hasValidSize() {
        // Max. photo size = 30MB (For all dimensions)
        return request.resource.size < 30 * 1024 * 1024;
      }
      allow read;
      allow write: if request.auth != null && hasValidSize();
    }
  }
}