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


Reply to: