2011-09-05 8 views
7

Posso fidarmi del tipo di file da $_FILES durante il caricamento delle immagini? O devo ricontrollare con exif_imagetype()?

risposta

6

Dal documentation:

Il tipo MIME del file, se il browser fornito tali informazioni. Un esempio potrebbe essere "image/gif". Questo tipo di mime tuttavia non è controllato sul lato PHP e quindi non dà per scontato il suo valore.

+0

perfetto, grazie – HappyDeveloper

3

Io uso sempre la funzione successiva per controllare le immagini valide:

function Check_Image($Filename) { 
    if ($Check_Image = @getimagesize($Filename)) { 
     return TRUE; 
    } 
    return FALSE; 
} 
5

Mai fidarsi di tutto ciò che viene dal di fuori, soprattutto upload di file!

Controlla la dimensione, la posizione, il mimo/tipo, l'estensione e qualsiasi altra cosa che puoi controllare!

+0

Ma il tipo viene dall'esterno? O è qualcosa aggiunto da php? – HappyDeveloper

+2

Il browser lo fornisce, non fidarti di esso. –

+0

@Wesley van Opdorp ha accettato, controlla anche il * contenuto * se puoi. – Cheekysoft

2

No, non ci si può fidare perché this information is provided by the client browser.

$_FILES['userfile']['type'] Il tipo MIME del file, se il browser fornito queste informazioni. Un esempio potrebbe essere "image/gif". Questo tipo di mimo tuttavia non è controllato sul lato PHP e pertanto non assume il valore per il suo valore.

4

No, non ci si può fidare della variabile $_FILES['userfile']['type']. Il valore presente in questa variabile potrebbe essere falsificato. È possibile utilizzare finfo_file per rilevare il tipo di file in modo più affidabile:

$finfo = finfo_open(FILEINFO_MIME_TYPE); // we need mime type 
echo finfo_file($finfo, "/path/to/uploaded/file"); // displays something like image/gif 
finfo_close($finfo); 

Queste funzioni richiedono PHP> = 5.3.0.

Problemi correlati