htaccess:cmt empecher d'afficher 1 image par chemin complet dans URL

htaccess:cmt empecher d'afficher 1 image par chemin complet dans URL - Divers - Programmation

Marsh Posté le 25-01-2008 à 18:45:11    

bonjour,
 
Mon probleme surement tres classique est le suivant:
 
j'ai pour un site web un sous dossier [i]images contenant des images (extension que vous voulez, gif par exemple)
a la racine, des pages html, chacune contiennent des balises <IMG> appelant les fichiers adaptés dans le sous dossier qui contient les images
 
je suis conscient qu'une fois une page html affichée chez le client, l'image est dans son cache
 
Je voudrais que mes pages html s'affichent normalement avec les images
Mais si une personne tappe dans son URL directement une URL du genre
 
http://www.monsite.fr/images/nom_image.gif
 
que l'image ne s'affiche pas sur son ecran
 
à la place soit:
-redirigé sur page d'accueil de mon site
-affichage d'une page erreur
- ou autre chose (qui ne soit pas l'affichage de nom_image.gif)
 
ou si vous préférez l'image s'affiche parce que le visiteur a suivi les liens et l'enchainement de mes pages html qui permettent l'affichage de cette image
 
 
J'ai lu beaucoup de choses, entre autre sur le mod rewrite de htaccess, des forums des tutoriels, le manuel Apache.... j'ai aussi fait beaucoup de tests différents avec un .htaccess et rien ne fait ce que je veux
 
 
Est ce que mon problème est réalisable?
si oui avec un .htaccess?
je suppose que il se placerait à la racine? ou bien dans le sous dossier image? ou en faut il deux peut etre?
 
 
ci apres celui que j'ai ecrit a titre indicatif qui ne fonctionne pas trop bien (mais de ce que j'ai compris recement, il ne bloquerait que les pages d'un autre site de faire des liens sur mes fichiers, c'est bien, mais c'est pas exactment ce que je voudrais)
 
Options -Indexes
RewriteEngine On  
RewriteCond %{HTTP_REFERER} !^$  
RewriteCond %{HTTP_REFERER} !^http://www.monsite.fr/.*$ [NC]
RewriteRule .*\.(gif|JPG|png|jpe?g)$ http://www.monsite.fr [R,L]

Reply

Marsh Posté le 25-01-2008 à 18:45:11   

Reply

Marsh Posté le 29-01-2008 à 15:23:30    

up!

Reply

Marsh Posté le 30-01-2008 à 11:52:46    

up!

Reply

Marsh Posté le 31-01-2008 à 19:04:14    

up!

Reply

Marsh Posté le 22-02-2008 à 16:02:30    

Est ce que mon probleme est insolvable?
 
Est ce que on peut pas le traiter avec un .htaccess?
 
Personne n'a idée? je pensais que c'etait un probleme tres courrant et assez classique qui se pose assez vite lorsqu'on met en place un site
 
Personne n'a jamais eu ce probleme a résoudre?

Reply

Marsh Posté le 22-02-2008 à 16:08:37    

On peut interdire l'affichage d'images assez simplement en fonction de se qu'il y a dans le referer.
 
Mais comme le referer n'est pas très fiable, vaut mieux autoriser un referer vide. C'est ce qui se passe quand on tape l'image dans la barre d'adresse, le navigateur envoie un referer vide.
 
Ce que t'essaye de faire donc risque de poser beaucoups de problèmes, pour pas grand interêt au final. Quel est le réel problème ?

Reply

Marsh Posté le 22-02-2008 à 17:59:30    

le problème réel est le suivant
 
les images, photos, logo ect... sont organisés et rangés dans une sous arborescence de la racine sur laquelle pointe la page d'accueil
 
l'une des pages annexes du site sert d'outil de travail pour un nombre restreint de personnes qui par se biais répètent leurs chanson qu'ils chantent ensuite ensemble en privé
 
Ces personnes ne composent pas ils reprennent des textes et musiques non libre de droit, tant que c'est sans remunération et dans un lieu privé la loi le leur permet, et ils utilisent des partitions qu'ils ont achetées et qu'ils utilisent pour leur usage personnel
 
Ces partitions, pour apparaitre sur le site dans la page qui leur est reservée sont scannées et son informatiquement parlant des images
 
MAIS Internet est et est considéré comme un espace publique même si l'url n'est pas diffusée qu'à un cercle restreint
 
Pour rester conforme avec ce que la loi permet j'ai mis en place en amont de cette page en php et mysql une authentification par mot de passe.  
 
Par contre en connaissant l'arborescence, on peut directement mettre le nom du fichier dans l'urlet accéder aux dites partition par exemple en ayant contourné l'authentification par mot de passe
 
c'est le probleme d'origine que je souhaite finalement généraliser si on sait faire a l'ensemble des images utiliser sur le site, non pas pour empecher quelqu'un de la prendre puisqu'elles se chargent en cache c'est impossible a bloquer mais pour au moins restreindre l'acces aux seuls passages sur les pages html et php qui les utlisent
 
pour ce qui concerne plus particulierement les partitions elles apparraissent dans des pages qui leurs sont propres en sur impression de la page d'appel (sorte de pop up si on veut), un solution serait de transmettre la clée d'authentification générée a toutes les pages mais ca me complique le travail, j'aurrais souhaiter de rien changer au code et juste interdire l'acces au sous dossier qui continent les dites images lorsqu'on inscrit direct dans l'url le nom du fichier et son chemin
 
 
 
j'ai mis plus haut le htaccess que j'avais commencé, quelle ligne faudrait rajouter pour un HTTP_REFERER vide comme tu me parles?

Reply

Marsh Posté le 24-02-2008 à 13:23:40    

Le problème est différent.

 

Il faut que tous les fichiers ne soient pas téléchargeables directement, mais doivent passer par un script PHP.

 

Genre t'as un fichier /pouet/mp3/bidule.mp3

 

T'interdit tout accès au dossier /pouet/mp3. Ensuite tu fait un script genre "fichier.php" qui prend en paramètre un fichier à ouvrir, genre "fichier.php?fichier=/pouet/mp3/bidule.mp3".

 

Dans ce fichier, tu peux alors tester si l'utilisateur est connecté. Ensuite tu envoi le fichier, à ce niveau là l'interdiction du dossier ne s'applique pas.

 

C'est le seul moyen de faire ce que tu veux de manière fiable : autoriser le téléchargement de fichiers que pour les utilisateurs connectés, il faut donc bypasser Apache et faire ça à la main en PHP


Message édité par FlorentG le 24-02-2008 à 13:23:52
Reply

Marsh Posté le 24-02-2008 à 14:28:52    

j'ai fait ce script fichier.php qui verifie si l'utilisateur est passé par l'authentification
 
une clé est générée elle est passée en parmetre des différentes pages qui peuvent etre accessible que par authentification
 
ce script est mis en debut de chaque page.php
 
en effet je peux le rajouter sur chacune des pages qui affiche une image partition (idem pour les autres ressources, mp3....) mais justement je voulais eviter d'avoir a faire ca et tester le referer dans un htaccess
 
De de ce que je comprends de ta réponse,je vais pas y échaper
 
quel est le probleme avec la fiabilité du http_referer?
est ce que c'est que ca réagit pas de la meme facon suivant les navigateurs?

Reply

Marsh Posté le 24-02-2008 à 14:40:16    

Le referer peut être vide, mais aussi modifié à la main sans problème. Donc quelqu'un qui voudrait récupérer les fichiers peut le faire sans grande difficulté.

Reply

Marsh Posté le 24-02-2008 à 14:40:16   

Reply

Marsh Posté le 24-02-2008 à 15:03:52    

OK je comprends qu'on puisse le modifier et leurrer le systeme
 
mais cette condition que j'avais mis dans mon htaccess
 
RewriteCond %{HTTP_REFERER} !^$
 
ne testait t'elle pas justement un referer vide?
 
meme sans essayer de tromper le truc ca avait pas l'air de fonctionner
le htaccess que j'avais ecrit

Reply

Marsh Posté le 28-02-2008 à 21:32:38    

tintin34 a écrit :

RewriteCond %{HTTP_REFERER} !^$
 
ne testait t'elle pas justement un referer vide?


 
Sans essayer de tromper les règles du fichier htaccess, pourquoi les règles que j'avais écrit ne fonctionnent elles pas? comment en fait faudrait il réécrire ces règles pour que ca bloque dans les conditions d'utulisations "normales" (sans essayer de modifier le referer en douce pour tromper le truc)

Reply

Marsh Posté le 03-03-2008 à 15:28:55    

up!

Reply

Marsh Posté le 05-03-2008 à 20:07:03    

MED365
 
je viens de trouver dans ma boite aux lettres une notification comme quoi tu avais participé a ce sujet, le 26/02 , mais le message ne s'est pas affiché, je n'ai donc jamais pu le lire

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed