2011-05-31 22 views
6

Hay una parte de mi sitio web que permite a los usuarios subir fotos de perfil. Me preocupa que las personas carguen código malicioso. Planeo limitar los tipos de archivos a .jpg/.png/.gif/.jpegCódigo malicioso a través de la carga de imágenes

Me preocupa que no sea suficiente. Voy a cambiar el tamaño de las imágenes de cosas en el servidor. ¿El proceso de cambio de tamaño de las fotos sería suficiente para garantizar que la imagen sea en realidad una imagen, no archivos maliciosos?

Voy a utilizar el siguiente para cambiar el tamaño de las fotos. No almacenaré los originales en el servidor y los nombres de los archivos se modificarán.

imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

    imagejpeg($thumb, $fullpath, 90); 

Respuesta

9

Simplemente haciendo esto asegurará que está trabajando en una imagen:

if (getimagesize($sourcePath) === false) 
{ 
    die("Not an image !"); 
} 

Para mayor seguridad se debe desactivar la ejecución de PHP en la carpeta de carga. En .htaccess:

php_value engine off 
+0

Quizás para alguien nuevo en PHP que encuentre esta publicación, debe cambiar 'panic' por' die' en caso de que literalmente copien y peguen este código. – fire

+0

Ni siquiera pensé en deshabilitar la ejecución de php también. Gracias. –

-1

Este es un tema que no porque no veo cómo podría incluso suceder. Sin embargo, no sé si tus funciones sí (no has publicado el código fuente).

Mientras sepa, no es posible inyectar PHP. Puede inyectar SQL, Javascript, HTML, ...

+1

Puede cargar un archivo php si el sitio web no realiza la validación adecuada. –

+1

¡Por supuesto que es un problema! Incluso si no pudieras inyectar PHP (y podrías hacerlo, pero el sitio web debe codificarse terriblemente para que la inyección de php funcione en un formulario de carga de archivos). –

+0

Respondió usted mismo a su pregunta: "Planeo limitar los tipos de archivo a JPG, PNG, etc.". No hay nada más que hacer. Siempre que su servidor web no ejecute archivos JPG como PHP, no hay problema. – tiktak

1

Buena pregunta. He encontrado un enlace que discute aquí:

http://www.phpclasses.org/blog/post/67-PHP-security-exploit-with-GIF-images.html

Por experiencia personal, que en su mayoría sólo permiten que la carga de imágenes detrás de un escudo contraseña por lo que 'saber' mis usuarios, pero casi siempre lo hacen un cambio de tamaño, así - Mi intuición sería que eso sería suficiente ya que destruye el archivo original y lo reemplaza con tu propia versión remuestreada.

Cuestiones relacionadas