Foros del Web » Programando para Internet » PHP »

extensiones de imagen que sean seguras

Estas en el tema de extensiones de imagen que sean seguras en el foro de PHP en Foros del Web. tengo un inconveniente, el cual es que tengo un formulario en el que suben y envían una imagen en los formatos de imagen al servidor ...
  #1 (permalink)  
Antiguo 27/10/2015, 17:19
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 5 meses
Puntos: 1
extensiones de imagen que sean seguras

tengo un inconveniente, el cual es que tengo un formulario en el que suben y envían una imagen en los formatos de imagen al servidor

mi código verifica que sean imagenes, incluso en formulario valida que sean con la extensión especifica (jpg, gif, png)

pero existen personas inescrupulosas que envían archivos "camuflados" en .dat. exe o bat u otra extensión la cual transforman no se como en una imagen pero esta no es na imagen en si si no un archivo de estos la cual engañan al script.. he intentado colocarlo en el php que ejecuta luego todo.. pero no me sale no se como hacerlo, pensé ir jugando con el peso de la imagen la cual las imágenes pesan considerablemente comparándolas con estos ficheros... PERO NO ME RESULTA, posteo la parte del código que uso....

Código PHP:
$tamanomax=100;
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo
    
$tamano $_FILES["archivo"]['size'];
    
$tipo $_FILES["archivo"]['type'];
    
$archivo $_FILES["archivo"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
   
   if (
$archivo != "" || $tipo == "image/gif" || $tipo == "image/jpeg" || $tipo == "image/jpg" || $tamano >= $tamanomax){
        
// guardamos el archivo a la carpeta files
        
$destino =  "files/".$prefijo."_".$archivo;
        if (
copy($_FILES['archivo']['tmp_name'],$destino)) {
           echo 
"<b>Envio Exitoso,</b><br><br>Estamos procesando su información,<br>Le enviaremos a su cuenta de correo:<br><b>$_POST[email],</b><br>todo el procedimiento a seguir.<br>No olvide revisar su buzón de Correo no deseado o spam <br>si nota que el mensaje no le llega instantaneamente.<br><br><a href=index.html target=_parent>Regresar</a>";
 
//=============================================================================
$consulta="Insert into $tabla values ('$id','$nombres','$tipoidentificacion','$identificacion','$telefono','$email','$consignacion' ,'$destino','$clave','$estado','$fecha','$boundary','$ip','$consecutivo')";
$resultado=mysql_query($consulta);
if(
$resultado==0){mysql_close();
exit;
 }else{
       
$status "Solo se permiten archivos de imagen (jpg o gif)";
        }
    } else {
        
$status "Error al subir archivo";
    }

espero me ayuden.... POSDATA mi Nivel php es Muy Básico
  #2 (permalink)  
Antiguo 27/10/2015, 17:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: extensiones de imagen que sean seguras

Cita:
pero existen personas inescrupulosas que envían archivos "camuflados" en .dat. exe o bat u otra extensión la cual transforman no se como en una imagen pero esta no es na imagen en si si no un archivo de estos la cual engañan al script
Es un temor infundado.

Ningún archivo se ejecuta por sí mismo, jamás.

Para que un archivo así como mencionas pueda hacer daño en tu sistema tienes que ejecutarlo, mientras no hagas eso es totalmente inofensivo.

Es como el cuchillo de la cocina, si alguien lo quiere usar para hacer daño lo hará, pero por si mismo no es una amenaza.

¿Tienes pensado ejecutar como código PHP todo lo que subas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/10/2015, 17:52
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Respuesta: extensiones de imagen que sean seguras

Me recuerdas a mi, soy una paranoica de la seguridad, a veces siento que exagero pero sinceramente es mejor ser precavida, una vez me dio pánico colocar la opción de subir archivos así que coloque mejor una opción de imagen externa y le valide el protocolo, la extensión y límité a dos servidores la URL. Igual tu podrías hacer algo similar, válida la extensión, el peso, el contenido y usa htaccess para delimitar los archivos en la carpeta donde subas el archivo.
  #4 (permalink)  
Antiguo 27/10/2015, 17:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: extensiones de imagen que sean seguras

Necesitas obtener el tipo MIME del archivo, para lo cual puedes hacer uso de la clase FileInfo.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 27/10/2015, 18:59
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 5 meses
Puntos: 1
Respuesta: extensiones de imagen que sean seguras

Es cierto ningun archivo por si solo cobraria vida y si hay que ser precavido jejeje solo que muchas veces suben mucha basura y me gustaria que lo dejaran de hacer como hago eso del mime y como logro que me funcione mi codigo para que esos archivos que se monten sean en verdad imagenes
  #6 (permalink)  
Antiguo 27/10/2015, 19:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: extensiones de imagen que sean seguras

Cita:
Iniciado por flashtrix Ver Mensaje
[...]como hago eso del mime[...]
Ingresa al enlace que te dejé. En el ejemplo que se muestra, en lugar de $filename, coloca el nombre temporal o tmp_name. El utilizar un bucle, es opcional. Si se trata de validar varios archivos, entonces, sí te conviene usarlo.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: extensiones, fecha, formulario, html, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:03.