
Implementación de protección Hotlink para evitar el robo de ancho de banda
El hotlinking —incrustar imágenes o recursos de tu servidor desde otros sitios— puede convertir tu hosting compartido en víctima del consumo excesivo de ancho de banda y generar costes adicionales, ralentizaciones y problemas de rendimiento para todos los clientes en el mismo servidor. En esta guía técnica y práctica explico cómo detectar, prevenir y mitigar el hotlinking en entornos de hosting compartido con ejemplos concretos para Apache (.htaccess), Nginx y soluciones con CDN/Cloudflare.
¿Qué es el hotlinking y por qué es crítico en hosting compartido?
El hotlinking ocurre cuando otro sitio enlaza directamente a imágenes, vídeos u otros recursos que están alojados en tu dominio, consumiendo tu ancho de banda sin permiso. En hosting compartido las consecuencias son más graves porque:
- Los recursos consumidos pueden afectar a los demás usuarios del servidor.
- Los límites de transferencia pueden superarse con más facilidad, provocando suspensiones o costes adicionales.
- El origen del tráfico puede ser difícil de bloquear si no se implementan reglas eficientes.
Cómo detectar hotlinking
Antes de implementar bloqueos, confirma la existencia del problema con estas técnicas:
- Revisar logs de acceso (access.log) en busca de peticiones a archivos estáticos con
Refererexterno. - Uso de herramientas de análisis: filtrar por URLs de recursos y observar hosts referidores.
- Pruebas manuales con
curlsimulando referer:curl -I -e "http://otrodominio.com" "https://tudominio.com/imagen.jpg". - Comprobar aumento inesperado de consumo de tráfico en el panel de hosting o métricas del CDN.
Implementación práctica en hosting compartido
La implementación depende de las capacidades del plan compartido. Si tienes acceso a .htaccess (Apache) o a la configuración del servidor (Nginx), aplica reglas en el servidor web. En otros casos, usa un CDN o servicios como Cloudflare para bloquear hotlinking.
Apache (.htaccess) — regla típica con mod_rewrite
En la mayoría de hosting compartido con Apache puedes colocar esta regla en .htaccess en la raíz del sitio. La idea es bloquear peticiones cuyo Referer no sea tu dominio ni esté vacío (algunas herramientas y navegadores envían referer vacío por privacidad).
# Evitar hotlinking en Apache (colocar en .htaccess)
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?tudominio\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?midominio\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F,NC]
Explicación breve:
RewriteCond %{HTTP_REFERER} !^$permite referers vacíos (opcional).- Se permiten tus dominios con las dos condiciones siguientes.
- La regla devuelve
403 Forbiddenpara extensiones de imagen.
Nginx — bloqueo con valid_referers
En Nginx se usa la directiva valid_referers. Ejemplo dentro de un bloque server o location:
# Ejemplo Nginx
location ~* \.(jpg|jpeg|png|gif|webp|svg)$ {
valid_referers none blocked server_names www.tudominio.com tudominio.com midominio.com;
if ($invalid_referer) {
return 403; # o rewrite a /images/placeholder.png;
}
}
Notas:
nonepermite referers vacíos;blockedcubre referers ocultos por proxies.- Puedes devolver un
403o redirigir a una imagen placeholder para desalentar el hotlinking sin romper páginas externas. - En hosting compartido puede que no tengas acceso directo a la configuración Nginx; consulta al proveedor.
Protección a nivel CDN o Cloudflare
Si tu hosting comparte limitaciones, un CDN es la opción más efectiva: el CDN servirá recursos y bloqueará tráfico malicioso antes de llegar al servidor origen. Con Cloudflare puedes aplicar reglas de firewall o Page Rules para filtrar por Referer o implementar Workers que validen tokens. Consulta la documentación oficial para reglas y opciones avanzadas: Cloudflare Docs.
Consideraciones técnicas y limitaciones
El bloqueo por Referer es útil pero no infalible:
- El encabezado
Refererse puede falsificar; atacantes avanzados pueden sortearlo. - Algunos clientes y navegadores envían referer vacío por privacidad o por políticas HTTPS→HTTP. Decidir si permitir referer vacío es una decisión de coste/beneficio.
- Los motores de búsqueda o agregadores legítimos pueden requerir acceso; incluye excepciones para bots si es necesario.
Alternativas más robustas:
- URLs firmadas (signed URLs) y tokens temporales generados por la aplicación o CDN.
- Servir imágenes desde un subdominio específico y usar políticas CORS o cookies/headers con validación.
- Implementar verificación por aplicación: servir recursos a través de un script que valide la sesión o el origen.
Pruebas y verificación
Tras implementar cualquier regla, valida con pruebas concretas:
- Usa
curlpara simular referers externos:curl -I -e "http://malicioso.com" "https://tudominio.com/imagen.jpg". Debes recibir403o la imagen alternativa. - Prueba desde navegadores con la consola de red y desde servidores remotos para reproducir escenarios reales.
- Revisa los logs de acceso y error para detectar bypasses o falsos positivos.
Buenas prácticas y recomendaciones para hosting compartido
- Prioriza soluciones CDN si el presupuesto lo permite; reducen carga en el servidor y actúan como capa de defensa.
- Mantén un whitelist de referers confiables (tus dominios, dominios de pruebas y servicios legítimos).
- Evita reglas demasiado restrictivas que bloqueen navegadores o herramientas legítimas; monitoriza tras el despliegue.
- Documenta cambios en
.htaccesso en la configuración del servidor para facilitar reversión en caso de problemas. - Si usas Apache, revisa documentación oficial: Apache HTTP Server. Para Nginx consulta NGINX.
Ejemplo real: bloqueo y placeholder
En algunos casos conviene devolver una imagen placeholder para no romper la maquetación externa. Ejemplo Apache:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?tudominio\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ /images/placeholder.png [L,NC]
Con esto, cualquier intento de hotlink mostrará la imagen placeholder y desincentiva el robo sin devolver un error visible.
Conclusión
La protección contra hotlinking es una medida esencial en hosting compartido para controlar costes, mantener rendimiento y evitar abusos. Empieza por detectar el problema con logs y pruebas, aplica reglas sencillas en Apache o Nginx cuando sea posible y, si tu plan lo permite, complementa con CDN/Cloudflare para una defensa más robusta. Ten en cuenta las limitaciones del enfoque por Referer y evalúa opciones avanzadas como URLs firmadas si necesitas seguridad reforzada. Implementa, monitoriza y ajusta: una configuración equilibrada evitará el robo de ancho de banda sin perjudicar usuarios legítimos.