Protection contre le hotlinking avec Varnish

Voici un exemple de condition à ajouter dans votre vcl recv pour protéger un dossier d’un site :

if (req.http.host == "le.domaine.a.proteger.ltd" && req.url ~ "^/l/uri/a/proteger" && (req.http.referer && req.http.referer !~ "^http://le.domaine.a.proteger.ltd/")) {
    error 403 "No hotlinking please";
}

Remplacer :

  • le.domaine.a.proteger.ltd par le domaine (attention si votre site est accessible avec et sans www)
  • /l/uri/a/proteger : par l’uri à protéger, supprimer cette partie si vous voulez protéger l’intégralité du site

Pour mettre en place le même type de protection via apache, voir cet article : Un htaccess pour les pompeurs de sites dans lequel est expliqué comment procéder avec des règles de réécriture Apache

[Lire]

Un htaccess pour les pompeurs de sites

De manière globale en retournant un accès interdit

SetEnvIfNoCase Referer "^http://notes.depad.fr/" local_ref=1
Order Allow,Deny
Allow from env=local_ref

Ou de manière plus subtile en y mettant plusieurs conditions

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?notes.depad.fr(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?google.(fr|de|com|ca)(/)?.*$ [NC]
RewriteRule .*.(gif|png|jpg|jpeg|pdf|doc|wav|bmp|avi|mpg|mpeg|mp3|zip|rar)$ /nohotlink.png [R,NC]

Si vous avez mis en place un cache Varnish en amont, consulter cet article : Protection contre le hotlinking avec Varnish