firebase - 如何缩短 Google Cloud Storage 签名的下载 URL?

标签 firebase google-cloud-storage firebase-storage

我有一个 firebase 应用,我使用 Firebase Storage 上传图像。当我使用 firebase web sdk 上传时返回的 URL 是合理的:

https://firebasestorage.googleapis.com/v0/b/projectId.appspot.com/o/image.jpg?alt=media&token=51183d4a-551a-41e2-b620-14b44b8c86ed

但是,由于 Firebase 不支持其 node.js SDK 中的 storage API,因此我必须使用 Google 云存储 SDK:

bucketRef.upload(localImagePath, options, (err, file, response) => {
                    file.getSignedUrl({
                        action: 'read',
                        expires: '03-17-2030'
                    }, (err, url) => {
                        console.log(url)
                    })
                })

这会返回过长的内容:

https://storage.googleapis.com/projectId.appspot.com/image.jpg?Googl
eAccessId=firebase-adminsdk-xfe5z@projectId.iam.gserviceaccount.com&Expires=1899950400&Si
gnature=fyotCYAbiWGuBGjwL0YDpByqZsKTdrwd9%2F7bZ88Rw8zP53dyEvcrIer6paYdzb%2BlH7OmJSRfcSxaAj7ur
GhZw20a4k4b5InLufqrOhSuYAE6w5vM2Hp8vz1XgSXl9jOFym2wMPEn7RkVwjxnT3QJKSBa0vqnkXX0wQUF4CjvHjUxbS
Tc9jj0NeNYUNmHGlZlVcKf%2BgE00rG9gt3QyCGAMt55h3kltMbyT%2FvnAYh%2FwuvhbVhX%2FNSCjieYb13KjjmDTgt
l5NU5nWY9Cu0QBraAbn6GlsUUvj0hBB2Gi7OHnUNi218w3EPehy7YAy6RhTcnuhiZlFaLX3TSmBS%2BX%2F3%2BoA%3D%
3D

我将这些网址保留在 firebase 中,因此这会成为一种存储负担,因为我存储的图像数量开始接近 6-7 位数字范围。

有没有办法缩短这个时间?

最佳答案

简短的回答是否定的,你不能缩短它。长答案是你不想缩短它:签名是一个加密签名的哈希,它封装了上面提供的信息(actionexpires)并让结束只要 URL 有效,用户就会执行该操作。

如果它更短,有人可能会猜测您的数据的 URL,或者可能通过已知的明文攻击来破坏它(以与给定的已知明文相同的方式对其进行散列并查看匹配的内容)。

请参阅GCS Docs on Signed URLs了解更多信息。

关于firebase - 如何缩短 Google Cloud Storage 签名的下载 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40701105/

相关文章:

java - 从 Google Cloud Storage 获取存档版本

ios - 删除不存在的 key 时,Firebase 数据库不会返回错误

firebase - 如何清除Firebase存储?

javascript - 为什么 Firebase 无法识别登录用户?

javascript - React Native Firebase 仅获取一项数据

angular - 更改路线后数据消失

google-cloud-storage - 如何使用 GSUTIL 共享整个 Google Cloud Bucket

firebase - 谷歌登录在模拟器上工作但不在 Android 设备上工作 flutter

java - 将 Parse 文件迁移到 Google Cloud Storage

ios - Firebase 存储完成从未触发/被回调