我已经研究这个问题好几个小时了,我担心我已经知道答案了,但我希望那里的天才们可能知道一些我还没有发现的东西。 (手指交叉)
设置
我正在使用 Ionic 1 和 Firebase 构建聊天应用程序。这意味着我可以通过 REST API 与 Firebase 进行交互。这是一种私有(private)聊天体验,因此所有交流的数据都应保持安全。
我允许用户上传图片,我决定利用 Firebase 的新存储功能。数字文件更适合那里。
我可以使用存储 API 成功上传图像并检索它们......耶(感谢 Firebase)
问题
鉴于我在 REST 世界工作,我通过 URL (通过对文件 ref 使用 getDownloadURL)访问图像。生成的 URL 是公开的(但不可猜测)。这个 URL 的公共(public)性质是我目前的垮台:(
我知道 URL 被设计成不可猜测的,如果所有其他方法都失败了,我可以进入控制台撤销 URL,我希望有一些方法可以使用混淆以外的方法来保护用户内容。
询问或希望
- 有没有办法创建对时间敏感的 URL(可能使用安全规则)
- 有没有一种方法可以创建条件 URL,使其在一次“下载”后过期
- 有没有办法将内容下载为类似于数据库快照的 base64
- 有没有什么我没有想到的可以解决这个问题
当前的想法
- 硬着头皮相信 URL 是安全的
- 将图像作为 base64 字符串存储在数据库本身中(我真的想避免这种情况,因为它通常不受欢迎)
提前感谢您的建议和指导
最佳答案
此处为 Firebase Storage JS 开发人员。
由于您提到使用“文件引用上的 getDownloadURL”,我假设您使用的是 Firebase Storage JS 库。
- Is there a way to create time sensitive URLs (maybe using security rules)
- Is there a way to create conditional URLs such that it expires after one "download"
很遗憾,我们现在不提供这些功能。
Is there a way to download the content as base64 similar to db snapshots
目前,您只能通过不可猜测的下载 URL 下载内容。
Is there something I am not thinking of that can solve this problem
看来您对我们图书馆目前提供的内容非常了解。我认为目前最好的选择是使用无法猜测的下载 URL。唯一能够获得文件下载 URL 的用户是能够首先下载实际文件的用户。
话虽如此:我同意你的看法,如果你在如何处理文件下载的授权方面有更多的灵 active (只允许通过 SDK 访问经过身份验证的用户,对不可猜测的 URL 进行更多/编程控制),那就太好了、一次性下载 URL 等)。在寻找改进产品的方法时,我们一定会考虑这一点,感谢您的反馈。
关于rest - https ://URLs 的 Firebase 存储 REST url 访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931408/