[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 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?
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...

Gracias!
-- 
"El desarrollo no es material es un estado de conciencia mental"


Reply to: