¿Qué es el hotlinking? ¿Cómo evitar que me roben mi contenido?

El hotlinking es una técnica que usan muchos propietarios de páginas webs para nutrirse del contenido o trabajo de otros a coste 0 (cero). Es decir, cuando alguien en su web inserta una imagen y la dirección de la imagen es de tu web, está aprovechándose de tu imagen albergada en tu servidor. Sin esfuerzo. Gratis. Encima esta técnica hotlinking produce un consumo de recursos en tu servidor puesto que se trata de una petición más a tu servidor.

¿Cómo funciona el hotlinking?

Como te decía antes, el hotlinking es una técnica que consiste en usar las imágenes de un servidor distinto al tuyo en tu web, con la ventaja de no consumir peticiones de tu servidor. Cuando tu creas una infografía super chula para la entrada de tu blog la pueden copiar o replicar en webs totalmente ajenas de la tuya sabiendo la URL de tu web. Esto sería un ejemplo gráfico:

hotlinking que es y como funciona

Como se puede ver en la infografía de arriba, el atacante hace la petición a la imagen que alberga el servidor de origen, este la procesa y la entrega. Pongo un ejemplo de hotlinking:

  1. Mi web, optimizarwordpress.com quiere hacer uso de la imagen del logo del servidor de  Google (URLhttps://www.google.es/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png)
  2. Inserto una imagen en optimizarwordpress.com en un post/página como esta con esa la URL de esa imagen.
  3. El servidor de Google procesa esa petición de mi parte y me deja integrarla en mi servidor.
  4. Resultado:

ejemplo de hotlinking de logo de Google

Ese logotipo de Google lo estoy cargando desde las dependencias del servidor de Google. Cada vez que alguien lea este artículo desde su ordenador o móvil, la imagen del logo de Google no supondrá casi ningún esfuerzo a mi servidor en procesar esa imagen ya que no está en mi servidor sino en el de Google. Es Google quien está soportando el peso integro de la petición de la carga de la imagen.

Imagina que hacen eso contigo, desde cientos de servidores. Tu servidor está respondiendo a cada petición. No sé en tu caso, pero soportar esa cantidad de peticiones en mi servidor como las que puede recibir Google no es posible. Por eso tienes que luchar contra esas peticiones de ladrones de contenido que se aprovechan de nuestro trabajo muy currado. Por eso te voy a enseñar a como mostrar una imagen al atacante en vez de la original donde podemos dejarle un mensaje al “atacante” 😉

Como evitar uso del hotlinkg

Evitar hotlinking con WordPress

Lamentablemente no existe ningún plugin en la actualidad que funcione de forma correcta para ayudarnos a evitar el hotlinking. Deberás usar métodos alternativos como los que verás a continuación y son altamente efectivos. Los plugins que existen hoy para esto han quedado obsoletos y los que funcionan están reportando muchos problemas e incompatibilidades.

Evitar hotlinking con un CDN

Esta forma es muy fácil de hacer si tú tienes configurado un CDN en tu web. Por ejemplo, si tienes CloudFlare instalado como CDN para tu web, con solo marcar una opción desde su panel ya estarás protegido del hotlinking. Aquí ya hablé de como configurar un CDN con CloudFlare en WordPress. Una vez configurado el CDN, en este caso CloudFlare (No todos pueden eliminar el hotlinking), busca la sección de “Scrape Shield“:

Evitar hotlinking con CloudFlare muy sencillo

Una vez dentro haz un poco de scroll y busca la opción de “Hotlink Protection” y marca la opción para que se active la protección contra hotlinking:

Evitar hotlinking con CloudFlare hot linking

Y con eso tu web está protegida con la ayuda del CDN de CloudFlare

Evitar hotlinking con .htaccess en Apache

Otra forma de contrarrestar la petición de elementos desde servidores externos es crear unas reglas en el .htaccess de tu servidor Apache (Trabajo con .htaccess puesto que es el tipo de servidor más usado para montar WordPress. Si tu proveedor usa otro tipo de servidor web, pregúntale como hacer o evitar hotlinking). Accede a tu servidor mediante FTP, descarga el archivo .htaccess actual, ábrelo y coloca estas lineas al principio de todo:

Si quieres simplemente parar el abuso del hotlinking

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)optimizarwordpress.com/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F]

Si quieres mostrar una imagen tuya con un mensaje contra el hotlinking

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)optimizarwordpress.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ https://www.optimizarwordpress.com/notemolestes.gif [R,L]

Con el primer código simplemente bloqueas el uso de hotlinking, con el segundo además de bloquearlo podemos mostrar una imagen en vez de la que intentaba cargar en su web. En vez de mostrar la que intentaba copiar, se mostrará: https://www.optimizarwordpress.com/notemolestes.gif  Por lo que ahora podrás mostrar en sus artículos información sobre tu web, mandarle un mensaje o lo que tu quieras hacer uso de ello. Incluso puedes conseguir publicidad gratis, esa imagen puede hablar sobre tu web.

Leer más sobre servidores Apache

Evitar hotlinking con .htaccess en Nginx

Lo mismo que hicimos en Apache podemos hacerlo en Nginx. Para ello abre el archivo de configuración de Nginx y agrega el siguiente código:

location ~ .(gif|png|jpeg|jpg|svg)$ {
     valid_referers none blocked permitoestedominio.com *.permitosubdominiosdeestedominio.com;
     if ($invalid_referer) {
        return   403;
    }
}

Con esta sentencia estamos tirando abajo la petición de los servidores ajemos que quieran incrustar tu imagen en sus servidores. Podemos declarar excepciones de dominios como con el ejemplo que te he puesto arriba.

Leer más sobre servidores Nginx

Evitar hotlinking de forma manual

Puedes instalar plugins en WordPress que:

  1. Puedan des-habilitar el uso del click derecho del ratón. Es una solución temporal pues esta restricción se puede eliminar viendo el código fuente de la web a robar la imagen.
  2. Cambien o renombren el nombre de la imagen cada X tiempo. Otra solución temporal puesto que los atacantes cogerán el nombre de tu imagen siempre que quieran.

Evitar hotlinking con cPanel

Existe una herramienta integrada en cPanel que hace la misma función que los anteriores ejemplos solo que los hace a nivel servidor. Quizá si hacemos esta técnica a través de cPanel el tiempo de ejecución de esta regla sea inferior que si se hiciera de las formas anteriores. Para activar la seguridad contra el hotlinking en cPanel accede a la página principal del panel y busca la opción de: “Protección de vínculo directo” o busca “Protección de Hotlink”.

Una vez dentro de la sección tienes la posibilidad de elegir que dominios quedan excluidos de la regla y a que formatos vas a aplicar la regla:

Evitar hotlinking con cpanel

Tras configurar que dominios permites que puedan hacer uso del hotlinking, pulsa en “Activar” en la parte superior de la sección para que se guarden los cambios. ¡Y ya estaría! Recuerda que no todos los proveedores de alojamiento web tienes habilitada esta opción. Tendrás que elegir que hosting comprar.