Upload che non para le shell
Salve a tutti,
mi hanno defacciato il sito perchè, attarverso l'uploiad di immagini, è stata caricata una shell. Per fortuna solo la index è andata perduta. Una cosa è strana: io ho fatto il controllo delle estensioni dei file che caricano, ma la c99 se si chiama .jpg può essere attivata comunque.
Quindi più che controllare l'estensione cosa devo fare? Potrei aprire il file e verificare se ci sono i caratteri <?php e ?> e se ci sono blocco l'upload, ma mi è sembrata una soluzione un po' "sporca".
Ecco il codice dell'upload:
Codice PHP:
$sorgente = $_FILES['file']['tmp_name'];
$directory = "hfiles/";
$nome = basename($_FILES['file']['name']);
if(file_exists($directory.$nome)) {
echo "Esiste già un file con ".$nome." come nome.<br>";
echo "Rinomina il file e riprova.";
} else {
$path = pathinfo($nome);
if(in_array($path['extension'], $ext)) {
move_uploaded_file($sorgente, $directory.$nome);
chmod("hfiles/".$nome, 0644); //necessario perchè i permessi non si settano da soli sul mio hosting
echo "File caricato con successo.<br>";
echo "Il link del tuo file è:<br>";
echo "<textarea style=\"background-color: transparent\" cols=\"50\" rows=\"1\">http://".$_SERVER['SERVER_NAME']."/hfiles/".$nome."</textarea>";
} else {
echo "L'estensione del file che cerchi di caricare non è consentita.";
}
}
Ecco il mio quesito: come posso bloccare l'upload di shell?