使用 getDownloadUrl() 与创建对象 public 之间有什么区别?
What is the difference between using getDownloadUrl() vs. making the object public?
一旦有人使用令牌参数共享 getDownloadUrl()
link,任何人都可以访问该对象,就像访问 public 对象一样。唯一的区别是可以撤销/更改该令牌吗?或者如果它们是 public 并且不需要令牌,是否也更容易在存储桶中抓取/列出对象?我正在尝试了解使用不会过期的令牌的目的。
如果您通过 “制作 public”(或制作存储桶 public)来引用安全规则,那么这只是说明谁可以请求下载 URL。如果存储桶是私有的或安全规则不允许任何人访问它,则他们无法请求下载 URL。然而,偶然的机会设法获得正确的令牌并且URL然后他们将能够访问该文件。
总而言之,如果没有被授权获取文件的人,他们将不得不依靠可以请求下载 URL 的人来访问它(他们不能自己直接获取)。
如果您从 Google 云控制台将存储桶的设置权限设置为 "Public 到互联网",那么如果您访问根目录 URL的bucket可以看到内容:
默认情况下,Firebase Storage 的权限设置为“不 public”,所以不用担心。
编辑:
如果您允许 list
(需要 rules_version="2"
),那么您目录的内容可以像这样列出:
{
"prefixes": [],
"items": [
{
"name": "Files/-Mf1kIafT6BnVnhgDQT2.pdf",
"bucket": "[PROJECT_ID].appspot.com"
},
{
"name": "Files/-Mf1pmCQMBNEdkQAnUjk.pdf",
"bucket": "[PROJECT_ID].appspot.com"
}
]
}
一旦有人使用令牌参数共享 getDownloadUrl()
link,任何人都可以访问该对象,就像访问 public 对象一样。唯一的区别是可以撤销/更改该令牌吗?或者如果它们是 public 并且不需要令牌,是否也更容易在存储桶中抓取/列出对象?我正在尝试了解使用不会过期的令牌的目的。
如果您通过 “制作 public”(或制作存储桶 public)来引用安全规则,那么这只是说明谁可以请求下载 URL。如果存储桶是私有的或安全规则不允许任何人访问它,则他们无法请求下载 URL。然而,偶然的机会设法获得正确的令牌并且URL然后他们将能够访问该文件。
总而言之,如果没有被授权获取文件的人,他们将不得不依靠可以请求下载 URL 的人来访问它(他们不能自己直接获取)。
如果您从 Google 云控制台将存储桶的设置权限设置为 "Public 到互联网",那么如果您访问根目录 URL的bucket可以看到内容:
默认情况下,Firebase Storage 的权限设置为“不 public”,所以不用担心。
编辑:
如果您允许 list
(需要 rules_version="2"
),那么您目录的内容可以像这样列出:
{
"prefixes": [],
"items": [
{
"name": "Files/-Mf1kIafT6BnVnhgDQT2.pdf",
"bucket": "[PROJECT_ID].appspot.com"
},
{
"name": "Files/-Mf1pmCQMBNEdkQAnUjk.pdf",
"bucket": "[PROJECT_ID].appspot.com"
}
]
}