Prevenir hotlinking de manera más rápida y efectiva

Hotlinking es una palabra muy conocida para desarrolladores web, pero no tanto para bloggers que no tienen un amplio conocimento de la materia. En síntesis, el hotlinking se produce cuando un sitio agrega (por ejemplo) imágenes de nuestra página. La consecuencia de esto es muy obvia y se desprende enseguida: consumo de ancho de banda.

Son muchísimos los sitios que hacen hotlinking, sobre todo los foros y sitios corporativos. En este artículo les explicaré uno de los métodos que mejor resultado me ha dado para evitar que sitios externos puedan agregar imágenes alojadas en mi host, utilizando el archivo .htaccess.

Para ello simplemente debemos modificar el archivo (o crear si no lo tenemos) .htaccess, agregando lo siguiente:


RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|png)$ - [F]

Con ésto ningún sitio ajeno al nuestro podrá “leer” las imágenes JPG, JPEG, GIF y PNG (los formatos más comunes utilizados en la web). Si lo intentan, recibirán un error 403, Forbidden.

Y si por ejemplo deseamos que para todos los sitios que tienen imágenes nuestras en sus blogs, en vez de aparecer ese error aparezca una imagen definida por nosotros, deberíamos poner:


RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|png)$ imagenes/no-hotlink.jpg [L]

Claro está, el “imagenes/no-hotlink.jpg” debe reemplazarse por la dirección de la imagen que queremos que aparezca cuando alguien intente mostrar cualquier imagen de nuestro sitio.

Como ven, el archivo .htaccess tiene muchas funcionalidades; ésta, es sólo una.

Para más información de hotlinking y .htaccess, pueden ir a la wiki de DreamHost.