微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

允许上传用 MD5 散列定义的 V4Signature() 图像,即使散列不匹配

如何解决允许上传用 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 举报,一经查实,本站将立刻删除。