Por hotlinking se entiende la práctica de mostrar imágenes de otros dominios en uno dado, sin pedir permiso ni nada.
Es como si nuestro vecino de enfrente tuviera un cuadro de Rubens en su casa y nosotros colocáramos un espejo de forma que el cuadro se viera en nuestra casa.
Esto en principio no tiene nada de malo. Ahora bien, imaginad que cada vez que alguien viera el cuadro en el espejo de nuestra casa, nuestro vecino tuviera que pagar unos céntimos de euro. Pues entonces ya estaríamos obrando mal. Peor aún es si nosotros cobramos a los que nos visiten para ver el cuadro. A nuestro vecino le está costando dinero la broma y a nosotros encima nos reporta un beneficio.
Lo cierto es que hoy en día el ancho de banda es relativamente barato y podemos asumir que algún aprovechado muestre imágenes nuestras sin poner un link ni nada. Lo que no está bien es que ese listillo a veces aproveche para ahorrarse unos céntimos y de paso muestre información que nos hemos currado nosotros. En tal caso uno no está para poner la otra mejilla.
Ese listillo tiene que pagar por los pecados cometidos.
Impedir el hotlinking. Si somos muy bordes.
El método más radical es darle una buena colleja al ladrón de imágenes y de ancho de banda. Y qué mejor forma que con un cambiazo.
Si tenemos la imagen “spears.jpg” y alguien está tirando de nuestro hosting para alojarla, podemos crear una segunda imagen, copia de la primera: “spears2.jpg” en nuestro hosting.
Renombramos el sitio donde tuviéramos referenciada la imagen para que apunte a la copia. En nuestra página todo se ve igual que siempre. Ahora bien. Resulta que hay una imagen “spears.jpg” que sólo se usa mediante hotlinking. Eso no está bien. ¿Por qué no cambiarla?
Y puestos a cambiarla, podemos usar una que resulte desagradable. Las sugerencias, a gusto del consumidor:
Impedir el hotlinking. Si somos moderadamente bordes.
Si el asunto sólo nos molesta un poco, podemos crear textos de aviso en la imagen reemplazada indicando que alguien es un ladrón de ancho de banda y un listillo.
Reemplazamos la imagen por otra que diga “Soy un ladrón un hijo de puta y la tengo pequeña y además me gusta hacer hotlinking”. O mensajes que desalienten a los usuarios que visiten a ese dominio “Ojalá te mueras”, “Tu mujer te engaña”. Os dejo unos cuantos ejemplos para los que no os queráis calentar la cabeza:





