Empêcher le hotlinking des images sur votre serveur Web

closeCet article a été publié il y a 7 ans 2 mois 3 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Petite bricole pour ceux qui voudraient éviter qu’on se serve directement de leurs images sur des sites externes. Non pas que la pratique soit illégale en soi, mais surtout peu respectueuse. D’ailleurs, c’est quoi le hotlinking ?

Concept

Le hotlinking, c’est le fait, sur un site, d’appeler directement un contenu, typiquement une image, qui provient d’un autre site. Et on ne parle pas de copie, mais bien d’emplacement physique. En soi, c’est pas choquant, le Web est conçu pour permettre ça. Par exemple, tous les sites qui font appel à des font Google les chargent directement depuis le site du géant, et pas une copie qui est hébergée avec le reste du site (sans si vous faites comme moi, encore merci Laurent).

Mais d’une part, notamment dans le cadre d’un travail créatif, on sort la création du contexte dans laquelle on l’a peut-être placée, d’autre part, c’est souvent fait sans demander l’autorisation, ce qui est un minimum de savoir-vivre (par exemple je le fais pour les traductions). Et donc il n’est pas rare que l’on veuille chercher à réduire ou empêcher cette pratique.

Apache le vénérable

Je vais me permettre de reprendre la technique que présente lepouf. Pourquoi ? Simplement pouvoir comparer puisque je vais également présenter la version « du concurrent » :

C’est simple pour qui a l’habitude des règles de réécriture Apache, mais ça a l’air assez indigeste.

Nginx l’outsider

La syntaxe d’Apache a beau être puissante, elle est diablement lourde à écrire, et parfois, Nginx permet de faire plus élégant et//ou plus efficace en terme d’écriture ou de performances. Voyons donc comment s’y prendre :

Moi j’aime mieux personnellement, mais après, les goûts et les couleurs…

Comment ça fonctionne dans les deux cas ?

Soit vous êtes bête et vous copiez-collez simplement ce que vous trouvez, soit vous cherchez un peu à comprendre ce que c’est censé faire. Simple : lorsqu’on visite un site, la première chose qu’on charge, c’est le contenu de la page. Tous les appels, et notamment ceux aux images, seront accompagné de ce qu’on appelle en bon anglais un referer, qui est une information qu’envoie votre navigateur pour prévenir d’où il vient.

Il n’est pas question ici de discuter du débat sur « mon navigateur devrait-il masquer cette information ? », ici, on s’en sert simplement pour vérifier et surtout valider la provenance d’un client qui appelle l’image. Si l’on vient d’un autre site et que l’image est appelée en direct, le referer sera l’autre site et pas le notre. Dans ce cas, on renvoie donc vers un contenu que je vous laisse apprécier. Et dans l’exemple, il a été décidé de conserver l’accès pour les moteurs de recherche pour ne pas impacter l’indexation des images.

Mais vous n’êtes pas obligés de le faire hein 🙂

 

4 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Le Hollandais Volant
15/02/2017 21:23

À noter quand même que l’image vers qui on dirige l’internaute ne doit pas lui-même tomber sous le coup des règles de blocage, sinon il sera lui également bloqué et donc au final on ne verra rien.

La solution est soit de bloquer toutes les images sauf celle là, soit d’héberger l’image en question sur un autre domaine (ou un sous domaine, en tout cas là où le .htaccess ne l’impacte pas).

Denis
16/02/2017 07:18

Je n’en vois pas l’intérêt sur la plan SEO.

StealthBoy
StealthBoy
16/02/2017 08:00
Répondre à  Denis

Il y a pas vraiment d’intérêt sur le plan SEO mais le hotlinking peut être un vecteur d’attaque, un site avec de nombreux visiteurs peut en faire couler un plus petit avec un nombre important de requêtes. On a déjà pu voir les effets à plusieurs reprises dans le monde du P2P, certains trackers torrent rivaux s’en donne à coeur joie avec cette technique. C’est utile de savoir comment parer ce type d’attaque sans compromettre le reste du traffic qui lui est légitime.

Denis
19/02/2017 14:59
Répondre à  StealthBoy

1. De mon point de vue, c’est la source de la requête – host ou referer – qui doit être filtrée.

2. L’une des 1ères choses que nous faisons sur le plan du Web Analytics, c’est de désactiver les statistiques sur les images.

3. Et puis, il y a la mise en cache des images qui garantit un faible niveau de consommation de ressources.