如何解决允许上传用 MD5 散列定义的 V4Signature() 图像,即使散列不匹配
我正在使用 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 举报,一经查实,本站将立刻删除。