Foros del Web » Programando para Internet » PHP »

Limitar descargas de carpeta desde el exterior

Estas en el tema de Limitar descargas de carpeta desde el exterior en el foro de PHP en Foros del Web. Hola, lo que me gustaría hacer es lo que hace lycos, yo tengo una carpeta dentro de mi servidor donde tengo alojados archivos para descarga, ...
  #1 (permalink)  
Antiguo 12/08/2004, 14:19
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
Pregunta Limitar descargas de carpeta desde el exterior

Hola,
lo que me gustaría hacer es lo que hace lycos, yo tengo una carpeta dentro de mi servidor donde tengo alojados archivos para descarga, lo que quiero hacer es que desde fuera de mi web estos archivos no sean accesibles, que salga una web donde diga que no se puede desacargar, pero desde mi dominio si, creo que me explico.
Lycos hace eso, si tienes un acceso directo a un programa descargable de una web alojada en lycos no te deja, si es a través de su web sí.
Lo que no se es si esto se puede hacer en php o es configuración del apache o es javascrip, html, etc.
A ver si me podeis ayudar.
Saludos.
  #2 (permalink)  
Antiguo 12/08/2004, 15:11
Avatar de cadec  
Fecha de Ingreso: junio-2004
Mensajes: 278
Antigüedad: 19 años, 9 meses
Puntos: 0
Protege la carpeta donde estan los archivos.
Dentro del cpanel hay opciones que deniegan acceso a los datos desde x direcciones.

saludos

________________________
www.todopy.com
  #3 (permalink)  
Antiguo 12/08/2004, 17:03
Avatar de execon  
Fecha de Ingreso: enero-2002
Ubicación: Temuco
Mensajes: 179
Antigüedad: 22 años, 2 meses
Puntos: 0
Si no quieres que se vean los archivos pon un index.php con un redireccionamiento a tu web de inicio o bien con un mensaje que diga que no puedes descargar.

Si para poder verlos tienes que estar logeado en alguna parte, en ese caso usa sesiones para denegar el acceso a los archivos, asi cuando se acceda a la carpeta de forma directa sin haberse logeado arrojara un error o sera redireccionado al inicio o al login.

Si no te sirve eso tonz protege tu carpeta con password de modo que solicite una autenticacion http (.htaccess).

Espero las ideas te sirvan.
__________________
----------------------------------
APP Developer
[email protected]
----------------------------------
  #4 (permalink)  
Antiguo 13/08/2004, 06:18
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
No se si me he explicado bien.
Yo tengo una carpeta en la que tengo archivos en zip para descarga, imaginemos que se llama descargas. A través de la web obligo a los usuarios a darse de alta para poder descargar estos archivos, hasta ahí todo bien.
El problema es que si alguien conoce el nombre del archivo y la dirección puede poner enlaces directos desde su web, y eso es lo que quiero evitar, si alguien pone: www.miweb.com/archivos/loquesea.zip que no pueda descargarlo, que salga una págna diciendo que no puede, como en lycos, que solo permita descargas desde mi dominio.
No se si se podrá hacer, si alguien lo sabe le estaría muy agradecido.
  #5 (permalink)  
Antiguo 13/08/2004, 06:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
A la técnica descrita . en paneles de control como cPanel le llaman "hotlink" .. y nivel de configuración de Apache (servidor HTTP) y sus .htacces se refiere a limitar el acceso a ese directorio "deny all .. allow from tu_ip_dominio" o similar ..

Vía PHP puedes hacer un script que llame a tu archivo bajo una llamada tipo:

descargar.php?archivo=tal.tal

Código PHP:
<?
$ruta_absoluta_archivos
="/var/nose/archivos"// o "c:\nose\archivos"
header ("cabeceras HTTP para descagar"); // más info en [url]www.php.net/header[/url]
readfile($ruta_absoluta_archivos.$_GET['archivo']);
?>
El caso es que coloques tus archivos fuera de tu "document_root" para que no queden acesibles vía llamada por el URL: http://www.tal.tal/archivos/tal sino que sólo ese script tuyo sea el que pueda pedir el archivo.

A su vez . como tienes control bajo tu scirpt de cuando se entrega el archivo .. puedes ver cosas como el "HTTP_REFERER" o IP del cliente que solicita el archivo o usar sesiones .. cookies .. etc para validar quien descarga el archivo.

Un saludo,
  #6 (permalink)  
Antiguo 13/08/2004, 09:07
AKB
 
Fecha de Ingreso: agosto-2004
Mensajes: 52
Antigüedad: 19 años, 8 meses
Puntos: 0
Prueba esto:

