Upload sicuro: alcuni accorgimenti per la sicurezza dei form di upload
Pubblicato il 10 Ottobre 2011
Quando pensiamo alla sicurezza nelle applicazioni web, pensiamo subito ad una corretta configurazione del php.ini, alla validazione dei dati inseriti in input in un form, alla prevenzione dell’SQL Injection ecc.
Un aspetto a cui si deve prestare sempre grande attenzione è quello della sicurezza dei form di upload file. Ormai, in quasi tutti i tipi di applicazione, è richiesto almeno un form di upload:
– per caricare l’avatar dell’utente
– per allegare un file ad un post da pubblicare in bacheca
– per hostare un file o per trasmetterlo ad un contatto
I form di upload sono necessari e bisogna tenerli sicuri per evitare spiacevoli sorprese. Di seguito ti elenco alcuni punti che devi tenere sempre in considerazione per la sicurezza dei tuoi form di upload:
01) Controllare il tipo di file
Devi sempre controllare il tipo di file uploadato, sia lato client che server. Se, il tuo, è un form di upload per un avatar utente è ovvio che i tipi di file accettati saranno soltanto immagini GIF, PNG o JPG. Impedisci l’upload di qualsiasi altro tipo di file.
02) Specificare la cartella di destinazione
Il file deve essere uploadato in una cartella temporanea diversa dalla root del tuo sito, cartella, alla quale non si può accedere direttamente. Si eseguono i controlli opportuni sul file, dopodichè, lo si sposta nella cartella “definitiva” che contiene i files uploadati.
03) Il nome del file deve essere casuale
Il file uploadato deve essere rinominato in modo casuale utilizzando, magari, qualche algoritmo di crittografia. Il risultato deve essere che, il nome del file, non deve più essere noto a chi ha uploadato il file. Per la parte client, è opportuno caricare il percorso del file dinamicamente da un DB.
Nella cartella dove si uploadano i files, si può inserire un file htaccess per impedire l’esecuzione di file PHP (o altro tipo di file). Il codice da inserire nell’htaccess è il seguente:
<files *.php>
order deny,allow
deny from all
</files>
Tu hai altri consigli da aggiungere per rendere i form di upload più sicuri?
Pubblicato in: