Perché OWASP suggerisce di usare POST over PUT per caricare file?

8

Quando sfogli le raccomandazioni di sicurezza OWASP per i caricamenti di file , ho spuntato la seguente lettura:

Try to use POST method instead of PUT (or GET!)

Non vedo come un metodo sia migliore di un altro dal punto di vista della sicurezza. Qualcuno potrebbe far luce su questo consiglio?

    
posta Zenklys 18.01.2017 - 18:09
fonte

2 risposte

4

TL; DR: PUT non è supportato da molte cose. A volte è disponibile solo come estensione e le estensioni di attivazione aumentano la superficie di attacco.

@iain ha ragione nel commentare che la domanda SO PUT vs POST in REST è rilevante qui. Dal punto di vista RESTfulness, PUT va bene per l'aggiornamento o addirittura per sovrascrivere un file.

Tuttavia, se discuti dal punto di vista della sicurezza le forme HTML originali non hanno mai supportato PUT, solo GET e POST. Molte informazioni su questo argomento sono disponibili su I metodi PUT, DELETE, HEAD, etc sono disponibili nella maggior parte dei browser web? , anche se alcune informazioni sono obsolete e alcuni link sono morti. Quindi lo riassumerò qui:

HTML

AJAX supporta GET, POST, PUT e persino DELETE. Ma la forma comune in un browser no. HTML5 ha aggiunto il supporto per PUT e DELETE nelle sue versioni di bozze, ma né PUT né DELETE possono essere trovati nella definizione corrente dell'infrastruttura HTML5 . In altre parole, i browser non hanno l'obbligo di capire <form method="PUT"> per conformarsi a HTML5.

server web

Sia Apache che Nginx usano PUT e DELETE come estensioni WebDAV . Se vuoi indurire il tuo webserver, una cosa che fai spesso è compilarla senza le estensioni WebDAV. L'aggiunta di estensioni sta aumentando la superficie di attacco.

Noi quadri d'altra parte spesso non supportano PUT. O, più comunemente, usa semplicemente la stessa funzione per elaborare POST e PUT, rendendo l'uso del verbo PUT proprio come il POST.

Quindi sì, la linea guida OWASP ha un senso. Anche se lo avrei riscritto come: "Se stai implementando REST completo usa PUT, se non usi il POST perché è più ampiamente supportato" .

    
risposta data 18.01.2017 - 22:51
fonte
1

Non penso che questo dovrebbe essere sulla lista, ma come ipotesi mettono questo punto perché questo è il migliore e RESTful modo di fare upload di file senza effetti collaterali *. Ad essere onesti non ho visto nessuno fare PUT. Ho visto GET, ma erano come i primi script php.

Mettiamo da parte PUT per un secondo. Se si confronta POST a GET, il POST è più nascosto dal punto di vista dell'utente in quanto non viene aggiunto all'URL visibile.

Se invii altri dati insieme al file, è più probabile che sia visibile all'utente che potrebbe manipolarlo. Questo, tuttavia, non lo rende meno o più sicuro, perché non dovresti mai fidarti dell'input del client in ogni caso.

*: i browser potrebbero troncare stringhe URI lunghe, ad esempio

    
risposta data 18.01.2017 - 19:20
fonte

Leggi altre domande sui tag