2011-09-05 7 views
7

¿Puedo confiar en el tipo de archivo desde $_FILES al subir imágenes? ¿O debo verificar nuevamente con exif_imagetype()?

Respuesta

6

Desde el documentation:

El tipo mime del archivo, si el navegador proporciona esta información. Un ejemplo sería "image/gif". Sin embargo, este tipo de mimo no está verificado en el lado de PHP y, por lo tanto, no da su valor por sentado.

+0

perfecto, gracias – HappyDeveloper

3

siempre uso la siguiente función para comprobar en las imágenes válidas:

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

Nunca confíes en todo lo que viene del exterior, especialmente la carga de archivos!

¡Compruebe el tamaño, la ubicación, el mimo/tipo, la extensión y cualquier otra cosa que pueda verificar!

+0

¿Pero el tipo viene del exterior? ¿O es algo agregado por php? – HappyDeveloper

+2

El navegador lo proporciona, no confíe en él. –

+0

@Wesley van Opdorp estuvo de acuerdo, también verifique * los contenidos * si puede. – Cheekysoft

2

No, no puede confiar en él porque this information is provided by the client browser.

$_FILES['userfile']['type'] El tipo mime del archivo, si el navegador dieron esta información. Un ejemplo sería "image/gif". Sin embargo, este tipo de mimo no está verificado en el lado de PHP y, por lo tanto, no toma su valor como garantizado.

4

No, no puede confiar en la variable $_FILES['userfile']['type']. El valor presente en esta variable podría ser forjado. Se puede utilizar para detectar finfo_file tipo de archivo de forma más fiable:

$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); 

Estas funciones requieren PHP> = 5.3.0.

Cuestiones relacionadas