Foros del Web » Programando para Internet » PHP »

Subir imagen de manera seguro con php

Estas en el tema de Subir imagen de manera seguro con php en el foro de PHP en Foros del Web. Hola amigos, tengo un problema al subir mi imagen con php encontre este aporte subir imagen con php, lo que sucede hace pasar la repeticion ...
  #1 (permalink)  
Antiguo 28/08/2011, 01:01
Avatar de Masterphp  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/php/
Mensajes: 94
Antigüedad: 14 años, 7 meses
Puntos: 3
Subir imagen de manera seguro con php

Hola amigos,
tengo un problema al subir mi imagen con php encontre este aporte subir imagen con php, lo que sucede hace pasar la repeticion por el POST con live_http_headers de firefox esto usan mayormente para hackers de web sites si subo archivo.jpg cambiado de archivo.php lo asepta normal lo que estoy buscando es un codigo php que revise si el archivo .jpg o gif sea el verdadero formato y si no lo es simplente que rechase, solo quiero un code que revise el verdadero formato de archivo el resto yo me encargo de programar.

estube letendo por ahi librerias GD aver si me echan la mano
tengo este codigo pero no sirve para una web seguro.

Código PHP:
Ver original
  1. <?
  2. if($_POST){
  3. // Creamos la cadena aletoria
  4. $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  5. $cad = "";
  6. for($i=0;$i<12;$i++) {
  7. $cad .= substr($str,rand(0,62),1);
  8. }
  9. // Fin de la creacion de la cadena aletoria
  10. $tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero
  11. $tamaño_max="50000000000"; // Tamaño maximo permitido
  12. if( $tamano < $tamaño_max){ // Comprovamos el tamaño
  13. $destino = 'uploaded' ; // Carpeta donde se guardata
  14. $sep=explode('image/',$_FILES["file"]["type"]); // Separamos image/
  15. $tipo=$sep[1]; // Optenemos el tipo de imagen que es
  16. if($tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp"){ // Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen
  17. move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$cad.'.'.$tipo);  // Subimos el archivo
  18. include('post.html'); // Incluimos la plantilla
  19. }
  20. else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo desimos
  21. }
  22. else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo desimos
  23. }
  24. ?>
  #2 (permalink)  
Antiguo 28/08/2011, 06:38
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 11 meses
Puntos: 14
Respuesta: Subir imagen de manera seguro con php

Hola. Hecha un vistazo a esta función:
http://www.php.net/manual/en/function.finfo-file.php

En el ejemplo 1 se ve como obtiene el mime type de una lista de ficheros. A partir de ahí, podrás decidir si descartar el fichero o no.
__________________
No hay cuerda desafinada sino músico progresivo
  #3 (permalink)  
Antiguo 28/08/2011, 08:06
Avatar de Masterphp  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/php/
Mensajes: 94
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Subir imagen de manera seguro con php

he probado esta función de igual forma es traspasado el fichero cambiado de extencion de php a jpg
alguna otro idea de revisar el verdadero formato...


Gracias por responderme
  #4 (permalink)  
Antiguo 28/08/2011, 11:57
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 11 meses
Puntos: 14
Respuesta: Subir imagen de manera seguro con php

Hola. En la documentación de la función dice:
Cita:
The functions in this module try to guess the content type and encoding of a file by looking for certain magic byte sequences at specific positions within the file. While this is not a bullet proof approach the heuristics used do a very good job.
Lo que entiendo es que mira en determinados bytes del contenido del fichero para determina su tipo y no en la extensión.

Entiendo que lo haces es coger un fichero .PHP, cambiarle la extensión a .JPG y subirlo al servidor. ¿Verdad? Y después, al ejecutar esa función, el content-mime-type que te devuelve es el de " image/jpeg"?
__________________
No hay cuerda desafinada sino músico progresivo
  #5 (permalink)  
Antiguo 29/08/2011, 21:20
Avatar de Masterphp  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/php/
Mensajes: 94
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Subir imagen de manera seguro con php

no, antes de subir que revise y no permita subir este tipo de archivo cambiado de php a jpg, al servidor se envia justamente en ese momento de enviar a carpeta de imagenes con cabeceras headers cambiando la extencion, y lo que busco es justamente evitar que envie este tipo de archivos
  #6 (permalink)  
Antiguo 30/08/2011, 01:42
Avatar de Smolky  
Fecha de Ingreso: mayo-2006
Ubicación: Cartagena
Mensajes: 177
Antigüedad: 17 años, 11 meses
Puntos: 14
Respuesta: Subir imagen de manera seguro con php

¿Antes de subir? Si te entiendo bien habría que hacerlo entonces con un lenguaje que se ejecute en el lado del cliente y no en el lado del servidor porque PHP no podría operar con el fichero hasta que este no se encuentre en el servidor.
__________________
No hay cuerda desafinada sino músico progresivo

Etiquetas: html, seguro
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 00:22.