Protege tu sitio del hotlinking sin perder posicionamiento

Escrito por Carlos M. Cámara.

Cadena de hierro en blanco y negro

Proteger nuestros sitios contra el hotlinking evitará que abusen de nuestro ancho de banda, pero si no lo hacemos bien podemos perder visitantes de los buscadores de imágenes.

Gracias al artículo Aumenta las visitas recibidas por buscadores de imágenes en Joomla que nos recordaron por twitter los amigos de AyudaJoomla, pudimos ver cómo podemos utilizar los buscadores de imágenes para conseguir más visitas, pero si no tenemos cuidado, podemos caer en la trampa del hotlinking y agotar rápidamente nuestro ancho de banda.

El hotlinking es el término que se utiliza para indicar que alguién está mostrando una de las imágenes de nuestro sitio web, enlazando directamente a nuestro sitio, gastando así el ancho de banda que tengamos contratado. Esto puede llegar a ser un problema si los sitios que las enlacen tienen muchas visitas porque estarán consumiendo nuestros recursos pero no nos estarán aportando visitas por lo general.

El hotlinking se evita fácilmente añadiendo una regla de redirección a nuestro fichero .htaccess, pero si hacemos esto, los principales buscadores de imágenes dejarán de indexar nuestro sitio. Para evitar esto, tan sólo tendremos que modificar ligeramente la regla de recirección añadiendo las excepciones que necesitemos:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !midominio\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !msn\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !altavista\. [NC]
RewriteCond %{HTTP_REFERER} !ask\. [NC]
RewriteCond %{HTTP_REFERER} !archive\.org [NC]
RewriteCond %{HTTP_REFERER} !bing\. [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F,NC]

Donde en la tercera línea deberéis sustituir midominio\.com por lo que corresponda a vuestro dominio. De esta manera, los buscadores seguirán accediendo normalmente a nuestros sitios y evitaremos que otros usuarios usen nuestras imágenes directamente a través de nuestro servidor.

Mostrando un mensaje

Si disponéis de algún servicio de alojamiento de archivos con el que no tengáis problemas de ancho de banda, podéis crear una imagen que avise del hotlinking como por ejemplo esta:

Imagen para prevenir el hotlinking con el texto: Este sitio no permite el acceso directo a sus ficheros. Protección hotlinking gracias a Gnumla.com

Y sustituir la última línea por esta otra:

RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://www.gnumla.com/images/hotlinking_gnumla.png [L,NC]

Donde nuevamente deberéis sustituir la url por la que corresponda a vuestro caso.

¿Habéis tenido alguna vez un problema de hotlinking?

Este artículo ha sido editado para incluir las reglas de Feedburner y Bing.

Referencias

Documentación de Apache sobre mod_rewrite

Cómo parar el Hotlinking con htaccess

 

La imagen que ilustra el artículo es obra de burnthexevidence en deviantArt.

Sobre el autor
Carlos M. Cámara
Author: Carlos M. Cámara

Me apasiona el desarrollo web y trabajar para conseguir una web que cumpla con sus visitantes y sus propietarios y siempre estoy dispuesto a trabajar en proyectos interesantes. Mi especialidad es resolver problemas ;o).

Trabajo con Joomla! desde sus inicios y desde 2010 colaboro activamente con JEvents ayudando a otros usuarios a poder comunicar sus eventos y desarrollando partes del componente.

Contactar


Comentarios  

 
0 #1 Alejandro 25-01-2013 03:51
Estimado, sacame una duda en el final del código tambien no tendría que estar el NC después del F ósea [F,NC] te paso el que tenia yo y me dices...

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.) ?tuweb.com(/)?. *$ [NC]
RewriteRule .*.(gif|jpg|jpe g|bmp|zip|rar|m p3)$ - [F,NC]

saludos Alejandro Pascoli
Citar
 
 
0 #2 Jorge 26-01-2013 10:29
Hola,

Muy interesante el artículo.

Una pregunta que puede interesar a otros usuarios.
Tengo una web, pero...
¿Como saber si me están haciendo hotlinking?
¿Hay alguna herramienta que te dice si te están haciendo hotlinking?

Un saludo y enhorabuena por vuestro blog. ¡¡Me encanta!!
Jorge
Citar
 
 
0 #3 Carlos M. Cámara 27-01-2013 19:08
Cito a Alejandro:
Estimado, sacame una duda en el final del código tambien no tendría que estar el NC después del F ósea [F,NC]


Hola Alejandro, tienes toda la razón. Ese flag sirve para indicar al servidor que la regla no es sensible a mayúsculas. De esta forma, aunque no es común, si tenéis imágenes con la extensión en mayúsculas, también se le aplicará la norma. He modificado el artículo para reflejar esto ¡Gracias!
Citar
 
 
0 #4 Carlos M. Cámara 27-01-2013 19:19
Cito a Jorge:

¿Como saber si me están haciendo hotlinking?


Hola Jorge,
habitualmente esto sale reflejado en las estádísticas de acceso de tu servidor. Lo suelo mirar en el programa AwStats que viene con CPanel, pero en función de tu servidor, tendrá un visor de estadísticas u otro.
Citar
 
 
0 #5 David 09-05-2013 10:19
Hola:

Me gustaria saber que excepcion habria que añadir para que carguen las fotos en feeds.feedburner.com

Gracias!
Citar
 
 
0 #6 David 09-05-2013 10:24
Para el buscador Bing tambien seria necesario?????
Citar
 
 
0 #7 Carlos M. Cámara 14-05-2013 09:50
Hola David,
he añadido las reglas que servirían para feedburner y bing. Espero que te sirvan. Un saludo.
Citar
 
 
0 #8 Marta Font 22-12-2013 19:27
Hola Isidri, leyendo tu blog...super interesante. me ha interesado especialmente el hotlinking. Dime una cosa y coo principiante que soy. El código que pegaríamos en .htaccess donde exactamnet, detras de este texto?

## End - Rewrite rules to block out some common exploits.
y ahora : RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !midominio\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !msn\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !altavista\. [NC]
RewriteCond %{HTTP_REFERER} !ask\. [NC]
RewriteCond %{HTTP_REFERER} !archive\.org [NC]
RewriteCond %{HTTP_REFERER} !bing\. [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com /.*$ [NC]
RewriteRule \.(gif|jpg|jpeg |bmp|zip|rar|mp 3|flv|swf|xml|p hp|png|css|pdf) $ - [F,NC]
Citar
 
 
0 #9 Carlos M. Cámara 24-12-2013 11:25
Hola Marta,
efectivamente ese es un buen sitio para situar estas reglas. Fíjate que primero se ejecutan algunas reglas para evitar ataques comunes y después situarías estas por lo que primero se filtrarían los posibles atacantes y después se aplicarían estas reglas que evitan el hotlinking.
Citar
 

Escribir un comentario

REGLAS APLICABLES A LOS MENSAJES
  • Los comentarios serán publicados una vez que hayan sido comprobados y aprobados por un administrador del sitio.
  • No están permitidos comentarios injuriosos o amenazadores.
  • No está permitido hacer spam.
  • Los enlaces que no vayan a sitios oficiales Joomla! o que no estén relacionados con el mensaje serán editados.