Si tu contrato con tu proveedor de hosting es por un ancho de banda limitado, es importante que protejas tu web contra el hotlinking de imágenes.
En este post aprenderás que significa «hotlinking» y cómo evitarlo.
Índice de contenido
¿Qué es el hotlinking?
Cómo evitar el hotlinking
Existen varias maneras de evitar el hotlinking, una es mediante la opción de “Protección de enlace directo” que se encuentra en cPanel que es la manera más sencilla.
Y la mejor apuesta radica en agregar unas líneas de código al archivo .htaccess
.
# Evitar hotlinking de imagenes RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?tudominio.com[NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yahoo.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?duckduckgo.com [NC] RewriteRule .(jpg|jpeg|png|gif)$ - [NC,F,L]
Este código se encargará de:
- Comprobar si la petición está dirigida a un fichero jpg, jpeg, png, gif.
- Comprobar si existe el campo Referer dentro de la petición, si pertenece a nuestro
sitio o si sencillamente no ha sido incluida. - Denegar el acceso a la dirección IP que originó la petición en una página web remota.
En “tudominio.com” debes reemplazarlo por tu dirección real de dominio.
Deberías permitir hotlinking desde ciertos dominios como por ejemplo Google, Yahoo, Bing o Redes sociales, para evitar perder posicionamiento.
Cómo comprobar que el código está funcionando correctamente
Existe una página web donde con solo colocar la dirección URL de alguna imagen perteneciente a tu web comprobaras si puede ser enlazada por un servidor remoto.
Antes realizar esta prueba borra la caché del navegador para evitar que la imagen se cargue desde la memoria caché en lugar de la URL remota que está probando.
O utiliza un navegador diferente al que usas habitualmente para navegar donde no hayas accedido nunca a tu sitio web.
http://altlab.com/hotlinkchecker.php
Como mencionaba anteriormente si el código ha sido implementado correctamente te encontraras con un mensaje:
Attempting to display image below:
image not loaded
Conclusión
Aunque existen muchas variaciones en las expresiones regulares específicas que pueden ser escritas, todas logran la misma cosa.
Uno puede o bien lanzar un mensaje de «prohibido» lo que significa que la imagen no está allí o el usuario llega a ser redirigido a otra imagen.
En definitiva, el uso de la regla de reescritura para prohibir la visualización de la imagen es una regla simple que bloquea efectivamente la visualización en sitios remotos.