Quando si parla di hotlinking  ci si riferisce ad una pratica – molto abusata soprattutto da un certo tipo di blogger – che permette di mostrare una risorsa (tipicamente un’immagine) all’interno della propria pagina web senza senza che questa sia presente all’interno del proprio spazio, sfruttando quindi la banda e le risorse del server esterno che la ospita fisicamente.

L’hotlinking danneggia il tuo sito

Facciamo un esempio. L’immagine che vedete qui sotto è stata caricata direttamente all’interno dello spazio destinato a questo blog. Il server web non fa altro che andare a caricare una risorsa interna (l’immagine stessa) e mostrarla al visitatore, senza alcun carico elaborativo extra.

Il codice dell’immagine è il seguente:

<img src="/wp-content/uploads/2012/05/kenny-mccormick.jpg" alt="" border="0" width="320" height="240" />

Un sito esterno, invece di effettuare il download dell’immagine e di caricarla sul proprio server (cosa che, oltretutto, è sempre consigliabile in quanto migliora moltissimo i tempi di caricamento e le prestazioni generali del sito…), ottiene il collegamento diretto alla risorsa e lo include all’interno di una propria pagina.

<img src="http://www.skyflash.it/wp-content/uploads/2012/05/kenny-mccormick.jpg" alt="" border="0" width="320" height="240" />

Il risultato sarà che il secondo sito, eterno al nostro, sfrutta l’immagine senza però sacrificare il proprio spazio web, mentre il nostro sito, su cui risiede l’immagine, sarà sottoposto ad un carico eccessivo (ed assolutamente non richiesto nè tanto meno gradito) sia per quanto riguarda la propria banda passante che per le risorse del server.

Come proteggersi da hotlinking

Sono sufficienti alcune righe da aggiungere al proprio, immancabile, file [cci].htaccess[/cci] e, se volete, un’immagine preparata per lo scopo, che servirà per sbattere in faccia al webmaster antipatico la dura verità 🙂

ATTENZIONE: la modifica di .htaccess, se fatta da persone non esperte e non particolarmente attente, può generare molti problemi al vostro sito WordPress, fino a renderlo inaccessibile. Assicuratevi quindi di fare SEMPRE una copia di sicurezza di .htaccess prima di cominciare le modifiche

Aprite il vostro file [cci].htaccess[/cci] ed in coda (se usate WordPress, dovrebbero esserci solo le direttive di default) e dopo ### END WordPress ### aggiungete il seguente codice:

### Blocca l'hotlinking - Webmaster cattivo pussa via
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?skyflash.it [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_USER_AGENT} !googlebot [NC]
RewriteCond %{REQUEST_URI} !^hotlink.jpg$
RewriteRule \.(jpg|jpeg|png|gif|js|swf)$ hotlink.jpg [NC,R,L]

Spiegazione

Alla terza riga trovate:

RewriteCond %{HTTP_REFERER} !^$

Questa istruzione consente ai referrer che non forniscono informazioni di accedere al contenuto. Ciò è reso necessario in quanto molti visitatori (soprattutto quelli che si connettono dall’ufficio e si trovano dietro a proxy) sono protetti da un firewall che non rilascia informazioni al server per ragioni di sicurezza.

Righe 4, 5 e 6:

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?skyflash.it [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_USER_AGENT} !googlebot [NC]

specificano i domini che invece possono effettuare l’hotlinking e quindi visualizzare le immagini presenti sul server. Quindi scriveremo il nostro dominio internet e, in caso vogliate farvi indicizzare le immagini, Google. Tutti gli altri sono fuori.

Riga 7:

RewriteCond %{REQUEST_URI} !^hotlink.jpg$

Se proprio qualcuno vuole rubare qualche immagine, allora lasciamogli prendere quella che abbiamo preparato per segnalare gli hotlinker. Questa riga ci assicura che l’immagine sia sempre visualizzabile.

Riga 8:

RewriteRule \.(jpg|jpeg|png|gif|js|swf)$ hotlink.jpg [NC,R,L]

Specifica il formato dei file protetti dall’hotlinking (non solo le immagini ne sono soggette) e sostituisce le richieste con un’immagine statica.

Ovviamente potrete specificare l’immagine che desiderate, ma assicuratevi che questa non sia protetta (vedi riga precedente) oppure, ancora meglio, caricatela su una risorsa esterna come Dropbox, o il risultato sarà un loop infinito!

Concedere l’accesso a Bing, Yahoo e Facebook

Esattamente come abbiamo fatto per Google, aggiungiamo al nostro [cci].htaccess[/cci] le seguenti direttive:

RewriteCond %{HTTP_REFERER} !msn. [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?facebook\.com [NC]
RewriteCond %{HTTP_USER_AGENT} !facebookplatform [NC]
RewriteCond %{HTTP_USER_AGENT} !msnbot [NC]
RewriteCond ${HTTP_USER_AGENT} !slurp [NC]

Il risultato finale sarà quindi il seguente:

### Blocca l'hotlinking - Webmaster cattivo pussa via
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?skyflash.it [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !msn. [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?facebook\.com [NC]
RewriteCond %{HTTP_USER_AGENT} !googlebot [NC]
RewriteCond %{HTTP_USER_AGENT} !facebookplatform [NC]
RewriteCond %{HTTP_USER_AGENT} !msnbot [NC]
RewriteCond ${HTTP_USER_AGENT} !slurp [NC]
RewriteCond %{REQUEST_URI} !^hotlink.jpg$
RewriteRule \.(jpg|jpeg|png|gif|js|swf)$ hotlink.jpg [NC,R,L]

Chi dovesse linkare ad una risorsa di questo blog, con estensione jpg, jpeg, png, gif, js o swf, come unico risultato avrà la visualizzazione della seguente immagine

Se guardando le statistiche del vostro spazio web avete notato un consumo eccessivo di banda in uscita o se state rilevando una grande quantità di accessi esterni alle stesse immagini, probabilmente siete hotlinkati da qualcuno. Ora sapete come difendervi 🙂

Risorse esterne: