Repertoire proteger

Wells
Invité n'ayant pas de compte PHPfrance

03 sept. 2006, 15:02

Bonjour, je cherche un truc tout con et impossible à trouver.

J'ai mit mes images dans un repertoire proteger par un htaccess. Bien sur sur mes pages si une image est présente il demande le mot de passe.

Qu'elle est la manip pour autoriser les images a s'afficher dans les pages, mais pas directement dans le dossier?

Merci a tous.

Wells

ViPHP
ViPHP | 2144 Messages

03 sept. 2006, 15:52

J'ai du mal à comprendre ce que tu veux faire: interdire l'accès aux images, mais autoriser leur affichage dans des pages ? C'est un peu contradictoire.
Si la personne voit l'image sur la page, c'est que son navigateur a pu télécharger l'image et donc à accès aux images :-k :-k

wells
Invité n'ayant pas de compte PHPfrance

03 sept. 2006, 15:55

En gros le but c d'interdire l'accés au repertorie des images pour diverses raisons mais qu'elles restent dispo sur les pages. je sais que c possible mais je connais pas la manip :(

ViPHP
ViPHP | 2144 Messages

03 sept. 2006, 16:14

oui, mais c'est quoi l'intérêt ? si tout le monde a accès aux pages qui affichent les images, ça ne sert à rien d'empêcher l'accès au dossier qui contient les images.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

03 sept. 2006, 16:51

Tu peux juste mettre une page index.html vide dans le dossier de tes images. Ainsi il est impossible de voir son contenu. Mais bien sûr si on connait le nom de l'image, on peut l'avoir quand même.

Invité
Invité n'ayant pas de compte PHPfrance

03 sept. 2006, 20:54

Sauf que il existe deja un index dans cette zone proteger. DOnc je ne peux pas passer par ca.

Il me faut aubligatoirement passé par acces.

ViPHP
ViPHP | 2291 Messages

04 sept. 2006, 00:05

En gros le but c d'interdire l'accés au repertorie des images pour diverses raisons mais qu'elles restent dispo sur les pages. je sais que c possible mais je connais pas la manip :(
L'image affichée est l'original ou une mignature ?
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

04 sept. 2006, 01:05

Juste un truc wells, ce serait cool d'essayer de foirer un peu moins de participes passé. Une astuce simple si tu hésites entre "er" et "é" : remplace le verbe par "mordre", si le résultat est "mordu" alors c'est un "é", sinon c'est l'infinitif du verbe.

Quant au reste... s'il y a un index.html dans le dossier alors il n'est pas possible de lister le contenu, assure-toi qu'il y a bien un fichier nommé "index.html" dans le dossier en question. (tu peux éventuellement essayer de le renommer "index.htm")

Avatar du membre
ViPHP
ViPHP | 3008 Messages

04 sept. 2006, 09:07

Je ne vois pas trop l'intérêt de ce que tu veux faire en fait. Avec l'index on ne peut pas lister ton répertoire, mais si tu cherches à protéger toutes tes images, il ne faut pas les mettre sur internet tout simplement.

Si sur d'autres pages tu utilises ces images, tout le monde peut les prendre...

ViPHP
ViPHP | 1380 Messages

04 sept. 2006, 10:03

En matière de protection d'images il n'y a effectivement pas de protection absolue. Mais on peut, par différentes techniques, arriver à un certain niveau de protection contre un utilisateur moyen.

Il faut travailler sur la variable serveur HTTP_REFERER.

Imagine que tes pages xxx.php ou yyy.html se trouvent dans le répertoire /test/ et tes images dans /test/images/

A mettre dans un .htaccess dans le répertoire /test/images/ :

Code : Tout sélectionner

# blocage sélectif de toutes les pages *.html et *.php sauf si page_ok existe # Allow from env=page_ok autorise l'accès si la variable page_ok existe SetEnvIf Referer "^http://ton-site/test/.*\.(php|html?)$" page_ok <FilesMatch \.(?i:gif|jpe?g|png)$> Order Deny,Allow Deny from all Allow from env=page_ok </FilesMatch>
Seules les images demandées depuis des pages *.php, *.htm ou *.html seront affichées. Si elles sont demandées directement avec l'URI directe http://ton-site/test/images/mon_image.gif elles seront bloquées.

Remarques:
  • Le HTTP_REFERER envoyé dans un header par le navigateur peut facilement être modifié par des "plug-ins", modules, extensions ou autres Widgets. Ceci ne constitue donc pas une protection absolue. C'est juste une dissuasion de base. Un peu comme si la porte d'entrée de ta maison était blindée et verrouillée mais la porte de derrière est restée ouverte!
  • Nécessite le module Apache env_module
ripat

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

04 sept. 2006, 10:23

Je t'encourage à poster une copie de ton message dans FAQ ripat ;)
Ce genre de technique mérite d'être gardée sous le coude.

ViPHP
ViPHP | 1380 Messages

04 sept. 2006, 10:47

Voilà, c'est fait.
http://www.phpfrance.com/forums/viewtopic.php?t=21963

Ce type de protection est, par contre, assez efficace pour lutter contre les webmasters sans scrupules qui insèrent des balises img pointant vers des images de notre propre site.

Si leur site est fortement consulté, notre forfait de bande passante explosera vite fait.
ripat

Eléphant du PHP | 113 Messages

04 sept. 2006, 17:06

Bonjour à tous et merci pour vos réponces.

Bon je reprend avec des explications plus claire car vous vous trompez de combats.

Je ne cherche pas a protéger contre la copie mes images. Le problème est le suivant, je gère un site de jeux. Il existe un répertoire image contenant les images de tt les bâtiments du jeux. Hors les joueurs ne sont pas censés savoir qu'ils existent sauf si ils ont fait les recherchent technologiques qui conviennent.

En d'autre terme il faut pouvoir afficher les images des bâtiments qu'ils connaissent, mais les empêcher de liste la totalité des images car ca leur donnerez trop d'infos sur le jeux.

Maintenant pourquoi je ne peux pas mettre d'index: le dossier image en question est dans une zone de gestion du jeux protéger par un htaccess. L'indes existe donc est ne doit pas être accessible au joueurs. Cette solution n'est donc pas envisageable.

La solution proposer ci dessus ne peux donc pas s'appliquer car le htaccess doit impérativement se trouver a la racine de cette zone protéger.
Voila si sa peut vous éclairer un peu plus sur le problème.

gusrcb
Invité n'ayant pas de compte PHPfrance

03 oct. 2006, 12:56

Je ne sais pas si la solution que je vais donner est acceptable mais j'essaye quand même.
Si il y a de quelconques problèmes toute remarque est la bienvenue :D

Mets un .htaccess dans le dossier des images -> plus d'accès au répertoire
Pour afficher les images il faut maintenant passer par un script php qui est "tout con" :

header('Content-Type: image/png');
readfile($image);

Ensuite il y a possibilité d'appeler le script php dans une balise html <img>

Voilà