auth: сверять X-Amz-Content-Sha256 с фактическим хэшем тела
This commit is contained in:
@@ -163,9 +163,14 @@ func verifyHeaderSigV4(r *http.Request, t *tenant.Tenant, authHeader string) err
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
actualHash := sha256Hex(body)
|
||||
payloadHash := r.Header.Get("X-Amz-Content-Sha256")
|
||||
if payloadHash == "" {
|
||||
payloadHash = sha256Hex(body)
|
||||
payloadHash = actualHash
|
||||
} else if !strings.EqualFold(payloadHash, actualHash) && !strings.EqualFold(payloadHash, "UNSIGNED-PAYLOAD") {
|
||||
// Заголовок заявлен, но не совпадает с фактическим хэшем тела: клиент
|
||||
// не должен иметь возможность подменить тело под подписанным заголовком.
|
||||
return errors.New("X-Amz-Content-Sha256 does not match body hash")
|
||||
}
|
||||
|
||||
canonicalRequest, err := buildCanonicalRequest(r, signedHeaders, payloadHash, true)
|
||||
|
||||
Reference in New Issue
Block a user