miércoles, 17 de septiembre de 2008

Evitar Hotlink mediante htaccess

¿Qué es Htaccess?

de glosario informático:

es un archivo de configuración en un servidor Web, y contiene comandos en el lenguaje del servidor que le indican cómo debe comportarse en ciertas situaciones. Alguno de los usos más comunes de un archivo htaccess son la restricción del acceso a determinados archivos o carpetas en Internet (o en una intranet) mediante el uso de contraseñas. Adicionamente, los htaccess se usan para redirigir usuarios automáticamente, para bloquear o permitir el acceso al servidor a ciertas direcciones de IP, y para llamar páginas de error customizadas en lugar de las páginas de error 404 standard del servidor. Los servidores Web Apache, y otros servidores que cumplimentan las normas del NCSA pueden usar htaccess.

 

Como estos días me di cuenta que estaba sufriendo el tan odiado Hotlink me he puesto a averiguar algo mas sobre el tema y ver que podía hacer para evitarlo, antes tenía 100000Gb de transferencia, ahora solo 30, y si no los cuido podría estar caído a mitad de mes el blog y no es lo que quiero.

Entre la infinidad de utilidades que se le puede dar a un archivo htaccess - parece mentira que un fichero de texto plano pueda hacer tantas maravillas - están las mas usadas por los que usamos WordPress que es la modificación de la estructura de los permalink, hacer redirecciones, banear comentaristas insoportables , parar el hotlink de imágenes, entre otras.

Antes de editar el htaccess a mano, he probado con plugins para -supuestamente- evitar el hotlink pero nada me sirvió, ¿por que?, ni idea, pero el asunto es que nada de eso me servía.

Voy a tratar de ir juntando varias utilidades en relación al htaccess, pero en este artículo voy a contar lo que hize yo y me fue útil para parar el hotlink ya que podría servirle a varios que estuvieron -o están como yo estuve- , como es el caso de Cecilia.

Por defecto, este era mi htaccess:

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</ifmodule>

Que solo esta configurado para que modifique las urls del tipo:
http://tengoun.com.ar/?p=1
a el formato:
http://tengoun.com.ar/nombre-del-post/categoría/mes/año/

Para evitar el hotlink de todos los sitios, o sea, que no se vea una imagen alojada en nuestro servidor en ningún lado debemos agregar esto a nuestro htaccess:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]


(reemplazar tusitio.com por la url de tu sitio)


Estas lineas de código dicen que ningún fichero del tipo gif, jpg, jpeg, png o bmp puedan visualizarse desde cualquier otro sitio.



He aquí el problema, si denegamos el acceso a las imagenes alojadas en nuestro servidor a todas las url`s los lectores desde google reader (por ejemplo) no podrán visualizarlas.Por eso, y como somos buenas personas, tenemos que hacer una lista de sitios donde se visualizarán las imagenes, en este caso, vamos a permitir el acceso solamente a google reader.

Nos debería quedar así:



RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]


 



Pueden seguir agregando Url´s a la lista blanca, aquí un ejemplo, agregando a Planetaki, bloglines y feedburner:



RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.feedburner\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/urldetufeed$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.planetaki\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]



 



Ustedes, según sus lectores seguramente sabrán mediante que lector de feed son leídosy deberían ir agregando. Para que no queden dudas de como y donde se debe agregar el código, les dejo un ejemplo de como quedaría el mío completo:



<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tusitio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.feedburner\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/urldetufeed$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.planetaki\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
</ifmodule>


 



Configurandolo así directamente no se mostrará ninguna imagen, ahora si querés mostrar una imagen a cambio de la elegida por quien hace hotlink podés hacer así:



RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ http://dominio-de-la-imagen-/no-hotlink.jpe [R,NC,L]

Nota: como los jpg no se visualizan, hay que ponerle la extensión jpe a la imagen en caso de alojarla en nuestro servidor



Ejemplo de como se ve:



taringa-hotlink



Ejemplo de como quedaría todo:



<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.feedburner\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/TengoUncomar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.planetaki\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ http://tengoun.com.ar/no-hotlink.jpe [R,NC,L]
</ifmodule>


 



Nota: no olviden reemplazar los dominios.



Por último, mi opinión es que si quieren que se muestre una imagen elegida en lugar de la “robada” obviamente la deberían alojar en un servidor que no sea al que estamos protegiendo ya que no tendría sentido y dejaríamos de lado el propósito de evitar el hotlink para disminuir el consumo de ancho de banda.Lo mas recomendable sería que no se muestre nada.


Nota de nuevo: Agradecería que si alguien no puede ver las imagenes desde su lector de feeds lo comente para así poder agregar su lector a la lista blanca ;) .



A continuación, una muestra de mi htaccess actual:



<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tengoun.com.ar/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.feedburner.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://feeds.feedburner.com/TengoUncomar$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.planetaki.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[^/.]\.bloglines\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
</ifmodule>



 



Mucho de lo que aprendí y publiqué sobre htaccess lo encontre por Perishable Press.



____________________________


Fuente : Evitar Hotlink mediante htaccess


Autor : Neri


Web : Tengo un .com.ar

No hay comentarios:

Publicar un comentario

AVISO:
Muchas gracias por considerar dejar un comentario. Te pido por favor que tengas en cuenta las siguientes pautas:
1. Evita usar lenguaje prosaico u ofensivo, y mantener siempre el respeto por todos.
2. Respeta las opiniones de los demás y no cometas el error de atacarlos de manera insultante o prosaica.
3. Si no estas de acuerdo con el tema publicado, ambos sabemos que hay forma de realizar una crítica sin ofender ni agredir.
4. También queda prohibida los enlaces de promoción o publicidad descarada.
5. Finalmente te pido que no utilices abreviaturas en tus respuestas para poder mantener una armonía en la lectura de los mensajes y una mejor comprensión de la lectura.

Y como muestra de mi gratitud por tu visita y comentario, si tienes sitio web o blog y has ingresado ese dato u OpenID, agregaré tu web o blog en mi sección Blogs de amistades y/o que me gusta visitar seguido.

En caso contrario tu comentario podría ser eliminado. Aprecio mucho que consideres esta petición de mi parte. Muchas gracias por tu comprensión.

Nota: solo los miembros de este blog pueden publicar comentarios.

El pianista que tocó y alguien escuchó

Una marmota en el barrio de Lima

Historias de una cocina

El cine que compartí