Buongiorno a tutti.
Sto lavorando a una funzione per controllare i file in ingresso tramite upload immagini e validarli.
Per ora sono riuscito a controllare il mime, controllare che sia davvero un'immagine (con getfilesize) ed eliminare estensioni nocive.
Il problema è che riesco a far caricare immagini con codice php all'interno delle informazioni.
Prima di andare avanti vi posto lo script:
In pratica, grazie a questo script evito file del tipo: nome.php.jpg, oppure file php mascherati da immagine nomescript.png (dentro c'è solo codice php) e file con estensioni non volute: php, html, js, eccetera.Codice://dati del form// $nome_file_temporaneo = $_FILES['file_inviato']['tmp_name']; $nome_file_vero = basename($_FILES['file_inviato']['name']); $dati_file = file_get_contents($nome_file_temporaneo); $imgsize2 = getimagesize($nome_file_temporaneo); echo 'filesize2? ';print_r($imgsize2);echo '<br>'; // Tutti i controlli : TYPE, MIME, ed ESTENSIONI INVALIDE $checkall = 0; echo '$checkall '.$checkall.'<br>'; if ( ($imgsize2[mime] == "image/jpg") || ($imgsize2[mime] == "image/png") || ($imgsize2[mime] == "image/jpeg") ) { echo 'OK 1<br>'; $checkall = $checkall +1; } else { echo'NO 1'; exit(); } $finfo = new finfo(FILEINFO_MIME_TYPE); if (false === $ext = array_search( $finfo->file($_FILES['file_inviato']['tmp_name']), array( 'jpg' => 'image/jpeg', 'png' => 'image/png', ), true ) ){ echo 'NO 2<br>'; exit(); } else { echo 'OK 2<br>'; $checkall = $checkall +1; } $blacklist = array(".php", ".phtml", ".php3", ".php4" , ".js" , ".json"); foreach ($blacklist as $item) { if(preg_match("/$item\$/i", $nome_file_vero)) { echo "NO 3 <br>"; exit; } else { echo 'OK 3 <br>'; $checkall = $checkall +1; } } if (getimagesize($_FILES['file_inviato']['tmp_name']) == false) { echo'NO 4'; exit(); } else { echo 'OK 4 <br>'; $checkall = $checkall +1; } ?>
MA, come dicevo, permette ancora di fare upload di file immagini validi al 100%, ma con codice nelle informazioni.
Adesso, volevo chiedervi (visto che non sono riuscito a trovare soluzioni) se c'è pericolo che si riesca a far eseguire gli script all'interno se io uso semplicemente:
<img src="/../nomeimaggine.png">
Grazie mille per eventuali risposte ;)