Sto lavorando in un sistema PHP in cui l'utente può caricare file.
Sto provando a proteggere il sistema da codici maligni, quindi sto pensando a un tipo di lista nera di file che devo bloccare dal caricamento.
So che una lista bianca è migliore di una lista nera e questo è il mio approccio comune, ma in questo caso Devo fare una lista nera di file per molte ragioni (fuori dal mio controllo), ma continuo a cercare sicurezza (se possibile).
Questo è il mio script corrente (sto controllando il tipo MIME per ottenere il tipo di file):
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$check= finfo_file($finfo,$file["tmp_name"]);
finfo_close($finfo);
$dangerMime = array('application/x-bsh', 'application/x-sh', 'application/x-shar', 'text/x-script.sh');
if (in_array($check, $dangerMime)) {
//block upload
}
else {
//allow upload
}
L'elenco corrente di tipi MIME da bloccare è:
- 'application/x-bsh', 'application/x-sh', 'application/x-shar', 'text/x-script.sh'
Sto provando a bloccare qualsiasi file .sh
, poiché il sistema è in esecuzione in CentOS sotto Apache. Ci sono altri tipi di file che dovrei anche bloccare?
Di seguito sono riportate alcune informazioni importanti:
Il server è un CentOS 7.2 con Apache 2.4.6. Di seguito sono riportate le autorizzazioni della directory di upload:
drwxr-xr-x 4 apache apache 4096 Jan 8 12:23 uploads
Nota: in questo progetto, mi comporto come sviluppatore, quindi non posso modificare i permessi dei file.