Foros del Web » Programando para Internet » PHP »

¿Como Encriptar URL de PHP? Directorio de Archivos

Estas en el tema de ¿Como Encriptar URL de PHP? Directorio de Archivos en el foro de PHP en Foros del Web. Hola amigos tengo un directorio de archivos, a este solo acceden usuarios con cierto tipo de cuenta... admin, mode, vip... y al intentar entrar siempre ...
  #1 (permalink)  
Antiguo 09/11/2015, 19:25
 
Fecha de Ingreso: octubre-2015
Mensajes: 5
Antigüedad: 8 años, 6 meses
Puntos: 0
¿Como Encriptar URL de PHP? Directorio de Archivos

Hola amigos tengo un directorio de archivos, a este solo acceden usuarios con cierto tipo de cuenta... admin, mode, vip... y al intentar entrar siempre pide el login

http://www.soportegsm.net/gsmdrive/

Pero por ejemplo con una url directa de algun archivo particular puede descargar cualquier user de la web (sea quien sea) eje

http://www.soportegsm.net/gsmdrive/Aplicaciones%20Android%20%28apk%20-%20app%29/Root/KingRoot-4.1.0.524.rar

Cuando se supone que no debe descargar sin estar logueado... pregunta como puedo proteger mis urls directas para que siempre que no esten logueados les pida primero loguearse y ahora si descargar urls directa.

PD. Me gustaria a la misma ves saber alguna forma de encriptar las urls directas o no directas (algo como mega)
  #2 (permalink)  
Antiguo 09/11/2015, 19:54
 
Fecha de Ingreso: octubre-2010
Mensajes: 219
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: ¿Como Encriptar URL de PHP? Directorio de Archivos

La podes encriptar con la función md5 de PHP.
  #3 (permalink)  
Antiguo 09/11/2015, 19:56
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Respuesta: ¿Como Encriptar URL de PHP? Directorio de Archivos

Se me ocurre que abras .php exclusivo para la descarga y que le envies el id del archivo por get algo tipo:

www.miweb.com/download.php?id=IDDELARCHIVO

Y download.php esté configurado para que solo "ciertos" usuarios accedan a ese contenido mediante una sesión, si no tiene el rol de sesión específico lo redireccionas antes de descargar.
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #4 (permalink)  
Antiguo 09/11/2015, 19:59
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: ¿Como Encriptar URL de PHP? Directorio de Archivos

podrias hacer algo asi:

Código PHP:
Ver original
  1. //verificamos que la variable no venga vacia
  2. if (!isset($_GET['archivo']) || empty($_GET['archivo'])) {
  3.     exit();
  4. }
  5.  
  6. //en caso contrario  asignamos la variable
  7. $archivo = $_GET['archivo'];
  8.  
  9. //ejecutamos la funcion de descarga
  10.  
  11. function descarga($archivo){
  12.  
  13. //extraemos la extension del archivo
  14. list($n, $e) = explode(".", $archivo);
  15.  
  16. //asignamos el directorio donde se encuentras esos archivos
  17. switch ($e) {
  18.   case 'rar':
  19.   $url = 'comprimidos/';
  20.   break;
  21.  
  22.   case 'doc':
  23.   $url = 'documentos/. ';
  24.   break;
  25.  
  26.   case 'pdf':
  27.   $url = 'documentos/. ';
  28.   break;
  29.  
  30.   case 'jpg':
  31.   $url = 'img/. ';
  32.   break;
  33.  
  34. }
  35.  
  36. //iniciamos el proceso de descarga
  37. $root = $url;
  38. $file = basename($archivo);
  39. $path = $root.$file;
  40. $type = '';
  41.  
  42. if (is_file($path)) {
  43.     $size = filesize($path);
  44.     if (function_exists('mime_content_type')) {
  45.         $type = mime_content_type($path);
  46.     } else if (function_exists('finfo_file')) {
  47.         $info = finfo_open(FILEINFO_MIME);
  48.         $type = finfo_file($info, $path);
  49.         finfo_close($info);  
  50.     }
  51.     if ($type == '') {
  52.         $type = "application/force-download";
  53.     }
  54.     // Generamos las cabeceras
  55.     header("Content-Type: $type");
  56.     header("Content-Disposition: attachment; filename=$file");
  57.     header("Content-Transfer-Encoding: binary");
  58.     header("Content-Length: " . $size);
  59.     // Inicia la descarga del archivo
  60.     readfile($path);
  61. } else {
  62.    
  63.     die("El Archivo no existe!!");
  64. }
  65. }

y tus enlaces cambiarlos a algo asi:

Código HTML:
Ver original
  1. <a href="descarga.php?archivo.rar">Descargar</a>

así nadie sabría cual es la ruta de tus archivos, al menos es una solucion, pero hay otras
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 09/11/2015, 22:45
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: ¿Como Encriptar URL de PHP? Directorio de Archivos

te coloco el codigo con verificacion de logueo o sesion:

Código PHP:
Ver original
  1.      
  2.     if (isset($_SESSION['usuario']) && $_SESSION['logueado'] == true && $_SESSION['estados']== "Activo")
  3.     {
  4.         //si estan logueados o autenticados continuamos con el proceso de descarga
  5.     }
  6.     else
  7.     {
  8.         //si no estan autenticados simplementes los mando a volar y no descargan nada
  9.         header('Location:/app/error_acceso.php');
  10.    
  11.     exit;
  12.     }
  13.  
  14. //aqui continuo si el usuario esta autenticado 
  15.  
  16. //verificamos que la variable no venga vacia
  17. if (!isset($_GET['archivo']) || empty($_GET['archivo'])) {
  18.     //si viene vacia cierro el codigo y hasta aqui llega
  19.     exit();
  20. }
  21.  
  22.  //en caso contrario  asignamos la variable
  23. $archivo = $_GET['archivo'];
  24.  
  25. //ejecutamos la funcion de descarga
  26. function descarga($archivo){
  27.  
  28. //extraemos la extension del archivo
  29.  
  30. //esta parte del codigo es solo si tienes los archivos ordenados en varios directorios, en caso contrario la puedes eliminar hasta donde dice AQUI
  31. list($n, $e) = explode(".", $archivo);
  32.  
  33. //asignamos el directorio donde se encuentras esos archivos
  34. switch ($e) {
  35.   case 'rar':
  36.   $url = 'comprimidos/';
  37.   break;
  38.  
  39.   case 'doc':
  40.   $url = 'documentos/. ';
  41.   break;
  42.  
  43.   case 'pdf':
  44.   $url = 'documentos/. ';
  45.   break;
  46.  
  47.   case 'jpg':
  48.   $url = 'img/. ';
  49.   break;
  50.  
  51. }
  52. //hasta aqui eliminas AQUI
  53.  
  54. /*La siguiente linea la descomentas si eliminas lo anterior ya que todos tus archivos estan en el mismo directorio*/
  55. //$url = "directorio/";
  56.  
  57. //iniciamos el proceso de descarga
  58. $root = $url;
  59. $file = basename($archivo);
  60. $path = $root.$file;
  61. $type = '';
  62.  
  63. if (is_file($path)) {
  64.     $size = filesize($path);
  65.     if (function_exists('mime_content_type')) {
  66.         $type = mime_content_type($path);
  67.     } else if (function_exists('finfo_file')) {
  68.         $info = finfo_open(FILEINFO_MIME);
  69.         $type = finfo_file($info, $path);
  70.         finfo_close($info);  
  71.     }
  72.     if ($type == '') {
  73.         $type = "application/force-download";
  74.     }
  75.     // Generamos las cabeceras
  76.     header("Content-Type: $type");
  77.     header("Content-Disposition: attachment; filename=$file");
  78.     header("Content-Transfer-Encoding: binary");
  79.     header("Content-Length: " . $size);
  80.     // Inicia la descarga del archivo
  81.     readfile($path);
  82. } else {
  83.    
  84.     die("El Archivo no existe!!");
  85. }
  86. }

es fácil de interpretar ya que solo vas a modificar unas pocas lineas y ya estara trabajando, la ventaja, pues nadie va a saber en que directorio guardas tus archivos y nadie que no este autenticado va a poder descargar los archivos:

los enlaces los corrijo:

Código HTML:
Ver original
  1. <a href="descarga.php?archivo=tuarchivo.rar">Descargar</a>
como puedes ver en el enlace ahora no estoy colocando la ruta completa a mi archivo si no la ruta al php que va a verificar al usuario y generar la descarga sin mostrar nada adicional.

Saludos
__________________
[email protected]
HITCEL

Etiquetas: directorio, encriptar, url, usuarios
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 23:40.