Empecher le hotlinking sur son site

Posté le 10 Avr, 2008 dans hebergement, truc astuce | 0 commentaires

Le hotlinking est pour faire simple le fait d’utiliser du contenu (souvent des images) hébérgé sur le serveur d’une autre personne pour l’insérer sur son site.
Typiquement au lieu d’enregistrer l’image sur votre serveur, vous utilisez la bande passante du site sur lesquel vous avez récupéré une image.

Pour ne pas se faire hotlinker, il existe une solution simple: Le .htaccess.
L’idée est e se baser sur le refereur, si c’est un site ami, apache fournit l’image sinon il peut soit fournir une image de remplacement (assez sympa a mettre en place 🙂 ) soit interdire l’accès a l’image (403)

Testez si votre site peut être hotlinké:
http://altlab.com/

Sous Apache

Pour servir une autre image:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?monsite\.com/ [NC]
# autorise le référencement par des bots de moteurs de recherche !
RewriteCond %{HTTP_USER_AGENT} !^Googlebot [NC]
RewriteCond %{HTTP_USER_AGENT} !^Googlebot-Image [NC]
RewriteCond %{HTTP_USER_AGENT} !^Googlebot-Mobile [NC]
RewriteCond %{HTTP_USER_AGENT} !^Msnbot [NC]
RewriteCond %{HTTP_USER_AGENT} !^Slurp [NC]
RewriteCond %{HTTP_USER_AGENT} !^Mediapartners-Google [NC]
#On conserve ceux qui n'ont pas de referer
RewriteCond %{HTTP_REFERER} !^$
#pour google image à décommenter
#RewriteCond %{HTTP_REFERER} !^http://.*google\.(com¦(co\.)?[a-z]{2})/

RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpeg [L]

La version ciblée pour interdire uniquement certains domaines:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?domaine_a_interdire_1\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?domaine_a_interdire_2/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?domaine_a_interdire_3\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L]

Si vous souhaitez retourner une erreur plutôt que d’afficher une autre image remplacez la dernière ligne par:

RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]

Sous lighttpd

Avec light, il n’y a pas de gestion de .htaccess, il faut donc éditer le fichier de configuration: lighttpd.conf
et y insérer quelque chose comme ceci:
Pour n’autoriser que certains domaines et les bots

$HTTP["referer"] !~ "^($|http://.*\.(domaine1\.com|^$|google\.*|yahoo\.*))" {
$HTTP["useragent"] !~ "msnbot-media" {
$HTTP["useragent"] !~ "Mediapartners-Google" {
$HTTP["useragent"] !~ "Yahoo-MMCrawler" {
$HTTP["useragent"] !~ "FeedBurner" {
url.access-deny = ( ".jpg", ".jpeg", ".png", "png", ".gif", ".avg", ".mpeg" )
}}}}}

Pour interdire certains domaines en particulier

$HTTP["referer"] =~ "^($|http://.*\.(domaine1\.com|domaine2\.com))" {
        url.access-deny = ( "" )
#      url.access-deny = ( "jpg", "png", "js", "jpeg", "gif", ".avg", ".mpeg" )
}

Commenter le premier url.access-deny si vous souhaitez n’interdir que les images (et decommentez le second)

Un générateur de .htaccess spécial anti hotlinking:
http://www.htmlbasix.com/disablehotlinking.shtml

Commentaires fermés

Désolé les commentaires sont désactivés sur cet article.