Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/09/2011, 14:00
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Uploader seguro

A ver, supongamos que yo creo un archivo con "codigo malicioso en PHP", lo guardo como imagen.jpg, lo subo a un servidor y trato de abrirlo con el navegador... que pasara?

a) El servidor "piensa" que se trata de una imagen (por la extension) y lo envia directo al navegador, quien no puede interpretar compresion, tipo, tamaño, etc. y muestra un mensaje de error.
b) El servidor tiene una configuracion extraña que hace que los archivos con extensiones .jpg sean interpretados por PHP y ejecuta el codigo malicioso... yo pregunto, quien en su sano juicio configuraria un servidor para comportarse asi?

Bueno, todo esto es solo un resumen para que la cuestion de seguridad no te vuelva paranoico y, hay mejores formas de verificar que el archivo es realmente una imagen.

Regresa al manual de GD y lee acerca de la funcion getimagesize(), aunque los pasos a seguir son:

Código PHP:
Ver original
  1. // Extensiones de imagenes que deseas admitir
  2. $extensiones = array('jpg', 'jpeg', 'gif', 'png');
  3.  
  4. // Extension real del archivo subido
  5. $ext = strtolowr(end(explode('.', $name))); // En minusculas para facilitar las cosas
  6. if( ! in_array($ext, $extensiones)) {
  7.     die("Esto no es una imagen >:-(");
  8. }
  9.  
  10. // La @ es para que no se muestre mensaje de error si:
  11. // - El archivo NO existe
  12. // - El archivo NO es una imagen valida
  13. $imgData = @getimagesize($temp);
  14.  
  15. // Comparacion con triple signo igual (tipo de dato y valor)
  16. if($imgData === false) {
  17.     die("Esto no es una imagen >:-(");
  18. }
  19.  
  20. // Aqui usas move_uploaded_file() o lo que prefieras
__________________
- León, Guanajuato
- GV-Foto