Usare .htaccess per disabilitare l’hotlinking dei contenuti del tuo sito

Come disabilitare l'hotlinking delle tue immagini
Come disabilitare l'hotlinking delle tue immagini
Disabilitare hotlinking via .htaccess

L’hotlinking è una pratica scorretta attuata da soggetti che creano nelle loro pagine web link diretti a contenuti (immagini, video, flash) hostati su altri server in modo da utilizzarne le risorse computazionali e di banda per servire i contenuti ai propri utenti.

Un esempio classico è costituito da link assoluti a contenuti multimediali su un server A che vengono inseriti in pagine web servite dal server B; il browser dell’utente che accede alla pagina web sul server B opererà richieste HTTP verso il server A per reperire le risorse multimediali, causando sprechi di CPU e banda, ed in ultima analisi anche di denaro.

Vediamo come evitare questo problema ricorrendo a poche righe inserite in un file .htaccess nella DocumentRoot folder del server A.

Per prima cosa è necessario creare il file .htaccess, all’interno della cartella di root del dominio di cui vogliamo proteggere i contenuti dall’hotlinking.

Una volta creato il file è necessario editarlo inserendo le seguenti linee:


RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?miodominio.com(/)?.*$     [NC]
RewriteCond %{REQUEST_URI} !cartella_esclusa
RewriteRule .*\.(gif|jpg|jpeg|bmp|png|altra_estensione)$ - [F,NC]

La prima linea serve ad attivare mod_rewrite.

La seconda linea invece  è quella che previene il download e l’hotlinking dei contenuti, quando l’HTTP_REFERER non è esplicitamente settato al dominio miodominio.com che si suppone essere quello da proteggere. In questo caso va quindi sostituito miodominio.com con il nome a dominio che intendete proteggere. Da notare che la regex matcha sia domini con www che senza, e che il confronto viene fatto ignorando il case (flag [NC]).

La terza riga è opzionale e permette di specificare delle cartelle per le quali vogliamo far sì che l’hotlinking sia possibile (ad esempio cartelle dove mettiamo file da scaricare, aggiornamenti software per i clienti, etc).

La quarta riga specifica le estensioni vietate, quelle che vengono inibite dall’hotlinking. In questo caso è possibile specificare un numero a piacere di estensioni separate dal carattere “|”. Anche in questo caso il confronto è case unsensitive e in caso di match positivo la richiesta viene riscritta su un file nullo, originando un errore 403.

Dal punto di vista del browser, seguendo con l’esempio dei server A e B fatto all’inizio, la pagina web caricata dal server B apparirebbe priva di tutti i contenuti caricati da A. L’utilizzo di banda e CPU di A in questo modo diviene trascurabile, e limitato al solo processing della richiesta da parte del rewrite engine.

Autore: Luca Adamo

Luca Adamo si è laureato con lode in Ingegneria delle Telecomunicazioni all'Università degli studi di Firenze ed è dottorando in Ingegneria Informatica, Multimedialità e Telecomunicazioni, sempre nella stessa facoltà. Le sue competenze tecniche includono lo sviluppo software, sia orientato al web che desktop, in C/C++ e Java (J2EE, J2SE, J2ME), l'amministrazione di macchine Unix-based, la gestione di reti di telecomunicazioni, ed il design di database relazionali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *