fix(callback): validate upload callback secret (#3497)

pull/3487/head
Hao Chen 2 weeks ago committed by GitHub
parent 7329602751
commit c278c6af39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,6 +1,7 @@
package middleware
import (
"crypto/subtle"
"net/http"
"github.com/cloudreve/Cloudreve/v4/application/dependency"
@ -204,6 +205,13 @@ func uploadCallbackCheck(c *gin.Context, policyType types.PolicyType) error {
}
callbackSession := callbackSessionRaw.(fs.UploadSession)
if subtle.ConstantTimeCompare(
[]byte(callbackSession.CallbackSecret),
[]byte(c.Param("key")),
) != 1 {
return serializer.NewError(serializer.CodeCredentialInvalid, "Invalid callback secret", nil)
}
c.Set(manager.UploadSessionCtx, &callbackSession)
if callbackSession.Policy.Type != string(policyType) {
return serializer.NewError(serializer.CodePolicyNotAllowed, "", nil)

Loading…
Cancel
Save