Crea un fichero ".htaccess" sin comillas, pero con el nombre tal cual: .htaccess (si windows no te lo permite crealo como 1.htaccess, subelo al servidor y renombralo alli con el ftp

Pones ese fichero en la carpeta donde estén tus descargas y escribes dentro:
Order deny,allow
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?tudominio.com/.*$ [NC]
RewriteRule \.(gif|jpg|png|mp3|mpg|avi|mov)$ - [F]

Sustituye tudominio.com por lo que tú quieras, la que sea tu url. Esto evitará que enlacen tus descargas desde otro dominio distinto del tuyo. Combinado con la autentificación, debería ser protección más que suficiente.
  #7 (permalink)  
Antiguo 13/08/2004, 16:37
 
Fecha de Ingreso: agosto-2004
Ubicación: Valencia
Mensajes: 149
Antigüedad: 19 años, 8 meses
Puntos: 0
De acuerdo

Saludos de nuevo,
he probado el tema que comenta AKB y en principio funciona, no permite el acceso remoto a los archivos de esa carpeta si hacen click en el enlace de otra página exterior, pero sí que permite desargar el archivo si le das al botón derecho y guardar como, en fin, algo he conseguido de momento.
En cuanto a lo que comenta Cluster, no puedo acceder fuera del root vía ftp para subir nada, y el scrip que tengo ya lo tengo realizado como tu comentas, para que sólo sea él el que llame, pero no es muy complicado saber la ruta de donde viene el archivo, por ejemplo con un gestor de descargas.
No tengo el cPanel y por lo tanto no se como funciona.
De todas formas gracias por el interés, os informaré si encuentro alguna forma que no sea la que habeis comentado, la verdad es que aquí se aprende mucho.
Saludos.
  #8 (permalink)  
Antiguo 13/08/2004, 20:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm bueno .. lo que comentaba yo no es el "root" sino donde apunte tu DOCUMENT ROOT (que lo puedes ver en un phpinfo() ...) ..

En un servicio de hosting común .. tu document root apunta a :

public_html/

y cuando accedes por FTP a tu sitio .. ves esa carpeta (directorio) y algunos más es ahí donde tendrías que crear tu nueva carpeta para que quede fuera del alcance de una llamada vía HTTP.

Sobre lo que comentas que ven la ruta de tu archivo .. no sé que script usas .. pero si usas cabeceras HTTP para entregar el archivo NUNCA deberían ver más ruta que la de tu própio script que hace de "lanzador" de los archivos .. Eso sí .. si haces un simple: header ("Location: archivo.tal") .. ahí si que veran tu ruta.

Un saludo,
  #9 (permalink)  
Antiguo 31/08/2004, 09:11
 
Fecha de Ingreso: enero-2002
Mensajes: 115
Antigüedad: 22 años, 3 meses
Puntos: 1
hola he visto la conversacion y tengo una duda como accedes a una carpeta fuera de public_html?

Gracias
  #10 (permalink)  
Antiguo 31/08/2004, 11:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por HORUSNET
hola he visto la conversacion y tengo una duda como accedes a una carpeta fuera de public_html?

Gracias
Por FTP a tu sitio .. suponiendo que tu servicio de hosting te lo permita (no todos lo hacen).

y desde PHP indicando una ruta absoluta tipo:
/var/www/nose/sitio.com/ ....
(en las funciones que requieran de un archivo como fopen(), file(), include() .. etc.)


Un saludo,
  #11 (permalink)  
Antiguo 09/09/2004, 09:23
Avatar de alora  
Fecha de Ingreso: julio-2004
Ubicación: nose
Mensajes: 44
Antigüedad: 19 años, 8 meses
Puntos: 0
Y para ke salga una imagen cuando intetas acceder desde fuera¿?
__________________
Contenidos Para Adultos
  #12 (permalink)  
Antiguo 10/09/2004, 07:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por alora
Y para ke salga una imagen cuando intetas acceder desde fuera¿?
Usando el módulo "mod_rewrite" de Apache (si usas ese servidor HTTP) similar al ejemplo de AKB (configurando un .htaccess)

Un saludo,
  #13 (permalink)  
Antiguo 13/09/2004, 06:51
 
Fecha de Ingreso: agosto-2004
Mensajes: 95
Antigüedad: 19 años, 7 meses
Puntos: 2
Ojala te sirva


Código PHP:
<?
//Nos indica la URL desde la cual el internauta ha tenido acceso a la página. 
$url substr($_SERVER['HTTP_REFERER'],7,13);

// http://
// 1234567

//estraemos lo que nos interesa de la URL

//EJ:. [url]http://www.midominio.com/descargas.html[/url]
//$url = substr("http://www.midominio.com/descargas.html",7,17);
//obtendriamos [url]www.midominio.com[/url] lo cual es correcto 
//y lo dejo pasar , caso contrario

//http://www.otrodominio.com/descargas.html
//$url = substr("http://www.otrodominio.com/descargas.html",7,17);
//obtendriamos [url]www.otrodominio.c[/url] lo cual no es correcto 
//y no lo dejo pasar.

//Si no tiene el dominio que quiero, lo redirecciono..
if ($url != 'www.midominio.com'){
header("Location: nodescarga.php");
//header("Location: http://www.google.cl");
}
else
{
// que descargue
}

//si ingresa la dirección directamente en la barra de 
//direcciones tampoco lo dejara pasar.. solo link internos

// ARICA - CHILE

?>

Última edición por marcomartinez; 13/09/2004 a las 06:54
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 19:26.