Foros del Web » Programando para Internet » PHP »

forzar descarga de archivos con php y seguridad

Estas en el tema de forzar descarga de archivos con php y seguridad en el foro de PHP en Foros del Web. buenas noches, he puesto la posibilidad de descargar archivos en una web, y me gustaría saber si es segura: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original ...
  #1 (permalink)  
Antiguo 06/11/2014, 15:39
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 8 meses
Puntos: 2
forzar descarga de archivos con php y seguridad

buenas noches,

he puesto la posibilidad de descargar archivos en una web, y me gustaría saber si es segura:

Código HTML:
Ver original
  1. <a href="http://www.nombredelaweb.com/ruta/descarga.php?archivo=<%=archivos[j][2]%>&ubicar=correou"><%=archivos[j][2]%></a>

Código PHP:
Ver original
  1. <?php
  2.  
  3.     if (!isset($_GET['archivo']) || empty($_GET['archivo']))
  4.     {
  5.         exit();
  6.     }
  7.  
  8.     $file   = basename($_GET['archivo']);
  9.     $ubicar = $_GET['ubicar'];
  10.    
  11.     define('BASE_IMAG', 'rutafisicadelacarpetaenelservidor');
  12.     $root = BASE_IMAG.DIRECTORY_SEPARATOR.$ubicar.DIRECTORY_SEPARATOR;
  13.    
  14.     $path = $root.$file;
  15.     $type = '';
  16.  
  17.     if (is_file($path))
  18.     {
  19.         $size = filesize($path);
  20.         if (function_exists('mime_content_type'))
  21.         {
  22.             $type = mime_content_type($path);
  23.         }
  24.         elseif (function_exists('finfo_file'))
  25.         {
  26.             $info = finfo_open(FILEINFO_MIME);
  27.             $type = finfo_file($info, $path);
  28.             finfo_close($info);
  29.         }
  30.         if ($type == '')
  31.         {
  32.             $type = "application/force-download";
  33.         }
  34.  
  35.         // Definir headers
  36.         header("Content-Type: $type");
  37.         header("Content-Disposition: attachment; filename=$file");
  38.         header("Content-Transfer-Encoding: binary");
  39.         header("Content-Length: " . $size);
  40.  
  41.         // Descargar archivo
  42.         readfile($path);
  43.     }
  44.     else
  45.     {
  46.         die("El archivo no existe.");
  47.     }
  48.  
  49. ?>

un saludo.
  #2 (permalink)  
Antiguo 06/11/2014, 16:02
 
Fecha de Ingreso: abril-2012
Mensajes: 124
Antigüedad: 12 años
Puntos: 3
Respuesta: forzar descarga de archivos con php y seguridad

Yo no me fiaría mucho, la variable $ubicar puede contener cualquier cosa que pasen por GET, alguien podria poner, por ejemplo,
nombredelaweb.com/ruta/descarga.php? archivo=passwords.txt&ubicar=..%2fdirectoriosuperi or%2fdirectoriopersonal

donde %2f representa la barra invertida /
y acceder a cualquier archivo de cualquier directorio.

Quiza mejor que el directorio lo pongas en el php y no lo pases por GET.
Usando basename() creo que no hay problemas para el nombre del archivo.
__________________
Mi web de programación en PHP en construcción, claro. Un dia de esos pongo algo.
  #3 (permalink)  
Antiguo 07/11/2014, 05:30
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 8 meses
Puntos: 2
Respuesta: forzar descarga de archivos con php y seguridad

Poniendo esto en el navegador:

http://nombredelaweb.com/uparchivos/...ctoriopersonal

el resultado es:

archivo no existe

no se si he hecho bien esta prueba.

¿podrías confirmar?

un saludo.

Etiquetas: seguridad
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 17:21.