[.htaccess] Fermare l'hotlinking

Non sono un esperto del modulo mod_rewrite e di espressioni regolari, però ho messo in atto quello che ho letto in svariate guide per la prevenzione dell'hotlinking.

Inline linking (also known as hotlinking, leeching, piggy-backing, direct linking, offsite image grabs and bandwidth theft) is the use of a linked object, often an image, from one site into a web page belonging to a second site. The second site is said to have an inline link to the site where the object is located. Fonte: Wikipedia.

Mettiamo che sul vostro sito abbiate una directory (la chiameremo img) contenente tutte le vostre immagini del vostro sito.
Mettiamo anche che abbiate un'altra directory (chiamata refrerring) contenente immagini che possono essere linkate da un server esterno al vostro.

Il codice da mettere in un file .htaccess (che andrà posizionato nella directory img) sarà il seguente:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_FILENAME} .*jpg$|.*jpeg$|.*gif$|.*png$ [NC]
RewriteCond %{HTTP_REFERER} !^http://chris\.delfinsblog\.it/ [NC]
RewriteCond %{HTTP_REFERER} !^http://bytestrike\.blogspot\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /TANK/referring/dontstealband.image
Breve esamina del codice:

  1. la prima riga attiva il modulo mod_rewrite.
  2. La seconda permette di mostrare le immagini a chi si collega direttamente al vostro sito (e quindi ha il campo di referring vuoto ovviamente).
  3. La terza riga applica la regola solo per le richieste di files che terminano con le estensioni specificate. Sarà possibile quindi indicare anche altri files.
  4. La quarta riga permette di visionare le immagini per coloro che stanno navigando il nostro sito.
  5. La quinta permette l'hotlinking per il blog amico specificato.
  6. La sesta mostra un'immagine segnaposto con un simpatico messaggio invece dell'immagine richiesta.

Esempio 1: hotlinking di un'immagine di chris.delfinsblog.it nella cartella img. L'immagine viene correttamente visionata perchè è il mio blog a richiederla. I lettori del mio feed invece, vedranno l'immagine segnaposto.

Esempio 2: per testare se è permesso o meno l'hotlinking di un'immagine inserite il vostro URL (come quello qui sotto) in questo sito (in fondo alla pagina). Se l'hotlinking è permesso, verrà visualizzata l'immagine desiderata altrimenti il segnaposto.

http://chris.delfinsblog.it/TANK/img/chris2.jpg

Link interessanti

Segnalo un po' di links interessanti sull'argomento:

2 comments:

Luca ha detto...

Con un'estensione per FF come Refcontrol credo che non funzioni questo trucchetto. L'estensione in pratica modifica il referrer, impostandolo automaticamente con il dominio al sito a cui fai l'http request. Chi fa un sito sicuramente non può pretendere che i visitatori abbiano tutti Refcontrol, tuttavia se si parla di un forum di smanettoni la cosa è più plausibile....

Christian Castelli ha detto...

Si è probabile, anche se non certo visto che non ho provato. Il punto però non è impedire alla gente di visualizzare le immagini, ma dissuadere la gente dal linkare direttamente un'immagine che non risiede sui loro server.
A questo punto il sedicente webmaster dovrebbe consigliare a tutti i suoi visitatori di usare tale estensione per vedere le immagini...poco realizzabile,fai prima a farne l'upload sul tuo server non credi? :)

Byte Strike Blog - Designed by Posicionamiento Web | Bloggerized by GosuBlogger