Noi per porre rimedio a questa pratica ci siamo avvalsi di un servizio esterno: Cloudflare, che oltre ad offrire protezione contro l’ hotlinking ci permette anche di bloccare Spam ed attacchi a forza bruta.
Ma per chi non ha tempo e soprattutto non vuole far gestire i suoi DNS ad un servizio esterno, il metodo più veloce per bloccare l’hotlinking delle immagini è inserire alcune istruzioni nel file .htaccess (ovviamene se il sito si trova sotto Web Server Apache).
Girando per la rete si trovano molte possibili soluzioni all’hotlinking attraverso la modifica del file .htaccess.
La soluzione più citata in Rete (ma a mio parere anche la più sconsigliata), consente di bloccare drasticamente l’hotlinking delle immagini da qualsiasi pagina web esterna al proprio dominio:
[apache]RewriteEngine on
RewriteCond %{HTTP_REFERER}!^$
RewriteCond %{HTTP_REFERER}!^http://(www\.)?miosito.com/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ – [F][/apache]
Con l’ultima istruzione si evita l’inutile consumo di banda, restituendo un HTTP 403 – Accesso negato alle richieste provenienti da altri domini.
Tutto molto bello ed efficace, ma tale soluzione ha però una grossa controindicazione: visto che impedisce l’utilizzo delle immagini anche nei Motori di Ricerca per le immagini, nella copia cache dei Motori, nei Feed Reader e in alcuni Aggregatori di News saremmo penalizzati dal punto di vista SEO.
Per ovviare al problema è possibile ricorrere ad una soluzione meno restrittiva, che consenta l’hotlinking solo da determinati siti o domini , in modo che quando passano i motori di ricerca a scandagliare le pagine del nostro sito non abbiamo in risposta un code 403 per ogni immagine.
Le regole seguenti consentono l’utilizzo delle immagini ai principali Motori di Ricerca (copie cache comprese):
- Bing
- Yahoo
- Ask
e al dominio di FeedBurner, utile nel caso si utilizzi questo servizio per i propri Feed come facciamo noi:
[apache]RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?miosito.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !bing\. [NC]
RewriteCond %{HTTP_REFERER} !ask\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ – [F][/apache]
Però anche questa soluzione non è priva di rischi, infatti le regole in qualche caso potrebbero essere troppo restrittive ed impedire involontariamente l’utilizzo delle immagini da parte di siti o servizi fidati che abbiamo autorizzato noi a prendere le immagini, oppure ad un altro nostro dominio.
Quindi o aggiungiamo altre righe per tutti i domini che vogliano abilitare oppure ricorriamo ad un’altra alternativa: quella di bloccare l’hotlinking solo dai siti incriminati (ovvero da quei siti che stanno effettivamente utilizzando le nostre immagini senza il nostro consenso).
Per bloccare l’hotlinking da un singolo sito o da un intero dominio (compresi eventuali domini di terzo livello) la sintassi è la seguente:
[apache]RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://www.sitoincriminato.com/ [NC]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?dominioincriminato.com/ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ – [F][/apache]
Secondo me questa è senza dubbio la soluzione più sicura, in quanto impedisce l’hotlinking solo da quei siti che si vogliono effettivamente bloccare.
L’unico svantaggio, è la necessità di dover aggiornare l’elenco dei siti bloccati ogni volta che se ne presenta uno nuovo.
Considerando però che la maggior parte delle richieste indesiderate di immagini, proviene molto spesso da spazi gratuiti (quali blogspot.com e wordpress.com), sarà sufficiente bloccare preventivamente l’hotlinking da questi domini.
Qualora un blog serio, hostato su uno di questi spazi, vorrà utilizzare una nostra immagine, di certo non lo farà utilizzando l’hotlinking ma scaricherà l’immagine poi la ricaricherà lui stesso, perché sa quanto è spiacevole la pratica dell’ hotlinking.
Nulla infine ci vieta di sfruttare a nostro vantaggio gli hotlink già presenti, “dirottando” le richieste indesiderate verso un’immagine sostitutiva in modo da creare un possibile traffico verso il nostro sito , questo perché l’utente legge la scritta: visita il Sito di Zoomingin.net è tentato ad andare a vedere cosa contiene quel sito.
Basterà modificare l’ultima regola nel file .htaccess per redirigere tutte le richieste delle immagini “prese in prestito” dal nostro sito verso un’immagine prestabilita:
[apache]RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.miosito.com/banner.jpg [L][/apache]
E se anche in questo caso, si volesse evitare il consumo di banda, sarà sufficiente caricare l’immagine sostitutiva su di un sito di hosting immagini gratuito come per esempio ImageShack.
Avete suggerimenti oppure avete sperimentato soluzioni più efficaci? Condividetele nei commenti.