Restituisce la firma AWS su HTTP

2

Sto eseguendo il caricamento multipart su S3 direttamente dal browser, ignorando il mio back-end.

Il mio codice JS invia una richiesta di scuotimento a mano a S3 (un POST), quindi carica il file in blocchi di 5 MB (un PUT per ciascuno) e alla fine, finalizza il file (un POST).

Funziona bene. Come puoi immaginare, ogni richiesta di S3 (hand-shake, upload di parti e finalizzazione) deve essere firmata. Ovviamente è fuori questione generare la firma in JS poiché esporrà la mia chiave segreta di AWS.

Quello che sto facendo finora è il seguente: prima di ogni richiesta di S3, invio una richiesta al mio back-end (a /sign?method=HTTPMethod&path=URLToSign ) restituisce la stringa di firma. In questo modo, tutte le credenziali AWS rimangono nel back-end, come dovrebbe essere.

La mia domanda è la seguente: È sicuro?

Mi rendo conto che il /sign end-point potrebbe essere usato da chiunque per firmare qualsiasi cosa nel mio bucket S3. Posso ridurre i rischi assicurandoti che la richiesta di /sign sia un XHR il cui referrer è il mio dominio.

    
posta Emmanuel Turlay 06.03.2013 - 16:28
fonte

1 risposta

1

Sì, il backend può essere usato nel tuo caso per firmare qualsiasi cosa nel tuo bucket s3.

Potresti bloccare XMlhttprequest cross-site per / sign ma perché stai facendo sapere agli altri che stai usando qualche script di back-end. Per questo motivo potresti dover essere a conoscenza del fatto che XSRF viene chiamato come attacco di contraffazione di richiesta cross site che può essere eseguito.

In particolare, questo metodo non è tanto sicuro quanto confrontare l'uso del backend per inviare dati a aws. Inoltre ci sono molti modi che sono stati online per effettuare una richiesta cross-site xhr.

Per prevenire xsrf potresti dover guardare anche qui

link link

Ma io non farò il tuo cammino. Sebbene sia facile e buono, ma ha una vulnerabilità che può essere sfruttata.

    
risposta data 08.03.2013 - 22:34
fonte

Leggi altre domande sui tag