Protection contre le hotlinking
Le direct linking ou hotlinking consiste à utiliser l’adresse d’un fichier publié sur un site web, le plus souvent une image, pour l’afficher sur son site au lieu de l’enregistrer sur son propre serveur web.
Même lorsqu’une image est libre de droit un tel lien est illégal sans l’accord de l’éditeur du site puisqu’il s’agit de vol.
Le hotlinking peut s’avérer gênant, voire un cauchemar pour le propriétaire d’un site web. Je vous propose tout de suite une mise en situation dans lequel je serais le méchant webmaster qui abusera de votre site :
Je me balade sur un article de votre site et j’y trouve une image qui m’intéresse. Je récupère l’adresse de cette image et l’insère sauvagement (sans l’héberger sur mon serveur mais en gardant son lien d’origine) dans un de mes articles pour enrichir mon site.
A chaque fois que mon article qui contient votre image sera vu, une requête vers votre serveur sera effectuée, ainsi je profiterais de votre bande passante que vous payez chaque mois. Si mon article est beaucoup visité, l’image sera beaucoup téléchargée ce qui pourrait provoquer un ralentissement de votre site et faire dépasser votre quota mensuel de bande passante, alors, votre hébergeur pourra vous demander de payer le surplus utilisé. Ça devient embêtant non ?
Pour palier à ce problème, il existe heureusement une solution qui consiste à écrire quelques règles apache dans un .htaccess à la racine de votre site, (cependant certains hébergeurs n’acceptent pas les .htaccess dans ce cas cette solution vous est impossible) :
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?monsite.fr(/)?.*$ [NC]
RewriteRule \.(gif|jpe?g?|png)$ - [NC,F]
La première ligne active l’url rewriting. Vous n’avez pas à la changer, tout comme la seconde.
Dans la troisième, indiquez l’url du site sur lequel les images s’afficheront (le votre donc).
Dans la quatrième ligne, indiquez les extensions de fichier que vous souhaitez bloquer.
Cette règle permet de bloquer toutes les images d’extension .gif, .jpe, .jpg, .jpeg, .png sur tous les sites autres que monsite.fr
Cette règle simple et très performante peut néanmoins causer quelques « problèmes », il vous sera peut-être nécessaire de la modifier pour autoriser plusieurs sites à afficher vos images (google images par exemple) et bloquer plus d’extensions. Voici les règles de hightech-area :
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://[-_a-z0-9.]*hightech-area\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[-_a-z0-9.]*hightech-area\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://[-_a-z0-9.]*google\.[a-z]/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://209\.85\.229\.132/.*$ [NC]
RewriteRule .*\.(gif|jpe?g?|jp2|png|svgz?|ico|css|pdf|zip|gz|js|mp3|m4a|mp4|mov|divx|avi|wma?v?|wmp|swf|flv|docx?|xlsx?|pptx?|vbs|rtf|asf?x?|odt|ods|odp|odg|odb)$ - [NC,F]
Les fichiers d’extension .gif, .png, .css, .pdf, … sont seulement utilisables par hightech-area.com, le cache de google ainsi que google images (209.85.229.132). Sur les autres sites s’affichera l’adresse du fichier au lieu du fichier lui-même. Vous pouvez remplacer l’adresse de l’image par une image d’avertissement par exemple, pour cela remplacez :
RewriteRule \.(gif|jpe?g?|png)$ - [NC,F]
Par :
RewriteRule \.(gif|jpeg?|png)$ /anti-hotlink.jpe [NC,F]
L’image anti-hotlink.jpe sera affichée sur le site du hotlinkeur.
Notons qu’il existe des sites spécialisés dans l’hébergement gratuit d’images bien qu’il soit la plupart du temps préférable d’héberger ses images sur son propre serveur afin d’éviter toutes mauvaises surprises.

2 commentaires pour “Protection contre le hotlinking”
Ah chouette, je suis ric-rac en bande passante, ça va m’être super utile !
Merci.
Au cas ou ça vous intéresse, je viens de développer un plugin anti hotlinking pour Wordpress,
http://wordpress.org/extend/plugins/pictpocket/
@+
Laissez un commentaire