Como evitar el hotlinking con .htaccess

El hotlinking también llamado leeching, direct linking, inline linking o bandwidth theft (robo del ancho de banda) significa enlazar un archivo (casi siempre imagen – gif, jpg, png) que es de otra página que no es nuestra.

No Hotlinking Please

Ejemplos (mostrando una imagen en HTML):
Imagen en nuestro servidor:

<img src="imagen.jpg" height="320" width="240" />

Imagen en servidor ajeno (hotlinking):

<img src="http://www.sitio.com/imagen.jpg" height="320" width="240"/>

En el primer ejemplo la imagen siempre es cargada desde el servidor que sirve la pagina, pero en el segundo ejemplo, cada vez que nuestra página carga, la imagen es cargada desde el servidor externo que usa su ancho de banda para mostrar la imagen.

Se puede evitar el hotlinking utilizando el archivo .htaccess. Este archivo está disponible solamente en servidores Apache sobre Linux. El punto delantero (.) significa que el archivo es oculto.

Ejemplo: La dirección de tu página es www.mipagina.com. Para evitar el hotlinking a tus imágenes desde otros sitios y mostrar una imagen llamada nohotlink.jpe que está en la carpeta imagenes, pon este código en el archivo .htaccess:

1
2
3
4
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mipagina\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagenes/nohotlink.jpe [L]

La primera línea empieza a reescribir las opciones en Apache.
La segunda línea verifica las coincidencias desde la propia página (mipagina.com).
El código [NC] significa “No Case“, haciendo que no importe si esta en minúsculas o mayúsculas la dirección.
La tercera línea es para permitir las referencias directas (poner directamente el link en la barra de dirección – sin referencias de otras páginas).
Finalmente la última línea sirve para las extensiones de los archivos jpeg, jpg, gif, bmp, png. Estas son reemplazadas por la imagen nohotlink.jpg que está en la carpeta imagenes. Esta imagen JPEG utiliza la extensión jpe y no jpg para evitar ser también bloqueada.

Para evitar el hotlinking solamente desde unos dominios específicos, como digg.com, myspace.com y blogspot.com, pero permitirlo para cualquier otro, utiliza este código:

1
2
3
4
5
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?digg\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?myspace\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?blogspot\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagenes/nohotlink.jpe [L]

Puedes añadir tantos dominios como quieras. Cada línea RewriteCond debe acabar con [NC,OR]. [NC] (No Case) significa que ignore las diferencias entre minúsculas y mayúsculas. [OR]Or Next” significa que pase a la siguiente línea buscando coincidencias. El último dominio omite el uso de OR para dejar de seguir buscando coincidencias.

Si no quieres poner una imagen puedes redireccionar a una página web o mostrar una página de error 403 Forbidden. Cambia la última línea con esta:

RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]

Si tenemos cPanel es bastante simple hacer esto, porque en Security tiene una opción para configurar la protección contra el hotlinking; si no, podemos utilizar este asistente web que nos permite configurar las opciones y nos genera el código.

cPanel - Hotlink Protection

Comentarios

Deja una respuesta