Firebase专用规则不适用于存储

Firebase专用规则不适用于存储,firebase,firebase-security,firebase-storage,Firebase,Firebase Security,Firebase Storage,我正在尝试允许用户将文件上载到firebase后端,我使用的是以下规则:(存储在我的一端) service firebase.storage{ 匹配/b//o{ 匹配/{allpath=**}{ 允许写入、读取:如果为false; } } } 这只是为了让我看看它是否会阻止用户访问我打开的文件。但是,如果我去链接,我可以看到的图像刚刚好 为什么这条规则不阻止用户查看它?谢谢。从Firebase存储下载文件有两种不同的方式: 通过存储引用上的getFile()或writeToFile:等方法下

我正在尝试允许用户将文件上载到firebase后端,我使用的是以下规则:(存储在我的一端)

service firebase.storage{
匹配/b//o{
匹配/{allpath=**}{
允许写入、读取:如果为false;
}
}
}
这只是为了让我看看它是否会阻止用户访问我打开的文件。但是,如果我去链接,我可以看到的图像刚刚好


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

从Firebase存储下载文件有两种不同的方式:

  • 通过存储引用上的
    getFile()
    writeToFile:
    等方法下载
  • 存储从
    getDownloadURL()
    downloadURLWithCompletion:
    获得的HTTP URL
如果您通过第一种方法下载,我们会在允许下载之前检查安全规则。这是将文件ACL到用户或用户组的安全方法

如果通过第二种方法下载,则这些URL是公共的、不可用的URL,因此任何人都可以访问它们,并且仅受URL末尾标记不可用性的保护。这种方法非常适合与应用程序之外的用户共享文件(谷歌照片图片,你想向家人发送照片,但不想让他们下载应用程序)


听起来您使用的是第二种方法,正如前面提到的,它不检查安全规则。如果您想制作文件,可以在Firebase控制台中删除下载令牌,或者永远不要与任何人共享这些URL。

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

  • 通过存储引用上的
    getFile()
    writeToFile:
    等方法下载
  • 存储从
    getDownloadURL()
    downloadURLWithCompletion:
    获得的HTTP URL
如果您通过第一种方法下载,我们会在允许下载之前检查安全规则。这是将文件ACL到用户或用户组的安全方法

如果通过第二种方法下载,则这些URL是公共的、不可用的URL,因此任何人都可以访问它们,并且仅受URL末尾标记不可用性的保护。这种方法非常适合与应用程序之外的用户共享文件(谷歌照片图片,你想向家人发送照片,但不想让他们下载应用程序)


听起来您使用的是第二种方法,正如前面提到的,它不检查安全规则。如果你想制作文件,你可以在Firebase控制台中删除下载令牌,或者永远不要与任何人共享这些URL。

你能举一个你可以访问的链接的例子,你希望它能保护你吗?你能举一个你可以访问的链接的例子,你希望受到保护吗?我们有没有办法让这些URL私有化,或者谷歌只是为了保密?对我来说,这似乎很可疑。@DevShadow下载URL作为一个功能令牌:如果你有这个令牌,你就有能力访问这个文件。许多流行的照片共享应用程序使用某种形式的功能令牌(通常以签名URL的形式)。功能令牌的关键在于它们足够不可用。在我们的例子中,我们使用UUID表示随机选择的128位数字,这意味着有2^128=3.4e38种不同的可能性(以及在第一次尝试时猜到它的概率为1/3.40282367e38~=0)。即使有人每秒猜测100万张照片(每年31.5张照片):在有人耗尽搜索空间之前,你还有1.0 E25年的时间。即使每秒1B个请求,仍然需要1.0e22年。这与现代密码学使用的一般原理(用真正大的素数替换)相同:从技术上讲,你可以将所说的素数因子化,但实际上没有有效的方法。我们有没有办法让这些URL私有化,或者谷歌只是为了保密?对我来说,这似乎很可疑。@DevShadow下载URL作为一个功能令牌:如果你有这个令牌,你就有能力访问这个文件。许多流行的照片共享应用程序使用某种形式的功能令牌(通常以签名URL的形式)。功能令牌的关键在于它们足够不可用。在我们的例子中,我们使用UUID表示随机选择的128位数字,这意味着有2^128=3.4e38种不同的可能性(以及在第一次尝试时猜到它的概率为1/3.40282367e38~=0)。即使有人每秒猜测100万张照片(每年31.5张照片):在有人耗尽搜索空间之前,你还有1.0 E25年的时间。即使每秒1B个请求,仍然需要1.0e22年。这与现代密码学使用的一般原理(用真正大的素数替换)相同:从技术上讲,你可以将所述素数分解,但实际上没有有效的方法。
service firebase.storage {
  match /b/<storage>/o {
    match /{allPaths=**} {
        allow write, read: if false;
    }
  }
}