Título: Upload de imagenes seguro PHP Publicado por: RicRed en 13 Mayo 2012, 22:13 pm Hola a la gente del foro, estoy tratando de hacer un upload de imagenes seguro en PHP, en la cual los usuarios puedan subir imagenes en una carpeta y publicarlas en el foro.
Tengo el siguiente codigo: Código
Sube archivos con extensiones de imagenes, al subir un php da un error Extension no permitida Hay bien, pero pueden burlar el sistema y subir una imagen con codigo php ejemplo, subo una imagen con codigo php y luego edito por post jpg por php y subiria un archivo php? Espero me ayuden. Saludos! y disculpen la pregunta. Título: Re: Upload de imagenes seguro PHP Publicado por: Shout en 14 Mayo 2012, 01:48 am Hombre, pueden subir una imágen (válida) con código PHP en los comentarios, aunque si has verificado que en tu web no hay LFI, no hay problema ;)
Igual pasala por GD, así se eliminan los comentarios y, también aplicale algo como getimagesize() o similares, si tiran error es que no es una imágen válida, así cancelas el upload y listo. PD: Filtra también que el nombre no contenga el byte nulo porque, si lo contiene, no estoy seguro pero puede que logren bypassear tu filtro. Explicación sobre el byte nulo: Imaginate que tienes esto en PHP: Código
Y yo voy a: file.php?include=../files/avatares/mi_avatar_con_comentario_malicioso.jpg%00 Se incluiría perfectamente el archivo, pues el %00 es el byte nulo, que indica el final del string, por lo que el resto es ignorado y el include queda como include/../files/avatares/mi_avatar_con_comentario_malicioso.jpg, y, al tener los tags PHP <? ?> (la imagen en los comentarios), la función include los evalúa y ejecúta el código, por lo que el atacante tendría el poder de ejecutar código PHP en tu servidor (más que suficiente para hackearte por completo). Nota: no es necesario que el archivo sea .php para que include() ejecute el código que hay en él (entre los tags <? ?>). Espero que me hayas entendido. Saludos. Título: Re: Upload de imagenes seguro PHP Publicado por: WarGhost en 19 Mayo 2012, 23:33 pm Lo mejor que puedes hacer es pasarla por GD (http://php.net/manual/es/book.image.php), así evitar la inyección de código .
También puedes ver esto: http://es.php.net/manual/es/security.hiding.php Lo mejor es tener un código libre de errores, pero cada eslabón de seguridad adicional ayudan. Un saludo! |