如何缩短Google云端存储签名下载网址?

时间:2016-11-20 05:47:45

标签: firebase google-cloud-storage firebase-storage

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

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

但是,由于Firebase不支持storage API SDK中的node.js,因此我必须使用Google Cloud Storage 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位数时,这会成为一种存储负担。

有没有办法缩短这个?

2 个答案:

答案 0 :(得分:4)

简短的回答是否定的,你不能缩短它。答案很长,你不想缩短它:签名是一个加密签名的哈希,它封装了上面提到的信息(actionexpires),并让最终用户执行该操作这么久因为URL有效。

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

有关详细信息,请参阅GCS Docs on Signed URLs

答案 1 :(得分:0)

仅供参考,如果您有多个URL,则可以压缩它们并保存大约一半:

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
  or WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
  or WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
  or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

如果同时对它们进行签名,您可能会节省很多钱,但是,由于我的签名都在不同的时间,因此URL的共同点较少。

我的用例是,我将具有照片缩略图列表的对象发送给具有最大json对象大小的搜索api。