Apache : prévenir le vol d’images par hotlinking

GhostBuster

J’ai récemment eu affaire à des voleurs de contenu et après avoir contacté le service des abus de MSN, j’ai reçue une réponse pré-formattée comme quoi il fallait que j’envoie tous les justificatifs et tous les détails prouvant mon identité à Microsoft par courrier postal.

Mais bien sûr… et la marmotte…

Étant donné que je n’allais recevoir aucune aide de leur part, j’ai retroussé mes manches et me suis appliqué à trouver une solution.

Qu’est-ce que le hotlinking des images ?

Le hotlinking des images, parfois appelé “leeching”, “piggy-backing” ou “inline linking”, est une pratique qui consiste à intégrer une image sur un site web en utilisant une URL directe qui charge l’image à partir du serveur d’un autre site. Cela signifie que chaque fois que la page est chargée, l’image est téléchargée depuis le serveur externe, non pas celui sur lequel réside la page web.

Cette méthode peut sembler pratique pour économiser de l’espace de stockage ou éviter le téléchargement et le rechargement d’images. Cependant, elle a plusieurs conséquences négatives, tant pour le site qui héberge l’image que pour celui qui l’intègre.

  1. Consommation de bande passante : Le principal inconvénient du hotlinking est qu’il consomme la bande passante du site hébergeant l’image sans lui apporter de trafic direct. Ceci peut entraîner des coûts supplémentaires pour le propriétaire du serveur, surtout si son site est populaire ou si l’image devient virale.
  2. Problèmes de performance : Si plusieurs sites hotlinkent une image d’un même serveur, cela peut ralentir significativement la vitesse de chargement du site hébergeant l’image, impactant ainsi l’expérience utilisateur sur ce site.
  3. Perte de contrôle sur le contenu : Le propriétaire du site hébergeant l’image perd le contrôle sur où et comment son image est utilisée. Cela peut poser des problèmes de droits d’auteur et d’image de marque.
  4. Problèmes de référencement : Les moteurs de recherche peuvent pénaliser les sites qui pratiquent le hotlinking, car cela peut être interprété comme du contenu dupliqué ou une pratique malveillante.

Pour se protéger contre le hotlinking, les propriétaires de sites web peuvent utiliser diverses techniques. L’une des plus courantes est la modification du fichier .htaccess pour bloquer les demandes de hotlinking. Ils peuvent également utiliser des scripts côté serveur pour détecter et empêcher le hotlinking ou opter pour des services de CDN (Content Delivery Network) qui offrent une protection intégrée contre le hotlinking.

En résumé, bien que le hotlinking puisse sembler une solution facile pour intégrer des images, ses conséquences en termes de coûts, de performance, de contrôle du contenu et de référencement en font une pratique à éviter pour les webmasters soucieux de la qualité et de l’intégrité de leurs sites web.

Empêcher le hotlinking des images sous Apache, avec .htaccess

Tout d’abord, j’ai revu le code .htaccess qui était censé prévenir le hotlinking mais qui visiblement ne fonctionnait pas : j’ai laissé tomber les règles mod_rewrite pour SetEnvIfNoCase, beaucoup plus efficace :

# Script Name  : Enhanced Hotlink Prevention
# Script Author : Matt Biscay
# Script URL:      https://www.skyminds.net/prevenir-le-vol-dimages-par-hotlinking/
# Author URL:     https://mattbiscay.com 

# Set an environment variable 'local_referal' for requests from your own domain
# and for requests with no referer. The regex now covers both HTTP and HTTPS.
SetEnvIfNoCase Referer "^https?://www\.example\.com" local_referal
SetEnvIfNoCase Referer "^$" local_referal

<FilesMatch "\.(gif|jpe?g|png|webp|svg|avif)$">
    # First, deny all requests for specified image files...
    Order Deny,Allow
    Deny from all
    # ...then allow requests that have 'local_referal' set
    Allow from env=local_referal
</FilesMatch>

# Custom error document for 403 Forbidden responses
ErrorDocument 403 /403.shtml
Code language: PHP (php)

Changez l’adresse du site à la ligne 11. Puis, à la dernière ligne, renvoyez bien vers votre page 403.

Si vous utilisez NginX, voici comment empêcher le hotlinking dans votre server block NginX.

Explications

Comme les indélicats copient le code HTML des textes avec l’adresse des images, ils affichent de ce fait mes images sur leur site, ce qui ne leur coûte rien mais qui gaspille ma bande passante. Que je paye chaque mois.

L’astuce consiste donc à vérifier que la page qui fait appel aux images réside sur mon domaine. Dans le cas contraire, l’indélicat voleur reçoit une erreur 403 : les images ne s’affichent plus sur son site et notre bande passante n’est plus inutilement gaspillée. Résultat : happy webmaster :)

Non mis en place ici mais cela pourra en intéresser quelques uns : Smarter Image Hotlinking Prevention.

Hotlink Tests and Tools

Envie d'ajouter des fonctionnalités exceptionnelles à votre site WordPress ou WooCommerce? Je suis là pour vous aider.

Explorons les possibilités ensemble »

Articles conseillés :

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête et vous pensez que je pourrais vous aider à le concrétiser ? N'hésitez pas à me contacter, je serais ravi de discuter avec vous de votre projet !

2 pensées sur “Apache : prévenir le vol d’images par hotlinking”

Opinions