Evitando el hotlinking

Hace tiempo que se viene produciendo en barbacana una práctica poco deseable: el hotlink o hotlinking (mi inglés no me permite determinar cual es el más correcto).

La idea es la siguiente. Yo tengo una página web o lo que se denomina ahora un «espacio». Me interesa hablar del amor y como hablar no solo basta, voy al buscador de imagenes de google y busco imágenes relacionadas con el amor. Veo una que me interese y en vez de copiarla en mi espacio, lo que hago es directamente engancharla del sujeto que la tiene ya actualmente. Es decir, aunque la página es suya la foto que están viendo es la tuya.

Y ¿qué más da que se haga eso?

  • Consumo de ancho de banda.

    En todo caso, las empresas que dan alojamiento web ponen un límite de numero de bytes que puedes suministrar en tu página. (digamos que los bytes son unidades de información). Cuanta más compleja es una información más bytes consumes para verlas. Así un texto consume muy poco del orden de miles de bytes, una foto del orden de varios cientos de miles de bytes y y una canción o un video supera un millón de bytes.

    El hotlinking significa que alguien está consumiendo tus bytes para el beneficio de su página web. En caso de superar tu límite la empresa de alojamiento cierra tu sitio (y no el del ladrón de bytes) o te obliga a pagar más dinero para subir dicho límite

  • Uso del servidor.

    Los servidores tienen recursos limitados. Es decir, tienen capacidad para suministrar X páginas o imágenes por segundo, minuto u hora. Lo que significa, que son capaces de satisfacer a un número finito de usuarios. El hotlinking suma de golpe todos los usuarios del sitio que enlaza en el servidor que es enlazado.

    Pongamos un sitio que soporta 100 usuarios. Si alguien tiene un colectivo de 1000 usuarios y hace hotlinking al anterior sitio de 100 usuarios, consigue sobrecargar instantáneamente dicho sitio con 1100 usuarios.

    De nuevo, el que hace el hotlink no sufre inconvenientes pero el enlazado tendrá que contratar/comprar servidores más capaces sólo para mantener el mismo nivel de servicio sobre sus usuarios reales.

  • Falta de control sobre el contenido enlazado.

    El proceso de enlazado es un sistema de otorgar un trozo de tu web a la persona que enlazas. No tienes control sobre el contenido enlazado.

    Hay gente que tiene el dudoso gusto de sustituir los contenidos enlazados por imagenes altamente ofensivas: tales como imagenes con escenas de sexo duro, de accidentes o con mensajes muy insultantes.

    El que enlaza no puede nunca estar seguro de que algo así no le pueda pasar.

¿Por qué se produce esta práctica?

  • Desconocimiento

    Muchos de los que practican el hotlinking, tienen sus páginas web en servidores que dan alojamiento gratuito. Supongo que pensarán que como a ellos no les cuesta dinero, a los demás tampoco.

  • Desconocimiento 2

    En muchos casos, las páginas se realizan con algún tipo de gestor de contenidos que facilita el hecho de enlazar cosas ajenas. Y el sistema de copiar el contenido a tu propia web está o más oculto o es más dificil de hacer o simplemente no está permitido.

  • Querer ahorrar su propio ancho de banda...

    ...a costa del de los demás.

Y ¿cómo se soluciona esto?

Lo cierto y verdad es que tiene solución dificil. Tanto quizás como intentar poner puertas al campo.

Lo primero a tener en cuenta es que es imposible impedir que tus contenidos publicados se copien. Lo máximo que se puede lograr es dificultar mucho la copia. El que quiera evitar a toda costa que le quiten o copien cosas lo mejor que puede hacer es no publicarlo.

Una de las medidas más sencillas contra el hotlinking es examinar el referrer (tambien llamado referer). Cuando un navegador solicita una parte de una página, digamos una imagen, le pasa una serie de información adicional que permite personalizar la respuesta. Dentro de esta información se suministra el referrer que indica desde qué página se solicita la información dada. Así que el proceso consiste en comparar dicho referrer con el nombre de la web propia; si coinciden dejamos ver el contenido y si no coinciden (es un enlace directo externo) no se permite ver dicha información.

Lamentablemente, esto no funciona siempre porque hay navegadores que no dan información sobre el referrer (puede ser a posta o por limitaciones específicas de ese navegador). Sistemas de control más exaustivos podrían excluir a usuarios legítimos de nuestro servicio (por ejemplo lectores de rss o bot buscadores) y sistemas más laxos permitirán que ciertos usuarios de las páginas que hacen hotlinking puedan seguir viendo la información enlazada.

