PHP: validazione del download dei file

PHP: validazione del download dei file

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;
}    

  1. Verifica di base. Il file richiesto ha l'estensione attesa?
  2. Verifica intermedia. Il file richiesto esiste ed è accessibile in lettura?
  3. 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.

Torna su