PHP: validazione del download dei file
Per evitare errori nel download dei file con PHP occorre procedere per step.
Per evitare errori nel download dei file con PHP occorre procedere per step.
Ipotizziamo di voler consentire il download di un file. Avremo:
function my_is_valid_download_file($file, $path, $extension, $mimetype) {
$full_path = $_SERVER['DOCUMENT_ROOT'] . $path;
if(!isset($file) || empty($file)) { // Verifica presenza della variabile
return false;
}
$file_name = trim($file);
$file_full_path = $full_path . $file_name;
// 1
if(stristr($file_name, $extension) === false) {
return false;
}
// 2
if(!file_exists($file_full_path) || !is_readable($file_full_path)) {
return false;
}
// 3
if(mime_content_type($file_full_path) !== $mimetype) {
return false;
}
return true;
}
- Verifica di base. Il file richiesto ha l'estensione attesa?
- Verifica intermedia. Il file richiesto esiste ed è accessibile in lettura?
- Verifica finale. Il file richiesto possiede il contenuto MIME atteso?
Il terzo step è una verifica di integrità finale. Dobbiamo essere sicuri che il file richiesto sia effettivamente valido e non ad esempio un file PHP come è avvenuto in passato con il plugin WordPress di Revolution Slider.