J'essaie d'écrire le .htaccess "ultime" anti liaison à chaud ...
Vous pouvez trouver de nombreux exemples / tutoriels / générateurs sur le net mais beaucoup d'entre eux sont faux ou incomplets (ou même les deux).
Ce sont les fonctionnalités que je recherche:
- Doit bloquer la liaison à chaud pour une liste d'extensions de fichiers lorsque HTTP_REFERER est un site étranger.
- Doit autoriser la liaison à chaud pour le domaine actuel (duh) sans le coder dans le .htaccess.
- Pour le domaine actuel, il doit fonctionner sous http et https.
- Pour le domaine actuel, il doit fonctionner avec www et sans www.
- Doit pouvoir ajouter des domaines d'exceptions à ces règles (comme notre ami Google) et ces domaines doivent fonctionner sous http et https et avec www ou sans www.
Voici ce que j'ai réalisé jusqu'à présent:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
Mes questions:
- Comment éviter de coder
mydomain.com
en dur dans le .htaccess? (Ce serait formidable de pouvoir déployer ce .htaccess sur tous mes domaines sans avoir à le modifier pour chacun d'eux.) - Dans mon RewriteRule,
gif|jpe?g|png|zipx?
est équivalent àgif|jpg|jpeg|png|zip|zipx
vrai? (Désolé encore nouveau pour les expressions régulières.) - Voyez-vous quelque chose de mauvais dans mon .htaccess que je ne connais pas?
Pour # 1, je sais que c'est quelque peu possible. Le plus proche que j'ai trouvé est cet extrait qui supprime le www de l'URL sans coder en dur le domaine. Existe-t-il un moyen d'utiliser cette méthode pour ma question n ° 1?
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
Mise à jour:
Je connais des solutions qui serviront une image en filigrane au lieu de la normale. Mais je ne cherche pas ce genre de solution. Je veux une solution universelle (servir 403 erreurs) qui fonctionnera pour tout type de fichiers binaires (zip, exe, iso, jpg, png, gif ...).
Réponses:
Peu importe ce que vous faites, vous «gaspillerez» les cycles de l'UC (pour déterminer si le site référent (celui qui fait le lien) est autorisé ou non, vous devez effectuer un certain traitement des données de la demande).
La seule chose que vous pouvez faire est d'économiser de la bande passante tout en gaspillant un minimum de cycles CPU.
Il y a quelques exemples dans les Apache Docs qui font exactement ce que vous voulez. Celui-là:
semble être le plus applicable (et ne nécessite pas le poids total de mod_rewrite).
Vous pouvez ajouter des référents valides supplémentaires avec des directives supplémentaires
SetEnvIf
etAllow
.la source
%{HTTP_HOST}
pour une analyse syntaxique moins régulière) pour insérer l'hôte de l'URL dans votre ensemble de règles, ce qui devrait vous acheter des domaines locaux dynamiques (tester intensivement), mais vous auriez encore besoin de dur -code "gentils" référents externes comme Google (par référent, agent utilisateur, IP, etc.)Que diriez-vous d'écrire une règle qui, si le référent est inconnu (d'interdit), appelez simplement un fichier Php où vous passez l'image en tant que paramètre, et dans le fichier Php, mettez simplement en gros rouge: "ce fichier vient de MYWEBSITE.COM et n'a pas d'autorisation officielle pour apparaître ici ".
Quant à votre question, rendez votre règle globale. Corrigez-moi si je me trompe, mais si la règle est déclarée avant tout vhost, elle sera appliquée sur tous les vhost (sorte de "règle par défaut").
Et une autre idée est simple: il suffit de rediriger vers un fichier Php (ici
filter.php
) qui va chercher dans le site Web autorisé et retourner le fichier requis si tout va bien:En
filter.php
chargeant simplement dynamiquement une liste de vhost ou quelque chose comme ça:la source
Cloudflare peut vous être d'une certaine utilité: http://www.cloudflare.com
Cela ne fonctionne cependant que pour les images, mais cela semble être ce que vous recherchez.
Protection Hotlink
Activez automatiquement la protection par lien hypertexte pour vos images pour éviter les liens hors site. Les référents qui ne sont pas dans la zone et qui ne sont pas vides se verront refuser l'accès. Les extensions de fichiers prises en charge sont gif, ico, jpg, jpeg et png.
Protégé: http://mydomain.com/images/pic.jpg Pour contourner: http://mydomain.com/images/hotlink-ok/pic.jpg
la source
question 1:
question 2:
question 3
la source
Ou utiliser CoralCDN ant let folk hotlink vers le contenu de leur cœur?
la source