Difendersi dall’Hot Linking con Asp.Net

Oggi, durante il mio giro di ronda, quotidiano, mi è balzato all’occhio un consumo di banda eccessivo per uno dei siti dei miei clienti. Apparentemente potrebbe sembrare una cosa positiva, poichè magari alcune modifiche apportate al sito avevano destato interesse nel pubblico. Il brutto però è che non avevo modificato il sito da circa un mese; chiaro quindi che o c’era un boom di ricerca e di interesse verso questa ditta oppure stava succedendo qualcos’altro.

La risposta, come quasi sempre succede, è quella peggiore. Qualche buontempone aveva deciso di appoggiarsi al sito del mio cliente per mostrare alcune immagini del suo sito. Aveva fatto quello che in gergo si chiama Holinking (o Inline linking), ovvero aveva utilizzato una deprecabile pratica che consiste nell’inserire all’interno di una pagina web un collegamento ad una risorsa (nel mio caso un’immagine, che è del resto il caso più frequente) contenuta su un host remoto differente dal proprio.

L’operazione, in se apparentemente innocua, in realtà crea tutta una serie di problemi al sito e al server ospitante il sito, primo fra tutti l’occupazione di banda che viene letteralmente rubata. Quello del Bandwith theft può anche arrivare a causare dei seri rallentamenti del sito senza una apparente ragione.

In pratica, vedendola sotto un profilo più tecnico, succede che il client che si collega al sito XYZ richiede una risorsa una pagina di quel sito, ma essendo le immagini contentune sul sito ABC, il server del siti XYZ consumerà solo 4-5 kb (per esempio) che sono solo quelli del peso reale della pagina. Il resto della banda sarà a totale carico dell’ignaro proprietario del sito ABC al quale verrà rubata questa banda per mostrare solo le immagini contenute sul suo sito, ma senza per questo mostrare i contenuti ai quali sono associate.
Risultato, se è un sito abbastanza trafficato quello che vi ha fatto l’HotLinking, vi ritroverete forti picchi di traffico e qualche Megabyte in meno come se nulla fosse.

 

Come capire se il proprio sito è oggetto di Hotlinking

La strategia migliore è, come sempre, quella di osservare le statistiche ed in particolare la sezione referrer degli accessi al sito: se si nota un incremento inconsueto delle visite o degli hits, accompagnato da un rallentamento nel caricamento delle pagine, è opportuno fare un’indagine più approfondita. E’ quello che ho fatto io, infatti la cosa non è durata più di due giorni.

Tuttavia è anche doveroso dire che questo genere di fenomeni difficilmente lo si riesce a notare con software a tracciamento javascript: per capirci Google Analytics, ShynyStat e compagni non consentono di individuare questa anomalia. Sono necessari strumenti in grado di analizzare i file di log del webserver su cui ci si appoggia per la pubblicazione del sito.

 

Come prevenire l’Hotlinking con ASP.Net

Se il vostro sito si appoggia ad un server web IIS ed è un sito dinamico che utilizza ASP.Net, una soluzione è quella di scrivere un HttpHandler e registrarlo sulla macchina per le estenzioni delle immagini. Facendo veicolare le richieste per questo vostro componente si può verificare se il richiedente è il vostro sito o una risorsa esterna. Nell’ultimo caso, si potrebbe, invece di restituire la risorsa stessa, ritornare indietro un codice di errore 403 o un’immagine fasulla.

Se il vostro sito è statico, purtroppo, non vi resta nulla da fare che cambiare il nome dell’immagine e aggiornare le vostre pagine, sperando che le pagine da cambiare non siano troppe.

Fonte: un ringraziamento a Cristiano Fino e al suo ariticolo dal quale ho preso spunto per parlarvi di un caso reale che – come spesso accade – si pensa sempre: tanto a me non può succedere 🙂

 

Technorati Tags: ,