Firebase私有规则不适用于存储

时间:2016-10-07 02:29:44

标签: firebase firebase-security firebase-storage

我正在尝试允许用户将文件上传到firebase后端,我正在使用此规则:(存储空间填写在我的最后)

service firebase.storage {
  match /b/<storage>/o {
    match /{allPaths=**} {
        allow write, read: if false;
    }
  }
}

这样我就可以看出它是否会阻止用户访问我打开的文件。但如果我去链接,我可以看到图像就好了。

为什么这条规则不阻止用户查看它?感谢。

1 个答案:

答案 0 :(得分:3)

从Firebase存储中下载文件的方法有两种:

  • 通过存储引用上的getFile()writeToFile:等方法下载。
  • 存储您从getDownloadURL()downloadURLWithCompletion:
  • 获取的HTTP网址

如果您通过第一种方法下载,我们会在允许下载之前检查安全规则。这是将文件ACL化为用户或用户组的安全方法。

如果您通过第二种方法下载,那些URL是公共的,不可取的URL,因此任何人都可以访问它们,并且只受URL末尾令牌的不可访问性的保护。此方法非常适合与应用程序之外的用户共享文件(图片Google照片,您希望将照片发送给家人,但不想让他们下载应用程序)。

听起来你正在使用第二种方法,如上所述,它不会检查安全规则。如果您要创建文件,可以在Firebase控制台中删除下载令牌,或者永远不要与任何人共享这些URL。