Salve a tutti, da un po' di tempo ricevo notifiche via mail circa un download non trovato in un mio sito Altervista, pugniespinaci...
I messaggi sono tipo questi:
[indirizzo IP] il giorno 13 September 2020 9:14 non ha trovato il file extra/Schede'..zip
[indirizzo IP] il giorno 27 September 2020 13:06 non ha trovato il file extra/Schede') AND 1=1 UNION ALL SELECT 1,NULL,'<script>alert("XSS")</script>',table_name FROM information_schema.tables WHERE 2>1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#..zip
[indirizzo IP] il giorno 27 September 2020 13:06 non ha trovato il file extra') AND 1=1 UNION ALL SELECT 1,NULL,'<script>alert("XSS")</script>',table_name FROM information_schema.tables WHERE 2>1--/**/; EXEC xp_cmdshell('cat ../../../etc/passwd')#/Schede..zip
A me il download del file Schede.zip avviene regolarmente, ho chiesto in un gruppo Facebook collegato al sito se hanno problemi, non ho avuto riscontri.
Beninteso che il file ha path extra/Storie.zip, non extra/Storie..zip e alternative varie come risulta dalle notifiche, ed è regolato da questo link:
Codice PHP:
<a name="Schede" href="getfile.php?<? echo "path=extra&name=Schede"; ?>">Scarica</a>
getfile.php:
Codice PHP:
<?
$pathname = $_GET['path']."/";
$filename = $_GET['name'];
$pathfile = $pathname.$filename;
//estensione dei file da scaricare
$ext = ".zip";
//nome directory con i file di testo, compreso lo slash / finale
$counterdir = "count/";
//controllo che nell'url ci sia il nome del file da scaricare,
if(isset($pathfile) && trim($pathfile)) {
//se il file richiesto esiste, avviene il download
if (file_exists("$pathfile$ext")) {
header("Location: $pathfile$ext");
//apro il file .txt relativo al download richiesto e lo incremento di 1
$file = fopen("$counterdir/$filename.txt","r");
$count = fread($file, "100");
$countplus = ($count + 1);
fclose($file);
$fileb = fopen("$counterdir/$filename.txt","w");
fwrite($fileb, $countplus, "100");
fclose($fileb);
//altrimenti, se il file richiesto non esiste, parte l'email di avviso al webmaster e stampo un messaggio di errore
} else {
$pathfile = str_replace(">", ">", $pathfile);
$pathfile = str_replace("<", "<", $pathfile);
$today = date("j F Y G:i");
$user_ip = "$_SERVER[REMOTE_ADDR]";
$to = "xxx"; // mio indirizzo email
$subject = "Download non trovato";
$body = "$user_ip il giorno $today non ha trovato il file $pathfile.$ext";
@mail("$to","$subject","$body");
echo "Il file $pathfile$ext non è disponibile per il download.<br>
Riprova più tardi.";
}
//altrimenti, se il nome del file non è passato via get, redirect alla pagina precedente
} else {
header("Location: extra.php");
}
?>
Come posso risolvere? C'è qualche comando php deprecato che alcuni browser non interpretano più? Grazie.