Zootropo

Diario del mundo geek.

domingo, mayo 23, 2004

Cómo evitar el hotlinking

Hotlinking traducido literalmente al castellano significa "enlace caliente". Se refiere a los enlaces que realizamos de imágenes o ficheros de servidores que no nos pertenecen, sin permiso del autor y muchas veces sin siquiera nombrarlo.

Para evitar el hotlinking si estamos usando como servidor web Apache tenemos que modificar o crear un archivo .htaccess en la carpeta donde están los archivos. La forma mas común de evitar el hotlinking (aunque es facilmente engañada) es comprobar el referer. Cuando visitamos una página web esta sabe de que página has llegado a ese sitio (referer) si has entrado a traves de un enlace. En Apache esta información se almacena en HTTP_REFERER.

Supongamos que nuestro sitio web es www.zootropo.es; el siguiente código dentro de .htaccess haría que solo se mostrara la imagen si el referer es una página perteneciente a zootropo.es o si no hay referer (se ha escrito la dirección en la barra de dirección):

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?zootropo\.es/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|bmp|png)$ imagenes/no_permitido.gif [L]

Si quisieramos comprobar archivos con otra extensión solo tendríamos que cambiar las extensiones de la última regla. Además, si en lugar de mostrar una imagen (que al fin y al cabo también esta gastando ancho de banda) queremos simplemente darle un error de forbidden al enlazar la imagen la última regla quedaría así:

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