fix: validate upload callback secret

pull/3497/head
Honahec 3 months ago
parent aa78c4ce09
commit 2dea2b1956
No known key found for this signature in database

@ -1,6 +1,7 @@
package middleware package middleware
import ( import (
"crypto/subtle"
"net/http" "net/http"
"github.com/cloudreve/Cloudreve/v4/application/dependency" "github.com/cloudreve/Cloudreve/v4/application/dependency"
@ -204,6 +205,13 @@ func uploadCallbackCheck(c *gin.Context, policyType types.PolicyType) error {
} }
callbackSession := callbackSessionRaw.(fs.UploadSession) 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) c.Set(manager.UploadSessionCtx, &callbackSession)
if callbackSession.Policy.Type != string(policyType) { if callbackSession.Policy.Type != string(policyType) {
return serializer.NewError(serializer.CodePolicyNotAllowed, "", nil) return serializer.NewError(serializer.CodePolicyNotAllowed, "", nil)

Loading…
Cancel
Save