J'utilise Apache et j'ai un exemple de dossier Web sur mon hôte local, comme:
http://localhost/test/
Fichiers dans le dossier test
:
index.html
sample.jpg
.htaccess
Exemple de source de index.html
:
<html>
<body>
<img src="sample.jpg" />
</body>
</html>
Quand je lance le site web à http://localhost/test/
, cela affichera simplement l’image `sample.jpg 'sur la page.
Problème:
http://localhost/test/sample.jpg
directement dans la barre d’URL.Remarque: J'ai constaté que les solutions ci-dessous fonctionnent lorsqu'elles sont testées sur tous les navigateurs sauf Firefox.
Essayez ce qui suit:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
Renvoie 403, si vous accédez directement aux images, mais leur permet d'être affichées sur le site.
Remarque: Il est possible que lorsque vous ouvrez une page avec une image, puis que vous copiez le chemin de cette image dans la barre d'adresse, vous puissiez voir cette image, c'est uniquement à cause du cache du navigateur. pas été chargé à partir du serveur (de Davo, commentaire complet ci-dessous) .
la règle de Rosipov fonctionne très bien!
Je l'utilise sur des sites en direct pour afficher un message vide ou spécial;) à la place d'une tentative d'accès direct à des fichiers que je préfère protéger un peu de la vue directe. Je pense que c'est plus amusant qu'une 403 Forbidden.
Donc, en prenant la règle de rosipov pour rediriger n'importe quelle directe requête en {gif, jpg, js, txt} vers "messageforcurious":
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC]
RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L]
Je le vois comme un moyen poli d’interdire l’accès direct, par exemple, à un CMS fichiers sensibles comme xml, javascript ... avec la sécurité à l’esprit: à tous ces robots qui parcourent le Web de nos jours, je me demande quoi leur algo fera de mon 'message forcé'.
Tout d’abord, recherchez où se trouve le fichier de configuration principal d’Apache, httpd.conf. Si vous utilisez Debian, cela devrait être ici: /etc/Apache/httpd.conf
. En utilisant un éditeur de fichier comme Vim ou Nano, ouvrez ce fichier et trouvez la ligne qui se présente comme suit:
Options Includes Indexes FollowSymLinks MultiViews
puis supprimez Word Indexes et enregistrez le fichier. La ligne devrait ressembler à celle-ci:
Options Includes FollowSymLinks MultiViews
Ensuite, redémarrez Apache (par exemple, /etc/init.d/Apache restart dans Debian). C'est ça!
Selon vos commentaires, voici ce dont vous avez besoin:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]
Je l'ai testé sur mon hôte local et il semble bien fonctionner.
Lorsque je l'utilise sur mon serveur Web, puis-je renommer uniquement l'hôte local, comme ceci:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]