Come prevenire l'hotlinking usando il file .htaccess

Stampa E-mail

L'hotlinking è la pratica attraverso la quale un sito si appropria delle immagini contenute nelle pagine di un altro sito, attraverso il link diretto alla immagine stessa. Il link è del tipo:
<img src= http://www.sitoesterno.it/dir/foto.jpg" ...>

In questi casi, oltre a rubare il file, il sito esterno utilizza e consuma banda. Quindi, soprattutto quando essa è molto limitata, è necessario in qualche modo negare al referer il permesso di compiere l'operazione. Come fare? La soluzione ci viene fornita dal mod_rewrite di Apache, attraverso alcune righe di codice da inserire nel file .htaccess.

Presupposti: webserver Apache e mod_rewrite installato.

Ho letto vari esempi di codice, provo a indicare le soluzioni secondo me più semplici.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?miosito\.it [NC]
RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]

Anzitutto abbiamo attivato il RewriteEngine (riga 1)
Qualsiasi referer che sia diverso dal mio dominio (1a e 2a riga - sostituire miosito\.it con nomedelmiosito\.estensione) e che chieda un immagine (gif,jpg o jpeg, png) presente sul mio sito...
mandalo a F.NC.L. :)

Più precisamente:

([-a-z0-9]+\.)? = proviene da http://www.miosito.it o qualsiasi altro dominio di terzo livello (es: http://sottodominio.miosito.it ). Si può sostituire semplicemente con http://(www\.)?nomesito\.ext/ se il sito non ha sottodomini.

[NC] = Non Case sensitive
F = restituisci errore 403 (Forbidden)
LLast rule, cioè non leggere oltre perché questa è l'ultima regola.

Se si vuole restituire una immagine specifica al posto di quella linkata, occorre modificare l'ultima riga in questo modo

 RewriteRule \.(jpe?g|gif|bmp|png)$ directory-immagine/immagine.jpg [L]

Una soluzione alternativa è qui: http://www.thesitewizard.com/archive/bandwidththeft.shtml

...e se volessimo fare un'eccezione per alcuni siti esterni?

Seguono eccezioni per sito.com, Google e la cache di Google da inserire dopo la terza riga dell'esempio riportato su.

RewriteCond %{HTTP_REFERER} !sitoesterno\.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]

...e se volessimo permettere l'hot-linking di alcune immagini?

Basta creare una directory e caricarvi un file .htaccess che sovrascriva le regole di quello principale (della root). In questa directory potremo mettere le immagini hot-linkabili.

RewriteEngine on
RewriteRule ^.*$ -  

Ciao  :)

Ultimo aggiornamento ( mercoledý 08 febbraio 2006 )

Home arrow Altri appunti arrow Come prevenire l'hotlinking usando il file .htaccess

 I Feed RSS di miniDesign

In evidenza
Il file htaccess
Tutorial mappa Google
Ultime notizie
Le pi¨ lette
Ricerca rapida