Comment bloquer l’accès direct à vos images (hotlinking) avec htaccess

On peut le voir souvent, la plupart du temps venant d’un webmaster débutant qui n’est pas tout à fait conscient des conséquences de ce qu’il fait, ou des utilisateurs qui participent à des forums de discussion: certaines personnes vont faire un lien direct à l’addresse de vos images pour les afficher sur leur site, une action appelée en anglais hotlinking. Cette situation est fachante parce que ces sites extérieurs consomment la bande passante limitée de votre propre site, sans considération, en plus, pour vos droits d’auteur si vous êtes le créateur de ces images.

Il existe un façon de bloquer ce type d’activité avec htaccess. Voici le code, et l’explication suivra:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.example.com [NC]
RewriteRule \.(jpg|gif|png)$ - [F]

La partie RewriteEngine démarre une fonction d’Apache pour changer la façon dont il gère le système d’addressage de vos fichiers publics par rapport à son comportement par défaut. Ensuite, la petite fonction détermine si le référant (code du navigateur web qui indique d’où provient la requête) qui consulte vos fichiers provient réellement de votre site, dans notre démonstration, www.example.com, et dans le cas des fichiers dont l’extension se termine par jpg, gif ou png (le format typique des images publiées dans une page web), il bloquera l’accès ([F], pour Failed) si ce référant n’est pas votre site.

Cette fonction peut aussi être utilisée pour tout autre type de fichiers dont vous ne désirez pas un accès extérieur (les PDF, ou un document Word), en séparant l’extension du fichier avec la barre verticale |, qui signifie OU dans la logique de la fonction.

Toutefois, il arrive que certains visiteurs ne communiquent pas leur référant, par exemple, s’ils possèdent certains anti-virus ou certains firewall particulièrement paranoïaques. Cette portion de visiteurs est parfois assez significative pour qu’on modifie notre fonction, sinon ils ne verront pas vos images sur votre propre site. On ajoute la ligne suivante:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.example.com [NC]
RewriteRule \.(jpg|gif|png)$ - [F]

La nouvelle ligne au début signifie que si le navigateur web n’envoie pas le code référant (vide), d’afficher les images quand même.

On peut aussi donner la permission à d’autres sites d’afficher nos images (si, par exemple, vous avez un webmaster ami avec qui vous partagez ces images), de la façon suivante:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.example.com [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mon-copain.com [NC]
RewriteRule \.(jpg|gif|png)$ - [F]

La ligne supplémentaire donne la permission à votre copain, www.mon-copain.com, de faire des liens directs à vos images.

Comment débloquer un répertoire

Maintenant que votre site est bien protégé contre le hotlinking, quoi faire dans le cas ou vous voulez permettre le hotlinking de certaines images, comme dans le cas de bannières commerciales que les gens peuvent utiliser pour faire un lien vers votre site?

On va créer un répertoire spécifique et ajouter un fichier .htaccess à celui-ci seulement qui va en fait contredire les règles établies dans le fichier .htaccess principal, pour permettre l’accès à ce dossier exclusivement. Le terme anglais pour ce genre d’opération est le « white listing », ce qui veut dire littéralement, « mettre dans la liste blanche », l’opposé de « black listing », qui veut dire « mettre dans la liste noire ».

Créez un répertoire pour vos bannières commerciales, disons, bannieres, et ajouter vos images dans celui-ci. Ensuite, ajouter un nouveau fichier .htaccess dans ce même répertoire avec la règle suivante, qui annule les règles de black listing précédentes:

RewriteEngine on
RewriteRule ^.*$ -

Les images situées dans ce répertoire seront maintenant libres d’être liées directement par les webmasters qui font la promotion de votre site.

Voir aussi: La gestion d’un site avec .htaccess et ses fonctions de bases incontournables

6 thoughts on “Comment bloquer l’accès direct à vos images (hotlinking) avec htaccess

  1. Bonjour,
    Merci bcp pour toutes ces infos!
    petite question de debutante:
    Je viens de lire ton post sur comment securiser son wordpress.
    J’utilise WordPress et quelqu’un a piraté mon site pour balancer des cookies.
    penses tu que je dois vider mon site et tout reinstaller ou juste changer le mots de passe de ma base de données et suivre tes conseils ci dessous.
    Merci ^^

  2. Salut,Je viens de creer un site debutant.Mais je voudrais mettre quelques liens externes.MAIS JE VOUDRAIS QUE SI ON CLIQUE SUR CES LIENS JE VOUDRAIS QUE LES PAGES DE CES LIENS S`OUVRENT ENTRE MES MENUS VERTICAUX ET NON BARRER TOUT MON SITE.

  3. Bonjour, voilà je suis utilisateur de myspace et j’ai personnaliser ma page myspace avec divers images qui elle sont sur un serveur free.fr dans un rep nommé myspace et j’ai créer un fichier htaccess avec comme code ceci :

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://www.myspace.com/mon_nom_d’artiste [NC]
    RewriteRule \.(jpg|gif|png|swf)$ – [F]

    J’ai transferer le fichier dans mon myspace sur mon serveur mais voilà j’ai plus rien qui s’affiche sur ma page myspace plus d’image rien mais j’ai retrouvé une certaine fluidité sur ma page ce qui me laisse à penser que mes images sont utilisées ailleurs pouvez-vous m’aider pour la syntaxe du code, merci !

  4. comment rediriger un doc PDF en ligne vers une autre page html du site ?
    merci

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *