Autor
|
Tema: Como validar UPLOAD de imagenes correctamente (Leído 11,887 veces)
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Hola gente. En mi sitio web se puede subir imagenes, y me pregunto si éste codigo es suficiente para validar que los archivos que se estan subiendo no serán utilizados para realizar algun ataque a la web: if(substr($_FILES['imagen']['type'],strlen($_FILES['imagen']['type'])-4)=='jpeg'){ //subir archivo }
|
|
|
En línea
|
|
|
|
Castg!
Wiki
Desconectado
Mensajes: 1.191
|
podrias usar la libreria GD, entonces pueden subir cualquier tipo de imagenes (a cualquier tipo me refiero a png, gif o jpg :p jeje) pero no importa el tipo que suban, siempre te las guarda en el servidor con extension jpeg. entonces, como las abre, las decodifica, las vuelve a codificar (pero esta vez siempre en jpeg), si habian subido un archivo .php ya no sirve. hoy toy aburrido asi que te dejo el code xD function imagecreatefromimg ($flotaImage) { switch ($tipo['mime']) { case "image/jpeg": break; case "image/png": break; case "image/gif": break; default: die("Tipo de imagen no válida."); break; } return $finalImage; } $imagen = imagecreatefromimg($_FILES['imagen']['tmp_name']); $directorioImagen = 'imagenes/'.$_FILES['imagen']['name'].'.jpg'; imagejpeg($imagen, $directorioImagen); //guardamos la imagen en el directorio imagenes.
Listo  . Funciona, yo lo comprobe  Cualquier error o duda pregunta!! Saludos!!
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Mira.. Yo valido la iamgen así: (porque tambien la redimenciono) if(substr($_FILES['imagen']['type'],strlen($_FILES['imagen']['type'])-4)=='jpeg'){ if($ancho>400){ $divisor=($ancho / 400); $ancho=($ancho / $divisor); $alto=($alto / $divisor); } if($alto>400){ $divisor=($alto / 400); $alto=($alto / $divisor); $ancho=($ancho / $divisor); } //400px x 400px es el tamaño maximo imagejpeg($dst_img,'img/'.$_SESSION['id'].'.jpg'); unlink($_FILES['imagen']['tmp_name']); $errorsubir='La imagen, ha sido subida correctamente'; }else{ $errorsubir='El archivo no ha sido subido. Solo puede ser .jpg<br>Vuelva a intentarlo con otra imagen'; } return $errorsubir; }
Que me dices de ese codigo?
|
|
|
En línea
|
|
|
|
Castg!
Wiki
Desconectado
Mensajes: 1.191
|
hubieses dicho que usabas GD xD me ahorraba el tiempo  jejej, igual me gusta programar  mira, tu codigo esta joya, ahora, no conozco mucho (ya que no lo trabajo) el valor ['type']. nose si se puede trucar o algo asi... mira, en si, tu code es mezcla de lo mio, porq el tuyo, como bien, guarda la imagen como jpeg, y la redimensiona bien. ahora si te interesa, podes mezclar mi code con el tuyo, para que el usuario tenga la posibilidad de subir archivos png y gif, junto a jpeg; redimensiones y la guardes como jpeg. eso es cuestion tuya, en si, confio un poco mas en el "getiomagesize()" y "$tipo['mime']" pero me parece que es exactamente lo mismo. ahora queda cuestion tuya, tu pregunta fue resuelta. Tu codigo esta bien. un saludo 
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Perfecto amigo. Veré si puedo convinar todo entonces... 
|
|
|
En línea
|
|
|
|
Castg!
Wiki
Desconectado
Mensajes: 1.191
|
Ya que estamos  function imagecreatefromimg ($flotaImage) { switch ($tipo['mime']) { case "image/jpeg": break; case "image/png": break; case "image/gif": break; default: die("Tipo de imagen no válida."); break; } return $finalImage; } $aux = imagecreatefromimg($_FILES['imagen']['tmp_name']); if($ancho>400){ $divisor=($ancho / 400); $ancho=($ancho / $divisor); $alto=($alto / $divisor); } if($alto>400){ $divisor=($alto / 400); $alto=($alto / $divisor); $ancho=($ancho / $divisor); } //400px x 400px es el tamaño maximo $directorioImagen = 'img/'.$_SESSION['id'].'.jpg'; imagejpeg($dst_img, $directorioImagen); //guardamos la imagen en el directorio imagenes. if(file_exist($directorioImagen) { echo "Imagen procesada exitosamente"; }else{ echo "Error al procesar la imagen"; }
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Ouiea!
Tnks!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Upload de imagenes seguro PHP
Nivel Web
|
RicRed
|
2
|
4,470
|
19 Mayo 2012, 23:33 pm
por WarGhost
|
|
|
Bypass Upload de imagenes
Seguridad
|
RicRed
|
0
|
2,290
|
3 Noviembre 2012, 14:49 pm
por RicRed
|
|
|
Como usar GROUP y ORDER BY correctamente?
Bases de Datos
|
BEATMASTER
|
4
|
8,623
|
28 Noviembre 2012, 04:52 am
por BEATMASTER
|
|
|
las imágenes aveces no se cargan correctamente
Desarrollo Web
|
soru13
|
3
|
2,465
|
29 Marzo 2013, 23:31 pm
por soru13
|
|
|
[Pregunta]: ¿Como validar CORRECTAMENTE la subida de imagenes?
Desarrollo Web
|
Leguim
|
3
|
2,586
|
21 Julio 2019, 04:42 am
por @XSStringManolo
|
|