Qu’est ce que le Hotlinking ?

C’est une pratique qui consiste à afficher sur son site Internet une image depuis un autre site Internet. Cela peut être fait d’un commun accord entre les deux sites, par exemple l’URL d’une bannière publicitaire hébergée sur le site de l’annonceur et affichée sur le site du diffuseur. Mais la plupart du temps c’est fait sans l’accord du site qui héberge les images !

Quelles conséquences pour l’hébergeur ?

D’une part si les images ne sont pas libre de droit, le site qui les héberge se fait voler. D’autre part si le site qui les affiche génère beaucoup de fréquentation et/ou que le nombre d’images hotlinkées est important, cela peut consommer beaucoup de bande passante.

Comment détecter du Hotlinking ?

Ce n’est pas évident. Vous pouvez utiliser des outils tels que Tineye, c’est un site mais également une extension pour navigateur, qui sera a même de chercher des images similaires à celle que vous lui indiquez. Cela fonctionne très bien, dans la limite des sites que Tineye indexe, mais cela nécessite de vérifier toutes vos images à la main !

L’autre solution est d’automatiser la détection d’images chargées depuis un site autre que le vôtre (pour simplifier). C’est techniquement plus complexe mais cela fonctionne très bien. Sur le principe, c’est le fichier .htaccess du serveur Apache qui se charge d’intercepter les images avant leur affichage. Vous pouvez renseigner les sites que vous autorisez à faire du hotlink, les répertoires de votre site que vous autorisez ou non, les extensions d’images…

[php]# S’il y’a bien un site référant
RewriteCond %{HTTP_REFERER} !^$
# Et que cela n’est pas mon site
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?monsite.fr
# Que l’image ne se trouve pas dans images/refs
RewriteCond %{REQUEST_URI} !^(.*)images/refs/(.*)$
# Mais qu’elle se trouve dans images ou upload
RewriteCond %{REQUEST_URI} ^(.*)images/(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)upload/(.*)$
# Si c’est un jpg, un png ou un gif, ne renvoi rien !
RewriteRule \.(jpg|jpeg|png|gif)$ – [F,L][/php]

Comment réagir à un Hotlinking ?

Il y a heureusement plusieurs possibilités :

  • Renommer l’image utilisée sur un site sans votre permission. La solution est simple et radicale mais elle vous contraint à modifier vos propres pages contenant cette image. De plus si vous avez autorisé son utilisation sur d’autres sites ce n’est pas une bonne solution.
  • Contacter le site fautif et lui demander de supprimer sans délai l’image dont vous êtes l’auteur. Le délai sera plus ou moins rapide suivant le site mais cela devrait fonctionner. Mais il y a beaucoup plus fun !
  • Remplacer à la volée l’image copiée par une autre de votre choix ! Vous voyez cela devient fun… Et cela justifie le titre de l’article, tel est pris qui croyait prendre (votre image). A vous d’être imaginatif pour l’image de remplacement, un message informatif, une publicité pour votre site, …

Vous avez choisi la 3e solution ? Ok, voyons comment faire avec un cas concret qui m’a donné l’envie d’écrire cet article.

J’ai placé une alerte pour être informé des publications qui parlent de mon site portail de Seine-et-Marne Atome77.com. J’en reçoit une hier qui indique qu’Atome77 est présent sur une page de la radio Voltage. Je me rends sur la page en question et je constate que le site utilise en Hotlinking une de mes photos pour illustrer l’annonce d’une brocante en Seine-et-Marne… Elle a sans doute été trouvée sur Google images, on ne s’embête même pas à la sauvegarder sur son serveur, allez hop on fait un lien direct avec le site qui héberge l’image.

Voltage, voilà un beau site de diffusion, non ?

Trois lignes de code dans mon htaccess plus tard, ce n’est plus pareil…

[php]# L’image volée est affichée depuis le site Voltage
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?voltage.fr [NC] # Cela ne doit pas concerner le répertoire images/refs car il héberge l’image de substitution (important)
RewriteCond %{REQUEST_URI} !^(.*)images/refs/(.*)$
# Si c’est bien une image, j’envoie l’image de substitution
RewriteRule \.(jpg|jpeg|png|gif)$ http://www.atome77.com/images/refs/hotlink-voltage.png [L][/php]

Pour une gestion fine des Hotlinks, j’utilise le script VisoHotlink, qui envoi depuis le htaccess les images vers un script php avec une gestion en base de données. Si votre site comporte pas mal d’images vous risquez d’halluciner sur le nombre de hotlinks que vous allez recevoir. Le script permet d’agir au cas par cas (pour tel site ou telle image je fais tel remplacement, etc.).

Conclusion

Si vous êtes tenté de piquer des images à droite ou à gauche, réfléchissez à ce que vous faites et dans tous les cas éviter le Hotlink. Si vous êtes vous même victime de Hotlink, soyez imaginatif et amusez-vous bien !

Pour le remplacement ci-dessus j’avais hésité avec celle-ci, qu’en pensez-vous ?