[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Proteger un directorio publico en la web contra descargas via wget o curl



El día 4 de octubre de 2015, 16:25, Carlos Carcamo
<eazyduiz@gmail.com> escribió:
> El 4 de octubre de 2015, 11:19 a. m., Javier Silva
> <fjsilvam@gmail.com> escribió:
>>
>> El 4/10/2015 8:01, "Carlos Carcamo" <eazyduiz@gmail.com> escribió:
>>>
>>> Saludos lista,
>>>
>>> Vengo en busca de un poco de ayuda, lo que tengo es una web en php donde
>>> pretendo guardar algunas imágenes de usuarios, digamos por ejemplo que
>>> guardo las imágenes en un directorio llamado 'private_images' dentro de mi
>>> proyecto, me gustaría saber si existe alguna forma de proteger ese
>>> directorio contra wget o curl.
>>>
>>> Estoy usando apache como servidor web en un vps con Debian wheezy
>>>
>>> por el momento he puesto un .htaccess como sigue:
>>>
>>> RewriteEngine on
>>> RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
>>> RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
>>> RewriteRule \.(gif|jpg|png|jpeg)$ - [F]
>>>
>>> Este permite ocultar cualquier archivo de imagen al acceder a la url como:
>>> http://localhost/mi_web/private_images, pero puedo desplegar las imágenes si
>>> por ejemplo las mando a llamar con código html o php,
>>>
>>> pero si uso wget como sigue:
>>>
>>> $ wget -r http://localhost/mi_web/
>>>
>>> Puedo descargar todas las imágenes en 'private_images' y eso es
>>> precisamente lo que quiero evitar.
>>> Lo que necesito es poder mostrar las imágenes en la web solo a los
>>> usuarios logueados pero que no sea posible descargarlas todas usando wget o
>>> curl como actualmente sucede.
>>>
>>> Saben de algún hack que pueda utilizar ya sea en GNU/Linux, usando apache
>>> o usando php?
>>>
>>> De antemano muchas gracias por su ayuda, éxitos para tod@s.
>>>
>>
>> Hola,
>>
>> Comienza por no poner las imágenes en carpetas públicas del servidor web. A
>> continuación creas un script en php que retorne un objeto de imagen, el cual
>> comprobará si se han validado el usuario de forma adecuada. Entonces asignas
>> dicho script en PHP al IMG SRC de cada imagen a mostrar.
>>
>> Una carpeta pública no es posible protegerla, por el simple hecho de tener
>> esa condición y cualquiera que reciba un enlace podrá descargar esa imagen o
>> cualquier otra, simplemente probando diferentes nombres.
>>
>> Un saludo,
>> Javier Silva.
>
> Gracias a todos por responder y perdón por el HTML olvide poner modo texto...
>
> Parece que lo mas sabio es no poner 'private_images' en una carpeta publica.
> Por otra parte he logrado evitar que se acceda al directorio en la web
> y también evitar que se descargue con curl o wget (al menos eso
> parece). He modificado el .htaccess como sigue:
>
>
> Options -Indexes # como sugiere Camaleón
> RewriteEngine on
> RewriteCond %{HTTP_USER_AGENT} Wget.*
> RewriteRule .* - [F,L]
>
> He usado también httrack y no veo que logre descargar el directorio
> 'private_images'. Todo parece estar bien hasta donde he probado.
>
> Me pregunto si hay alguna herramienta más poderosa que wget

> o bien
> alguna forma en que wget pueda pasar o ignorar las reglas del
> .htaccess?

El useragent que muestra el wget puede ser cambiado:

$ wget --help | grep -i agent
  -U,  --user-agent=AGENT          identify as AGENT instead of Wget/VERSION.

> Algo que me recomienden intentar para probar que verdaderamente no
> pueden descargar ese directorio?
>
> Aclaración (por las dudas jaja): las imágenes si deben mostrarse en la
> web, quiere decir que pueden descargarlas una por una, pero quiero
> evitar que las descarguen todas de una vez...

Si el directorio debe ser accedido por el browser
también podrá ser accedido por wget con los parámetros adecuados.

Yo creo que la solución más adecuada es la que te indicó Javier Silva
en el caso que necesites dar acceso a la imagen a un usuario autenticado.

Si el acceso debe darse a usuarios sin autenticación, pues puedo comentar
que, no sé como se hace, pero, he visto sitios que sólo
te permiten realizar una conexión desde un
IP determinado, por lo que al intentar bajarlo con conexiones simultáneas
te envía el IP a una "lista negra" pero pienso que eso ya sería un extremo,
porque tiene sus consecuencias (hacer ban a toda una sub red
que llegue enmascarada, etc) y de todos modos, wget puede ser configurado
para no usar conexiones múltiples.

Un abrazo,
-- 
§~^Calabaza^~§ from Villa Elisa, Paraguay

http://es.wikipedia.org/wiki/Top-posting
http://es.wikipedia.org/wiki/Netiquette | http://www.ietf.org/rfc/rfc1855.txt

http://www.sindominio.net/ayuda/preguntas-inteligentes.html


Reply to: