Hébergement de sites web

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:

1
2
3
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:

1
2
3
4
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:

1
2
3
4
5
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:

1
2
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

Catégories: Gestion de site web |

Laisser un commentaire

Vous devez être connecté pour publier un commentaire.