【问题标题】:Firebase storage: files always accessible via URL?Firebase 存储:始终可以通过 URL 访问文件?
【发布时间】:2018-05-23 16:48:45
【问题描述】:

我正在使用 Firebase 构建一个小型网络应用。

有步骤:

用户连接(Firebase 身份验证)

用户上传图片(Firebase 存储)

用户可以下载或查看他的图片

<img [src]="imageFromFirebase">

firebase 给出的 url 看起来像:

https://firebasestorage.googleapis.com/v0/b/<Your API>/o/userData_YOQioOsgzUP0B0fTAa6BVK5KOxo2%2Fimages%2F-L-w7THGfT6qmX9UhLsK3.png?alt=media&token=61f6edf9-188e-4177-9ee2-34635ebc5a4a

有了这个 URL,我可以在用户被连接的情况下在浏览器上显示图像。

真正的问题是我复制了这个 URL 并将其粘贴到另一个网络浏览器中(没有经过身份验证)

还有惊喜!! 显示此图片

我不明白为什么显示图像?

正常吗?

谢谢!

【问题讨论】:

    标签: firebase firebase-authentication firebase-storage


    【解决方案1】:

    当您 generate a download URL 获取 Cloud Storage for Firebase 中的文件时,知道该 URL 的任何人都可以下载其内容。这是设计使然。该 URL 是“不可猜测的”,因此只有实际拥有该 URL 的人才能看到内容。

    如果您不希望人们看到该文件,请不要共享该 URL。如果 URL 意外共享给不应访问的其他人,您可以撤销允许所有人查看内容的令牌。

    【讨论】:

    • 我们确信该网址是不可猜测的?
    • 如果您想尝试猜测我项目中的 URL,请告诉我您的发现。 :-)
    • 你不能暴力破解吗?令牌太长?
    • @siebmanb 当然,如果您有无限的时间和金钱,并且不要因为看起来像黑客行为的可疑行为而被 Google 基础架构关闭,那么您可以为此而努力。
    • 您究竟是如何撤销令牌的?
    【解决方案2】:

    据我所知,存储然后检索文件的正确方法是将文件上传到路径(文件夹/文件名),存储该路径(例如帖子中的字段),然后当您想要显示它时,传递getDownloadURL 函数的存储路径,它将返回一个完整的 url,可以用作 img 标签的 src 属性

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 1970-01-01
      • 2019-05-16
      • 2021-05-01
      • 2019-05-30
      • 2017-10-30
      • 1970-01-01
      • 2020-01-14
      • 2020-03-26
      相关资源
      最近更新 更多