Il n'y a même pas de lien retour vers son propre site web, à moins que le voleur de contenu n'ait tout simplement copié-collé le contenu complet du texte source vers son site web. Il peut alors arriver que l'on ait créé quelque part un lien vers une autre contribution personnelle avec l'URL complète. Et ce lien est alors encore contenu dans le texte. Mais d'abord, respirez et first things first :
Qu'est-ce qu'un hotlink ?
Un hotlink est par exemple l'intégration d'une image par un lien direct vers l'URL existante. Sans télécharger l'image au préalable, la charger sur un espace web ou un serveur propre et la lier ensuite à partir de là.
Les hotlinks ne sont pas mauvais en général. Du moins, pas si le hotlinking a été convenu entre eux ou si l'on est un service de téléchargement d'images.
Dans la plupart des cas, on n'est toutefois pas un service de téléchargement d'images, mais simplement quelqu'un qui paie sagement son hébergement web chaque mois et qui a une certaine limite de trafic. Et c'est là que nous entrons dans le vif du sujet.
Si quelqu'un d'autre affiche sur sa page d'accueil des fichiers multimédias qui se trouvent sur votre serveur web, votre serveur sert chacune de ces requêtes étrangères, car c'est ce que font les serveurs. Ils servent.
Le voleur de contenu a maintenant une image gratuite sur son site web, pour laquelle aucun trafic n'est généré/facturé sur son propre serveur. Ce trafic (charge du serveur) est facturé à la personne volée, c'est-à-dire vous, et coûte des ressources de serveur : et ce à chaque fois qu'un visiteur surfe sur la page du voleur de contenu et que l'image s'affiche dans son navigateur Web.
Dans certaines circonstances, cela peut entraîner un trafic étranger incroyable. Cela dépend du trafic de visiteurs que le voleur de contenu a sur son site.
Ce n'est vraiment pas drôle.
Je voudrais vous montrer aujourd'hui comment configurer votre propre serveur web NGINX pour qu'il ne serve pas ces requêtes étrangères comme prévu, mais qu'il serve plutôt une autre image aux visiteurs du site web voleur de contenu.
En effet, vous pouvez ainsi inverser le préjudice supposé et en tirer profit, et si vous êtes vraiment en colère, vous pouvez encore donner un coup de pied au voleur : attirez les visiteurs sur votre propre site web !
Comment faire de NGINX un adversaire final de Hotlink invincible !
Voilà le plan :
- Nous voulons une solution globale qui fonctionne pour tous les domaines. De manière à ne pas devoir adapter chaque configuration vHost (sites-available).
- Le lien de demande doit être réécrit (rewrite) et ainsi servir à la place une certaine image différente à la page du voleur
- Il doit fonctionner avec Google Recherche d'images et d'autres moteurs de recherche avec fonction de recherche d'images, au lieu d'interdire globalement le hotlinking. Sinon, Google Recherche d'Images n'affichera plus vos images, mais seulement l'image d'échange.
Solution au vol d'images
Ces quelques lignes de code sont en fin de compte la solution au problème du vol d'images. Vous apprendrez dans la section suivante comment et où placer le code.
location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|swf)$ {
add_header "Access-Control-Allow-Origin" "*" ;
access_log off ;
log_not_found off ;
expires max ;
valid_referers none bloqué ~.google. ~.bing. ~.yahoo. ~.yandex. server_names ~($host) ;
if ($invalid_referer) {
rewrite (.*) /hotlink/achtung-inhalt-und-bilderklau.png redirect ;
}
}
#hotlink terminer la boucle de redirection
location = /hotlink/achtung-inhalts-und-bilderklau.png { }
Que fait le code ?
~
est utilisé pour tenir compte des majuscules et des minuscules, tandis que ~*
Majuscules et minuscules ignorées.
NGINX vérifie la règle de localisation dans l'ordre dans lequel les expressions régulières sont insérées. Cela signifie que les instructions d'en-tête de mise en cache des fichiers multimédias et les instructions de notre protection des hotlinks doivent se trouver dans le même bloc !
location = /hotlink/achtung-inhalt-und-bilderklau.png { }
est nécessaire pour éviter une boucle de transmission infinie lors de la nouvelle demande sur l'image d'échange :
Le site voleur d'images envoie une demande d'imageA → notre NGINX redirige la demande d'image d'échange → le site voleur d'images envoie une demande d'image d'échange → notre NGINX redirige la demande d'image d'échange, mais ne sert pas → et ainsi de suite...
$host
est une variable qui rend cette instruction utilisable globalement et fonctionne sous tous les domaines vHost sur le serveur web. L'URL suivante est affichée valablement pour chaque domaine : http://$host/hotlink/achtung-inhalts-und-bilderklau.png
Il suffit de créer sous chaque domaine le répertoire /hotlink
et un fichier image nommé : achtung-inhalt-et-image-vol.png
doit être placé dans ce répertoire. Vous pouvez nommer le fichier et le répertoire différemment si vous le souhaitez. Adaptez simplement le code en conséquence.
Comment intégrer la règle de localisation
Voici comment procéder pour équiper votre serveur web NGINX de cette protection spéciale des hotlinks contre le vol d'images.
Temps total : 30 minutes
Faire les préparatifs nécessaires : Créer et télécharger le graphique d'échange
Créez d'abord un graphique que les visiteurs du site web du voleur doivent voir et chargez-le dans le répertoire souhaité sur votre serveur web. Notez l'URL du graphique.
Personnaliser la configuration de NGINX Webserser locations
Sur votre serveur, naviguez maintenant dans le répertoire /etc/nginx/common/ et trouvez la configuration locations intégrée dans le bloc serveur de votre vhost, dans laquelle il existe des règles pour la location définie dans le code ci-dessus. En règle générale, il y aura déjà un bloc de règles existant pour la location mentionnée. Si ce n'est pas le cas, insérez simplement le code ci-dessus comme nouveau bloc de règles dans le bon fichier.
Si le bloc existe déjà, insérez uniquement les règles ci-dessus sans le locations wrap.
Enregistrer et recharger la configuration du serveur web NGINX
Enregistrez ensuite le fichier de configuration avec le bloc locations étendu sur le serveur et testez d'abord la nouvelle configuration via le terminal SSH avec nginx -t
Si le test s'est déroulé sans problème, redémarrez votre NGINX avec la commande service nginx restart.
Testez votre protection Hotlink !
J'ai écrit ici un outil qui vous permet de tester votre configuration de protection des hotlinks. Dans le champ de saisie, entrez l'URL directe d'une image sur votre serveur nginx. Dans le champ de sortie en dessous, votre image d'échange devrait alors s'afficher dans le meilleur des cas. Si l'image de l'URL saisie apparaît, vous devez contrôler à nouveau votre protection hotlink.
Si vous souhaitez effectuer le test plusieurs fois de suite pour la même URL d'image, vous devez effacer le cache de votre navigateur après chaque test et recharger cette page.
Vous avez encore des questions ? Alors n'hésitez pas à utiliser la fonction de commentaire en dessous de cet article !
Veuillez partager cet article sur votre page Facebook, via Twitter, Google+ ou toute autre plateforme sociale de votre choix. Vous trouverez les boutons de partage plus bas. Le partage est simple et rapide et cela me ferait très plaisir.
Un post super génial ! L'idée est vraiment simple 🙂 je trouve ça super. Je n'ai malheureusement jamais pensé à cela, car cela n'a jamais été un problème pour moi (cela pourrait être dû au contenu ;)).
Je suis également très étonné de lire quelque chose sur la configuration Nginx sur un site de front-end/design. De plus, WordPress a toujours été adapté à Apache, bien que certains plugins prennent désormais en charge Nginx et génèrent des configs au lieu de créer une htaccess Apache 😉.
Btw. je trouve aussi tes designs super ! *Les deux pouces levés* 🙂
Merci pour ce super feedback !
Pour être honnête, je pense que nginx est le "meilleur" et le plus rapide des serveurs web en interaction avec WordPress. Il suffit de faire une petite recherche sur le sujet sur Google. 🙂
Vers le commentaire frontal :
Je suis certes développeuse frontend, mais comme je me suis justement spécialisée dans WordPress, je pense que le php est incontournable et qu'à un moment donné, les questions relatives au serveur le sont aussi.
Merci encore !
Super article ! Où faut-il placer le code exactement ? Dans le htaccess à la racine du site web ? Ou dans un htaccess séparé dans le répertoire des images ? Merci beaucoup !
Salut Frank !
Si tu utilises un serveur web nginx, le .htaccess n'est pas exploité ; autrement dit, un serveur web nginx ne peut rien faire avec les fichiers .htaccess.
Les fichiers .htaccess sont utilisés en interaction avec les serveurs web Apache.
Le code mentionné ci-dessus est généralement utilisé globalement dans le fichier locations.conf d'un serveur web nginx situé dans le répertoire serveur /etc/nginx/common/.
Il est important de regarder attentivement la configuration de ton propre serveur dans le fichier locations.conf. S'il existe déjà une règle de localisation pour le lieu mentionné ci-dessus, tu dois l'adapter à l'aide du code ci-dessus ; sinon, comme mentionné, il suffit de l'insérer, de l'enregistrer et de lancer la nouvelle configuration de nginx avec la commande terminal
nginx -t
vérifier brièvement. Si nginx indique dans le terminal que tout va bien, tu peux utiliser la commandeservice nginx restart
redémarrer le serveur web et charger ainsi la nouvelle configuration.Bonne chance !
Merci et désolé... j'avais oublié Nginx dans le titre. Je cherche pour ma boutique Magento sur un Apache une protection de hotlink qui fonctionne, si possible sans pénalisation de Google.
Salut Frank !
Pour un équivalent Apache, essaie de mettre ce qui suit dans ton fichier .htaccess dans le répertoire root de ton site :
1ère variante (si tu souhaites interdire de manière générale le hotlinking des fichiers image, mais autoriser le hotlinking de certains domaines (par exemple google.*, bing.*, yahoo.*, yandex.*, duckduckgo.*, etc :)
2. si tu veux bloquer le hotlinking uniquement pour certains référents (domaines malveillants) :
J'espère que cela t'aidera
Salutations
Saskia
Qui connaît une protection de hotlink pour bmbfotos.com ?
pour cette page, rien ne fonctionne
Bonjour "Müller" !
Par exemple, quelles sont les images du site web mentionné qui sont liées ?
On pourra peut-être vous aider.
Salutations
Saskia Lund
Peut-on bloquer un seul domaine ? Par réécriture ?