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

2015-10-05 Por tema Calabaza
El día 4 de octubre de 2015, 16:25, Carlos Carcamo
 escribió:
> El 4 de octubre de 2015, 11:19 a. m., Javier Silva
>  escribió:
>>
>> El 4/10/2015 8:01, "Carlos Carcamo"  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



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

2015-10-05 Por tema Camaleón
El Sun, 04 Oct 2015 13:25:14 -0600, Carlos Carcamo escribió:

> Gracias a todos por responder y perdón por el HTML olvide poner modo
> texto...

Mejor ahora :-)

> Parece que lo mas sabio es no poner 'private_images' en una carpeta
> publica. 

Tampoco así evitarías que se descargan las imágenes de manera 
automatizada y masiva por quienes tengan acceso.

Es tan sencillo como entender que si el servidor web tiene acceso de 
lectura a las imágenes y permite que los usuarios anónimos accedan, no 
hay forma de impedir lo que buscas (puedes poner piedras en el camino 
pero si alguien está interesado en bajarse las fotos al final buscará y 
encontrará la manera de hacerlo). Es como el uso del archivo "robots.txt", 
resulta inútil para quien quiera hacer maldades.

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

Wget no puede ignorar las reglas del .htaccess ni saltarse las directivas 
del servidor web pero nada impide que alguien automatice la descarga de 
las imágenes si encuentra una forma de hacerlo.
 
> 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...

Obvio :-)

Saludos,

-- 
Camaleón



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

2015-10-04 Por tema Eduardo Rios

El 04/10/15 a las 12:21, Santiago Vila escribió:


éxitos para tod@s.


héxitos para thodos.

¿Tanto trabajo cuesta escribir bien, o es que hay algún tipo de
patente de corso para que las faltas de ortografía estén mal vistas
pero otro tipo de faltas no lo estén?



Perdona, pero la palabra éxito está bien escrita. Eres tú el que la has 
escrito mal. ¿Desde cuando lleva H?



--
www.LinuxCounter.net

Registered user #369215




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

2015-10-04 Por tema Adrià
On Sun, Oct 04, 2015 at 12:21:44PM +0200, Santiago Vila wrote:
> On Sun, Oct 04, 2015 at 12:00:12AM -0600, Carlos Carcamo wrote:
> > 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.
> 
> Pues para empezar podrías evitar poner enlaces a private_images de
> forma que ningún buscador lo encuentre a partir de la página inicial
> de tu sitio.

Se me ocurre para "medio solucionarlo" poner un robots.txt.

Otra opción, usar/integrar algun software de alguien que ya se haya
encontrado con esto en el pasado, y así no tener que reinventar la
rueda. Por ejemplo, Gallery [0].


[0] http://galleryproject.org/
-- 
Adrià García-Alzórriz
0x09494C14
I expect that noone has objections.  However, if I'd only add these entries
to the list because `I think it's the right thing to do', I'd get a lot of
flames afterwards :)
-- Christian Schwarz


signature.asc
Description: PGP signature


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

2015-10-04 Por tema Santiago Vila
On Sun, Oct 04, 2015 at 12:00:12AM -0600, Carlos Carcamo wrote:
> 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.

Pues para empezar podrías evitar poner enlaces a private_images de
forma que ningún buscador lo encuentre a partir de la página inicial
de tu sitio.

> éxitos para tod@s.

héxitos para thodos.

¿Tanto trabajo cuesta escribir bien, o es que hay algún tipo de
patente de corso para que las faltas de ortografía estén mal vistas
pero otro tipo de faltas no lo estén?



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

2015-10-04 Por tema Adrià
On Sun, Oct 04, 2015 at 01:08:50PM +0200, Eduardo Rios wrote:
> El 04/10/15 a las 12:21, Santiago Vila escribió:
> 
> >>éxitos para tod@s.
> >
> >héxitos para thodos.
> >
> >¿Tanto trabajo cuesta escribir bien, o es que hay algún tipo de
> >patente de corso para que las faltas de ortografía estén mal vistas
> >pero otro tipo de faltas no lo estén?
> 
> 
> Perdona, pero la palabra éxito está bien escrita. Eres tú el que la has
> escrito mal. ¿Desde cuando lleva H?
> 

Creo que a Santiago se le ha olvidado un cartel de «Sarcasmo» [0] y
que hacía referencia a tu «tod@s».

[0]
http://deathlife97.deviantart.com/art/Sarcasm-The-Big-Bang-Theory-291050016
-- 
Adrià García-Alzórriz
0x09494C14
You can't cross a large chasm in two small jumps.


signature.asc
Description: PGP signature


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

2015-10-04 Por tema Carlos Carcamo
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.

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


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

2015-10-04 Por tema Javier Silva
El 4/10/2015 8:01, "Carlos Carcamo"  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.


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

2015-10-04 Por tema Camaleón
El Sun, 04 Oct 2015 00:00:12 -0600, Carlos Carcamo escribió:

> Saludos lista,

Ese html... y no creo que sea un OT.
 
> 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.

(...)

Puedes hacer varias cosas:

1/ Configurar las páginas de carga inicial (DirectoryIndex)
2/ No permitir el listado de archivos (Options -Indexes)

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

(...)

Por aquí recomiendan otro sistema que es banear a wget y curl pero me 
parece un poco radical:

Automatic download a site with *wget*: how to prevent?
http://serverfault.com/questions/305033/automatic-download-a-site-with-wget-how-to-prevent

Saludos,

-- 
Camaleón



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

2015-10-04 Por tema Carlos Carcamo
El 4 de octubre de 2015, 11:19 a. m., Javier Silva
 escribió:
>
> El 4/10/2015 8:01, "Carlos Carcamo"  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"