问题描述
我正在使用 Google Cloud Storage Java 库通过 withV4Signature() 方法创建签名 URL,它似乎运行良好。但是,我的印象是,如果您在创建签名 URL 时指定图像的 MD5 哈希值,则任何尝试使用与指定的 MD5 哈希值不匹配的 URL 上传图像的尝试都将被拒绝。
情况似乎并非如此...因为我可以在“setMD5()”方法中指定我想要的任何 MD5 哈希值,并且 Google 存储将接受我上传的文件。
BlobInfo blobInfo = BlobInfo.newBuilder(
BlobId.of("mybucket,"myobject.jpeg"))
.setMd5("some-Random-Md5-Hash-Unrelated-To-The-Image")
.setContentType("image/jpeg")
.build();
URL url = storage.signUrl(blobInfo,30,TimeUnit.SECONDS,Storage.SignUrlOption.withV4Signature(),Storage.SignUrlOption.signWith(myServiceAccountCredentials),Storage.SignUrlOption.withMd5(),Storage.SignUrlOption.httpMethod(com.google.cloud.storage.HttpMethod.PUT),Storage.SignUrlOption.withContentType());
然后,使用具有完全不同的 MD5 哈希值的图像:
curl -X PUT --upload-file myobject.jpeg "https://storage.googleapis.com/mybucket/myobject.jpeg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=[My Service Account Credential]%2F20210501%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210501T035401Z&X-Goog-Expires=30&X-Goog-SignedHeaders=host&X-Goog-Signature=[Google Api Provided Signature]"
Google Storage 无异议地接受此图片上传。我的问题是,有没有其他人有在 Google Storage API 的签名 URL 上明确设置 MD5 哈希的经验,并且可以看到我哪里出错了?也许我误解了这个功能的本质,将 MD5 限制编码到一个单独的 URL 中是不可能的?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)