Comunidad de diseño web y desarrollo en internet online

Evitar hotlinking al estilo Cristalab

Porque sabemos joven claber que con evitar que te roben el ancho de banda no es suficiente y tú solo ansías venganza, este tutorial es para ti.

Finalidad del tutorial
Vengarnos y putear a todo aquel que intente robarnos nuestra preciada colección de fotos triple equis alojada en nuestro servidor, mostrando una imagen de reemplazo o directamente no mostrando nada.

Requisitos


  • Un servidor con soporte para mod_rewrite
  • Una imagen que moleste (opcional, pero para un par de ideas, busca "goatse" en Google)
  • Un poco de cerebro, al menos el suficiente para saber cambiar donde ponga tusitio.com por tu verdadero dominio
  • Un par de minutos


¿Qué es el HotLinking?
HotLinking es enlazar recursos, principalmente imágenes pero cualquier otro tipo de fichero es aceptado, directamente desde la web original y mostrarlo en la nuestra, con el consecuente ahorro en ancho de banda. Algo así es lo que hace Cristalab con nuestros avatares (que cada uno tiene en su servidor), el avatar se muestra en Cristalab.com, pero realmente está en nuestro servidor, consumiéndonos ancho de banda a nosotros (¡Te demandaré por ello Freddie!). Muchos paneles de control tienen la opción de permitir o no el hotlinking, unos de una forma más completa y personalizable y otros cierran las puertas sistemáticamente a todo (incluso a nuestra querida Cristalab).

Para todos ellos, y para tí que te lo mereces, un tutorial paso a paso (¡juas!) de como evitar y personalizar el hotlinking.

Nuestro amigo el .htaccess
Ya hablamos del .htaccess aquí, así que leedlo o simplemente quedaros con la idea de que es un pequeño archivo de texto que permite configurar muchos aspectos de tu web. En cualquier caso, lo usaremos, junto con el módulo mod_rewrite para nuestros propósitos.

Modo de empleo
Variante A : Enemigos específicos
Esta es quizás la variante más divertida porque te permite darle a cada uno lo que se merece, sin embargo es más dificil detectar cuando ocurre, ya que primero tenemos que tener conocimiento de que alguien nos está robando una imagen y luego actuar en consecuencia. En ese caso tendremos un .htaccess de la siguiente forma (puede variar si ya tenemos algo en el archivo) :

Código :


RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?tuenemigo\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?otroenemigo\.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?cuantosenemigos\.es/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nomelinkees.jpg [L]



Evidentemente podemos hacer varios grupos y a cada uno mostrarle una imagen diferente (MWAHAHAHA!)

Variante B : Mierda para todos salvo para los amigos
Esta opción es la versión más despreocupada, ya que en principio bloqueamos a todos los que nos intenten robar una imagen y sólo dejamos a aquellos que nos interese permitirle el acceso.

Código :

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?tusitio\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?cristalab\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?theninjabunny\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nomelinkees.jpg [L]



El código es MUY parecido al anterior, salvo por el ! de antes de las url's y después de {HTTP_REFERER}, que como se están imaginando significa negación y por tanto lo que hace es redirigir cualquier llamada a una imagen (salvo de esos sitios) a images/nomelinkees.jpg.

Código paso a paso

Código :

RewriteEngine On

Iniciamos el "rewrite engine", sólo es necesario hacerlo una vez al inicio del .htaccess

Código :

RewriteCond %{HTTP_REFERER} !^http://(.+\.)?tusitio\.com/ [NC]

Le decimos qué sitios están exentos y pueden enlazarnos (parte clave el !)

Código :

RewriteCond %{HTTP_REFERER} ^http://(.+\.)?enemigo\.com/ [NC]

Le decimos que sitios deben ser casigados (parte clave la ausencia de !)

Código :

RewriteCond %{HTTP_REFERER} !^$

Con esto permitimos el enlace a todos los que no tengan un http referer (o encabezamiento en blanco), que pueden ser programas que enlacen directamente con nuestros recursos.

Código :

RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nomelinkees.jpg [L]

Con (jpe?g|gif|bmp|png) le indicamos el tipo de ficheros, podemos añadir mp3, wav, doc, odt, pdf, los que queramos pero si enlazan un archivo de audio esperarán un audio y no una imagen ¡Podemos grabar un mp3 y putearles por voz!

NOTA:
Al proporcionarles un archivo alternativo (images/nomelinkees.jpg) les estamos mostrando una imagen de nuestro servidor por lo que seguimos consumiendo nuestro ancho de banda pero obtendríamos unos minutos de diversión irreemplazables. Si quisiéramos no mostrar nada (y ahorrar ancho de banda, pero divertirnos menos) sólo tendríamos que usar esta línea en lugar de la última :

Código :


RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [L]



Nótese el -

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate