ARTICULOS

Combatir hotlinking con .htaccess

Autor: Leandro D´Onofrio (http://www.leandrodonofrio.com) - 30/06/2007
Esta obra está bajo una licencia de Creative Commons

Del.icio.us Facebook Technorati

Hace ya unos cuantos días dos blogs del lejano oriente (uno de china y otro de allí cerca) me andaban robando ancho de banda no con una, ni dos sino con 22 imágenes alojadas en el servidor. En otras palabras, estos dos blogs hacen hotlinking. Y eso no es legal. Asi que hoy buscando una solución entre mis marcadores, llegué a un artículo [en ingles] en los foros de Joomla! que explica de manera sencilla como combatir el hotlinking usando el .htaccess, el cual voy a traducir de manera libre:

¿Cómo bloqueo el hotlinking en mis imágenes utilizando .htaccess?

1. Crea una imagen jpeg llamada no_hot_link.jpe. Nota que la extensión es .jpe , esto es intencional y muy importante. Una vez creada ponla en tu carpeta de imágenes.

2. Abre el  .htaccess y escribe estas líneas de código:

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

De esta forma cuando haya una peticion externa de una imágen jpg/jpeg/gif/bmp/png alojada en tu sitio, se mostrará el sustituto no_hot_link.jpe.

Blockear el hotlinking de dominios específicos

De la manera anterior bloqueamos las imágenes de cualquier sitio externo, aunque podemos hacerlo para dominios específicos:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?blogspot\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?myspace\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?livejournal\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/no_hot_link.jpe [L]

Asi hacemos que otros sitios alojados en blogspot, myspace o livejournal no puedan robarnos ancho de banda. La cantidad de dominios es ilimitada, sin embargo el último no debe poseer la bandera la condición OR.

Mostrar Error 403 [Forbidden] en vez de una imagen:

Tan solo debemos cambiar la última línea por:

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

Finalmente algunos se preguntaran porque es importante que la imagen sustituta sea .jpe . A pesar que en el artículo no lo explica, es cuestión de lógica. Estamos estableciendo que no se pueden mostrar imágenes con cierto formato en otro sitio. Si hacemos eso, por lo tanto, no podremos mostrar una imagen sustituta con los formatos jpg/jpeg/gif/bmp/png , es por eso que se busca otro formato de imagen para mostrar [jpe].

 

Más artículos sobre Servidores

1. Instalación del Personal Web Server
2. Instalación del servidor Apache bajo Windows
3. Configurar IIS para ejecutar WAP
4. Enlaces usables en nuestro sitio
5. Active Server Pages sobre Apache
6. Combatir hotlinking con .htaccess
7. ¿Qué es .htaccess?
8. Instalación de phpdev en Windows
9. Redirección 301
10. FoxServ: paquete instalador para Windows
Más artículos...

Otros artículos...

Hojas de Estilo Mejorando la apariencia de los formularios
Usabilidad Títulos en las páginas web
PHP Upload de archivos al servidor
PHP Validar una dirección de email
AJAX ¿Qué es AJAX?
Java Script Cómo hacer un pop-up con JavaScript
Varios Introducción al desarrollo web para principiantes
Flash Optimizar el peso de los SWF
Java Script Muestra frases en forma aleatoria
Java Script Pasando datos entre páginas html con JavaScript
Más artículos...