devdev / in the loop

Prevenire l’hotlinking delle immagini con .htaccess

La protezione degli hotlink non permette agli altri siti di richiamare le nostre immagini direttamente dal nostro server. Questo avviene perché nel codice del sito chiamante viene richiamato direttamente l’URL di un file che ospitiamo sul nostro server. Se non aggiungiamo alcuna protezione, l’hotlinking è automaticamente permesso. In molti casi questo può essere considerato un abuso delle nostre risorse.

Hotlink protection totale

Per bloccarne l’hotlink delle immagini possiamo aggiungere delle semplici regole al file .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?NOSTRO_DOMINIO.IT [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
</IfModule>

Queste regole in sostanza intercettano tutte le richieste ai file che terminano in .jpg, .jpeg, .gif, .png e, nel caso NON vengano dal nostro sito, il nostro sistema non risponde. Ovviamente dovremo sostituire NOSTRO_DOMINIO.IT con il nostro dominio reale.

Permettiamo l’hotlink da uno o più domini

Se, rispetto al caso precedente, volessimo permettere ad un qualche sito esterno di accedere, come un partner o un nostro sponsor, possiamo specificare a quali domini è permesso fare l’hotlinking delle nostre immagini:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?NOSTRO_DOMINIO.IT [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?ALTRO_SITO.IT [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
</IfModule>

In questo esempio abbiamo aggiunto una regola a quella precedente, che permette alle richieste provenienti da ALTRO_SITO.IT (che naturalmente dobbiamo sostituire con il dominio reale) di non essere bloccate. Possiamo replicare questa regola per più domini, usandola più volte e indicando per ogni riga un dominio diverso.

Mostriamo un’immagine

Volendo, anziché bloccare totalmente le richieste alle nostre immagini, possiamo servire all’utente che approfitta delle nostre risorse un’immagine predefinita no_hotlink.jpg.

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?NOSTRO_DOMINIO.IT [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ /no_hotlink.jpg [NC,F,L]
</IfModule>
Questo articolo ti è stato utile?
Server – LETTURA 7 MINUTI Il comando du, esempi e flag
Il comando du è uno standard Linux/Unix (e Mac) che ci permette di ottenere informazioni su file e cartelle in…
Server – LETTURA 5 MINUTI rsync: come escludere file e cartelle
Rsync (Remote sync) è uno strumento molto potente per poter sincronizzare due cartelle, e per poter effettuare backup incrementali. In…
Server – LETTURA 4 MINUTI Come bloccare un IP con .htaccess
Bloccare l’accesso ad un sito può essere utile per vari motivi: bloccare script malevoli, proteggersi dagli stalker o da quegli…
Server – LETTURA 12 MINUTI Che cos’è la High Availability
In questi anni stiamo vedendo un incremento verticale delle strutture ad alta efficacia, sia in termini di performance che di…
Roba figa da
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.