Y ¿cual es la política de Barbacana?

Durante mucho tiempo hemos sufrido en silencio estos ataques de hotlinking. Hay muchas webs que ofrecen recetas para configurar apache (el servidor que usamos para distribuir las páginas web) de forma que examine los citados referrers pero no terminaba de funcionar. Apache es un programa complejo con muchas variables que interaccionan entre sí y algo había que ejercía un efecto secundario indeseable y que no evitaba el hotlinking.

Como primera medida desactivé el módulo de imágenes, sacrificando a los usuarios legítimos, para ver si los «hotlinkeadores» se daban cuenta de que la cosa no funcionaba y evitaban el hotlink; se vé que no.

Hoy he conseguido finalmente activar el filtro que sustituye automáticamente cualquier referencia a una imagen efectuada desde fuera de barbacana por esta imagen.

Sigue consumiendome ancho de banda pero al menos es una imagen «instructiva».

Detalles técnicos

Dado la aparente dificultad que he tenido en encontrar esta información, voy a añadir ahora algunos detalles técnicos para aquel que se encuentre en la misma situación que yo y llegue gracias a algún buscador. Personal no técnico puede abandonar aquí la lectura.

El secreto está en el mod_rewrite (ModRewrite) de apache. Eso lo dicen en todas las recetas que hay por ahí.

En mi caso el problema era que Drupal ya se encarga de modificar bastante la anatomía de la url. Dado que yo hacía la comprobación del hotlinking tras los cambios de drupal no encontraba las cosas tal y como yo suponía que estaban.

Si, ya se que podría haberme dado cuenta antes. O al menos sospecharlo.

Para investigar el problema están dos instrucciones o comandos que no he visto mencionada en ninguna receta (esto de copiar y pegar de sitios sin entender que estás haciendo suele ser un mal negocio). La primera es RewriteLog que escribe en un fichero (ha de tener permisos de escritura del usuario que ejecuta Apache) que informa de todos los pasos de reescritura de las url efectuadas y la segunda RewriteLogLevel sirve para dar el nivel de detalle del Log. el mínimo es 0 (que no efectua ninguna escritura al log) y el máximo es 9.

No es recomendable superar el nivel 2 en uso normal pero el nivel 9 es ciertamente una ayuda para ver en que punto exacto se atranca nuestro filtro.

Cerrando ya, estos parámetros solo pueden ser definidos 1 vez y no está permitido hacerlo en el fichero .htaccess, sino que lo ha de estar en la configuración general (httpd.conf creo) o del sitio en cuestión. Lo que requiere tener acceso a la configuración del servidor.

(Una vez arreglado el problema, he comentado las lineas correspondientes al log).

Dos indicaciones más, para que apache releyese la configuración del site he tenido que reiniciarlo (no es necesario en caso de modificar algún parámetro de .htaccess). Completando un poco la historia (y para que google los indexe), los comandos de reescritura de url son RewriteCond y RewriteRule.

Y todo esto está explicado en la página de referencia de ModRewrite y en las guias que allí se enlazan.

Opciones de visualización de comentarios

Seleccione su manera preferida de mostrar los comentarios y haga click en 'Guardar opciones' para activar sus cambios.

¡Funciona!

Es curioso, uno de mis mayores «robadores» de ancho de banda (y en solo 2 días) se ha dado cuenta que no es una buena acción hacer hotlinking. :-)

(dejemoslo en que ha visto que se ha cambiado una preciosa fotografía por una imagen horrenda con un anuncio). Da igual, el resultado es que ya no me hace más enlace directo.

imagen

jamarier,

Que imagen o imagenes te usufructuaban via hotlinking?

Salut,
Sinner

Pues, curiosamente eran dos

Pues, curiosamente eran dos y las dos las tomé de internet:

  • Un tomate. Incluido en diversas situaciones de lo más variadas.
  • Un motivo sobre San Valentín. Al parecer la página de la que la tome (y que cito respetuosamente) fue desmontada hace tiempo, así que mi copia parece que es la única.

En mi caso, el efecto libertonia ha sido muy beneficioso. Al aparecer en cada comentario mio en libertonia un enlace a mi web y tener libertonia alto pagerank, funciona como una granja de enlaces y dispara mi posición en google (y google image por tanto). No se en tu tierra pero por aquí si escribes "revista hola" y miras la primera imagen sale una boda de un tal Pablo y Natalia (y un tipo muy elegante en la esquina inferior izquierda).