Uso un approccio URL pre-firmato per il caricamento di file in un bucket S3 privato. Una distribuzione CloudFront è configurata per utilizzare questo bucket come origine.
Il processo di caricamento è disponibile solo per autenticare gli utenti e viene eseguito in due passaggi:
-
Richieste client per l'URL preconfigurato, il mio server genera l'URL utilizzando le credenziali AWS e restituisce l'URL.
-
Il client utilizza questo URL per inviare una richiesta di
PUT
a S3 e completa il caricamento.
Finora, il mio server genera semplicemente l'URL firmato utilizzando il nome file fornito dal client e non esegue alcun controllo della logica di business per il caricamento (ad esempio se un caricamento richiesto è valido). L'argomento per farlo in questo modo è disporre di un servizio di caricamento generico indipendente da altre parti dell'API che potrebbe essere correlato a diversi tipi di caricamento di file (ad esempio PDF, foto, audio, ecc.).
Inoltre, al momento non vi è alcuna verifica / conferma esplicita di un caricamento riuscito. Dopo che il client ha ricevuto l'URL pre-firmato, ha 5 minuti per completare il caricamento prima della scadenza dell'URL, ma non esiste un controllo esplicito se il file è effettivamente caricato.
Mi chiedo se ci sia un serio difetto di sicurezza nel processo di cui sopra.