En el pasado he escrito algunas cosas sobre el hotlinking, como afecta negativamente al
rendimiento del sitio, como pueden hacerse ataques CSRF, etcétera. Pero ahora que he
separado el contenido "media" (imágenes, PDFs, etcétera) del web (HTML) en un subdominio
http://static.sigt.net
pues lo puedo filtrar más fácilmente sin "cagarla".
Pero, en el caso de las imágenes especialmente, nos puede interesar que se puedan ver en otros sitios. Así que a esas medidas hay que aplicar algunas excepciones.
El código, al final, queda así:
# --------- General SET options -------- Options -Indexes # --------- Caching header tags -------- <FilesMatch "\.(ico|gif|jpg|png|css|js|gz)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> FileETag None Header unset ETag # --------- Disable Hotlinking --------- # except Google Reader and other sites <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?sigt\.net(/.*)*$ [NC] RewriteCond %{HTTP_REFERER} !^http://static\.sigt\.net(/.*)*$ [NC] RewriteCond %{HTTP_REFERER} !^http://planetwebdev\.net(/.*)*$ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://www\.google\.(com|es)/reader/(m/)?view/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.|images\.)?google\.(com|es)/.*$ [NC] RewriteRule \.(jpg|jpeg|gif|bmp|png)$ nohotlink.gif [L] </IfModule>
El código, aparte de las oportunas cabeceras para la cache del navegador, es a grandes rasgos que
si el HTTP_REFERER
(desde donde carga la imagen) no es una de la lista en lugar de eso carga
la imagen nohotlink.gif
:
Las excepciones actualmente son:
!^$
.- SigT y static.sigt.net (obvios).
- El Planet Webdev.
- Google Reader (.com/.es).
- Google Imagenes (.com/.es).
Actualmente no se pueden hacer excepciones para clientes de escritorio vía HTTP_REFERER
, quizás
se podría apañar por HTTP_USER_AGENT
pero cada pequeña variación de user-agent tendría que ser una
excepción nueva, lo cual lo hace inmantenible.
Pero la gracia es la primera excepción: !^$
. Si no se envía HTTP_REFERER
se considera un sitio
permitido. Esto significa que para los que tengan problemas para leer desde otras fuentes (os estoy
mirando a vosotros, lectores RSS desde escritorio/móvil APP) solamente tienen que desactivar el
REFERER (enviar un referer en blanco).
Una búsqueda rápida en Google por Disable HTTP_REFERRER os pondrá en el camino correcto.
Para usuarios de Firefox podéis usar RefControl lo instalais y añadis de excepción que el sitio desde donde leeis los RSS (Google Reader u otro) no envie REFERER y arreglado... no sólo para SigT si no para otros sitios (muchos añaden esta excepción).
De todas formas, la mayoría de gente me lee vía RSS (y ahí predomina Google Reader), directamente en la web o en el Planet Webdev. Si usáis algún otro lector de RSS online siempre podéis darme un toque para añadirlo a la lista de permitidos.
Comentarios