jeudi 3 Mai 2012

Interdire le vol d'image ou hotlinking

PHPVous le savez sur Internet les images s'utilisent comme si elles étaient libres de droit et même souvent directement depuis le site créateur de l'image. Un site peu donc afficher une image qui est hébergé sur votre serveur et utiliser votre propre bande passante au lieu de la sienne. :-(

Si cette méthode peut être acceptable lorsque le vol vient de l'utilisateur d'un forum, c'est intolérable lorsque cela vient du rédacteur d'un site important, parfois faisant bien plus de trafic que le votre et pouvant mettre votre serveur à genoux!

~

Vous pouvez bloquer avec un fichier .htaccess certains utilisateurs, certaines adresses IP, et même certains référants, ce qui nous intéresse ici. Ceci est fait avec le module Rewrite, votre serveur doit donc avoir la réécriture d'URL installée.

Il vous faudra prévoir:

  • une image très légère, indiquant que vous refusez l'utilisation de votre bande passante (exemple),
  • un fichier PHP, plus sévère, renvoyant un code d'erreur 401, ce qui demandera à tous les visiteurs de votre voleur un mot de passe pour afficher l'image (exemple),
  • ou les deux pour "punir" plus ou moins les différents référants.

~

Voici un exemple comportant les deux situations, avec une image d'interdiction pour des forums et un méchant message d'erreur pour les 2 autres exemples:


# Contre le vol d'images
RewriteCond %{HTTP_REFERER} ^http://.+/viewtopic.php [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://forum\.example\.net/ [NC]
RewriteRule .*\.(jpeg|png)$ images/azurdev/interdit.png
 
RewriteCond %{HTTP_REFERER} ^http://blog\.example\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://www\.example\.org/ [NC]
RewriteRule .*\.(jpeg|png)$ images/azurdev/interdit.php

~

Les adresses sont des expressions régulières. N'oubliez pas le OR pour tous sauf le dernier!

Il ne vous reste plus qu'à repérer, dans vos statistiques de visites, les usages extérieurs de vos images. Par exemple avec AWstats, dans la page des référants, ce sont les sites comptabilisant des visites (hits) mais aucune page vue.

Une méthode plus violente consisterait à bloquer systématiquement tous les sites autre que le votre. Cette solution ne doit être envisagée qu'en dernier recours, si vous n'en pouvez plus! En effet, certains visiteurs ont leur navigateur ou leur anti-virus configuré pour bloquer le référant. Ceux-là ne verraient donc aucune image de votre site. ;-)

~

Et comme c'est mon jour de bonté, voici le contenu du fichier interdit.php qui affichera la méchante demande d'identification:


<?php
header('WWW-Authenticate: Basic realm="Une image de cette page a été prise sans autorisation sur http://azur-dev.kiao.org/ (abusive use of our content/hotlinking issue)"');
header('HTTP/1.0 401 Unauthorized');
?>


café Cet article vous a aidé? 
Offrez-moi un café!
Agrégateur informatique

Laisser un commentaire

Azur Dev