fix: ignore signaturev2 for policy header check (#19551)

This commit is contained in:
jiuker 2024-04-20 00:45:54 +08:00 committed by GitHub
parent cd50e9b4bc
commit 9205434ed3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 6 additions and 2 deletions

View File

@ -610,7 +610,6 @@ func newPostRequestV2(endPoint, bucketName, objectName string, accessKey, secret
"key": objectName + "/${filename}",
"policy": encodedPolicy,
"signature": signature,
"X-Amz-Ignore-signature": "",
"X-Amz-Ignore-AWSAccessKeyId": "",
}

View File

@ -347,6 +347,11 @@ func checkPostPolicy(formValues http.Header, postPolicyForm PostPolicyForm) erro
}
delete(checkHeader, formCanonicalName)
}
// For SignV2 - Signature field will be ignored
// Policy is generated from Signature with other fields, so it should be ignored
if _, ok := formValues[xhttp.AmzSignatureV2]; ok {
delete(checkHeader, xhttp.AmzSignatureV2)
}
if len(checkHeader) != 0 {
logKeys := make([]string, 0, len(checkHeader))

View File

@ -154,7 +154,7 @@ func getSignature(signingKey []byte, stringToSign string) string {
// Check to see if Policy is signed correctly.
func doesPolicySignatureMatch(formValues http.Header) (auth.Credentials, APIErrorCode) {
// For SignV2 - Signature field will be valid
if _, ok := formValues["Signature"]; ok {
if _, ok := formValues[xhttp.AmzSignatureV2]; ok {
return doesPolicySignatureV2Match(formValues)
}
return doesPolicySignatureV4Match(formValues)