Come suggerito sulla mia domanda StackOverflow , ora sto dirigendo questo verso il gruppo Sicurezza dell'informazione, dal momento che nessuno è stato in grado di rispondere alla mia domanda nonostante i multipli voti positivi.
L'account di immagini caricate dall'utente per una gran parte del contenuto del sito su cui sto lavorando. Ho provato a memorizzarli al di fuori del webroot e recuperarli con readfile()
per motivi di sicurezza, ma era troppo lento, quindi ho dovuto tornare al vecchio metodo.
Ora sto cercando di assicurarmi che tutti i caricamenti siano completamente sterilizzati al 100% dal momento che verranno archiviati all'interno del webroot. La mia domanda è, se un utente dovesse rinominare uno script dannoso in un file .jpg, .gif, .png o .bmp e lo abbia caricato, sarebbe comunque dannoso se eseguito o recuperato se l'immagine è stata ricreata con una funzione come questa :
function imageCreateFromAny($filepath) {
$type = exif_imagetype($filepath); // [] if you don't have exif you could use getImageSize()
$allowedTypes = array(
1, // [] gif
2, // [] jpg
3, // [] png
6 // [] bmp
);
if (!in_array($type, $allowedTypes)) {
return false;
}
switch ($type) {
case 1 :
$im = imageCreateFromGif($filepath);
break;
case 2 :
$im = imageCreateFromJpeg($filepath);
break;
case 3 :
$im = imageCreateFromPng($filepath);
break;
case 6 :
$im = imageCreateFromBmp($filepath);
break;
}
return $im;
}
In altre parole, c'è comunque un modo per ingannare una delle funzioni imagecreatefrom*
nell'esecuzione del contenuto come script invece di un'immagine o anche uno script dannoso che è stato sottoposto a questo può essere ridotto a un'immagine spezzata?
Aggiorna Verificherò anche i tipi di file e le estensioni, ma volevo sapere se l'utente è riuscito a scavalcare quelli, sarebbe stato di aiuto per proteggere il mio server e / oi miei clienti in qualsiasi modo. Grazie.