Los peligros del hot-linking

Autor: Armonth | El jueves 20 de abril del 2006 @ 03:18.

Nunca me había parado a pensar las implicaciones que puede llegar a tener el hotlinking (enlazar imágenes u otros ficheros que están en A desde un sitio B de tal forma que cada visita a este último consume ancho de banda de A). Siempre lo había visto como una molestia, un "pequeño abuso" que hacen muchos usuarios de nuestro(s) sitio(s) si decidimos no tomar medidas.

No por nada con los planes que me ofrece mi hosting no me preocupo demasiado ya que mi sitio no llega a gastar -- de momento -- ni una milésima parte del ancho de banda disponible al mes. Pero acabo de leer en el blog de desarrollo de Frozen Layer Network (enlace muerto) (una de las mayores comunidades de Anime en español) un dato que me ha dejado de piedra:

Ahora mismo el servidor web se divide en dos servicios:

  • Apache2: paginas dinámicas.
  • Lighttpd: imágenes, torrents, css, etc.

El caso es que hasta hace unos minutos el lighttpd estaba tirando a 970Kbytes/S. Casi un mega al segundo maximizando la conexión de 10Mbit que tenemos.

He cambiado la configuración para bloquear el hot-linking y ha bajado a unos 500Kbytes/S que esta bastante mejor.

Sencillamente brutal: 470KB/s ahorrados sólo por evitar el hot-linking. Eso supone casi 1.7 Terabytes/hora. Con 970KB/segundo de tráfico en tres horas exactas podría dejarme a mí al borde de quedarme sin servicio }:|.

La solución al hotlinking para Apache: htaccess

En mi opinión el hotlinking se debe neutralizar cuando es un problema que afecta al funcionamiento del sitio dejándote sin ancho de banda necesario y no antes, como siempre un fichero .htaccess nos servirá, existen dos códigos de sobras conocidos:

# Medida anti-hotlinking a las imágenes típicas (gif, jpg, png, bmp).
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?sitio.com(/)?.*$ [NC]
RewriteRule .*.(gif|jpg|png|bmp)$ - [F,NC]

# Lo mismo que el anterior, pero cambiando la imagen por "nohotlink.jpg" por si queremos
# informar de la medida aplicada. Aún así sigue gastando "algo".
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?sitio.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .(gif|jpg|png|bmp)$ nohotlink.jpg [L]

Por cierto aquí tenéis una utilidad llamada Hotlink Checker para saber si se puede realizar hotlinking en una imagen en particular.

Comentarios