Podéis usar estas imágenes libremente…pero cuidadito con hacerme hotlinking.
Para mostrar imágenes realmente divertidas, el ejemplo de las que emplea el humorista gráfico J.R. Mora es muy bueno. No dejéis de visitar su galería de imágenes anti-hotlinking.
Impedir el hotlinking. Si somos gente pacífica.
Si queremos evitar el problema de raíz, sin malos rollos, sin tener que renombrar imágenes, lo que hay que hacer es modificar el fichero .htaccess e incluir las siguientes líneas:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png|jpg)$ /images/nohotlink.jpe [L]
De esta forma cuando alguien realice una petición desde otro dominio, obtendrá una imagen diferente a la vuestra. La imagen alternativa en particular será la indicada en la ruta “/images/nohotlink.jpe”.
Hay que reemplazar la parte “mysite\.com/” de la segunda línea con vuestro dominio en particular (por ejemplo si eres el dueño de fotos33.info tendrías que poner fotos\.info/
También tenéis que reemplazar la cuarta línea con la ruta a una imagen de vuestro servidor, por imagen que deseéis servir en lugar de cualquier otra.
Esas cuatro líneas lo que dicen es:
“Prepárate para cambiar las cosas
Si el que pide algo no es alguien dentro de mi dominio
le vamos a traer otra cosa
si lo que pide es una imagen, le servimos siempre la misma imagen: nohotlink.jpe”
Fijaros en la extensión: “jpe” es una extraña para evitar que interfiera con las anteriores o se cree un bucle sin fin. Podéis crear cualquier imagen de tipo .jpg y luego renombrarla a .jpe.
Este método es mucho más eficaz que los anteriores, pues evita tener que calentarnos la cabeza. Cualquier petición desde otro dominio será rechazada y se le mostrará otra imagen. Fin.
Ahora bien, en sitios como este blog, las imágenes serán también bloqueadas para los lectores de feeds o RSS. Si alguien lee este post desde un lector de noticias, y tuviera activado el filtro antiprotección, recibiría la misma imagen que hayamos elegido para evitar el hotlinking. Aunque hay diversos métodos para tratar de solucionar esto, no parece que ninguno sea totalmente eficaz.
También estaremos dañando a Google en su buscador de imágenes, que es otro de los que hacen hotlinking tolerado (por nuestro propio interés). Así que las imágenes en cierto modo no existirán salvo que alguien entre en nuestra página a verlas.
Por eso, es recomendable mostrar mensajes blandos en la imagen que elijamos para evitar el hotlinking. Simplemente mostrar un link a la página de inicio del dominio.
Hay gente que no es consciente del año que causa al realizar hotlinking. O que cree que Internet es 100% gratis. O que no sabe cómo alojar una imagen. Hay quienes roban sin saberlo y no hay que insultarlos o mostrarles barbaridades. Según como nos pille.
Impedir el hotlinking. Si somos profesionales.
Si queremos dar un tratamiento realmente profesional a la prevención contra el robo de imágenes, el mejor consejo de todos es el que dan desde A List Apart. Muestran una estrategia combinada que mantiene las virtudes de la anterior, y alguna más, además de evitar los efectos indicados.
Hay que hacer dos cosas. Por un lado crear un fichero .php al que llamaremos showpic.php y que guardamos en nuestro servidor, en el root, con el siguiente código:
<?php
header("Content-type: text/html");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache,
must-revalidate");
header("Cache-Control: post-check=0, pre-check=0",
false);
header("Pragma: no-cache");
$pic = strip_tags( $_GET['pic'] );
if ( ! $pic ) {
die("No picture specified.");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title><?php echo($pic); ?></title>
<meta
http-equiv="Content-Type"
content="text/html; charset=iso-8859-1"
>
</head>
<body>
<p>
<img src="/<?php echo($pic); ?>" alt="Image">
</p>
<p>
Image from
<a href="http://www.tupaginaweb.com/">
Tu pagina web</a>.
</p>
</body>
</html>
Ahora lo que haremos será que en lugar de servir una imagen alternativa, serviremos esta página php cada vez que un visitante no autorizado nos solicite una imagen. De esta forma el gasto en ancho de banda será de casi 0 porque no tendremos que mostrar imágenes sino texto plano. Además, podemos servirnos un link a nuestra página lo cual nunca está de más si queremos darnos un achuchón al pagerank. Y si somos más ladrones que el que nos robó la imagen, le podemos colocar una decena de links a nuestra página.
Para indicar la redirección, tenemos que incluir el siguiente código en el htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !yoursite\.com [NC]
RewriteCond %{HTTP_REFERER} !friendlysite\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteRule (.*) /showpic.php?pic=$1
Esta vez estamos siendo más benévelos las líneas como:
RewriteCond %{HTTP_REFERER} !google\. [NC]
Indican excepciones. Si el referrer es Google, pues no nos portamos mal con él.
Esta otra línea:
RewriteCond %{HTTP_REFERER} !^$
Dice que si no hay referrer, pues por si acaso también mostramos la imagen auténtica.
Y la redirección al fichero php de más arriba es esta:
RewriteRule (.*) /showpic.php?pic=$1
Fuentes:
He consultado diversas fuentes, la más interesante de todas es esta y es de donde he tomado las cuatro líneas fundamentales para el .htaccess.
Aquí hay un útil generador de esas cuatro líneas de código para el .htaccess. Sólo tenéis que indicarle vuestro dominio y las extensiones a bloquear.
Para la solución más eficaz, la página de A List Apart.