fichier .HTACCESS

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fichier .HTACCESS

par Sékiltoyai » 25 mai 2007, 07:48

Je retiens. Il y a tant de fonctions de lecture de fichiers et de flux qu'on ne sait jamais lesquelles utiliser :)

par Hubert Roksor » 25 mai 2007, 02:24

Sauf si j'ai raté un truc, tu peux remplacer fopen()/fread() par readfile() pour de meilleures performances.

par Sékiltoyai » 23 mai 2007, 20:43

Voila la solution que j'ai proposé il y a quelques jours sur un autre forum :
A vrai dire il n'y a pas de solution magique pour faire ca, juste des erzartz de solution.
La solution que tu as trouvé empèche à la personne qui tappe l'adresse de l'image d'y accéder si elle ne vient pas de ton site. Mais la limite est que le referer est parfaitement modifiable et donc n'est pas totalement fiable. De même, les navigateurs placent les images en cache pour accélérer la navigation. Par contre c'est efficace contre les sites qui veulent lier une image de ton site sur le leur, puisque il faudrait que l'internaute qui navigue sur leur site modifie le referer s'ils veulent accéder à l'image, ce qui n'est pas concevable.

Ce que tu peux faire pour limiter le téléchargement et la liaison de tes images sur les autres sites, c'est de combiner toutes les protections.
Tout d'abord il faut interdire l'acces à ton dossier d'images :
Fichier ".htaccess" :

Code : Tout sélectionner

Order Deny,Allow Deny From All
Ensuite, tu crées un fichier "img.php" par exemple, qui va être appelé pour toutes les images de ton site. Pour indiquer qu'il va renvoyer une image, il faut utiliser le code suivant :

Code : Tout sélectionner

header("Content-Type: image/jpeg"); //Remplacer jpeg par le format de l'image passée en paramètre (gif, png, bmp, ...)
Rien ne dit que ca marchera, parce que certains navigateurs font leur chieur des fois, mais pour empêcher la mise en cache, tu mets ceci :

Code : Tout sélectionner

header("Cache-Control: no-cache, must-revalidate"); header("Expires: Thu, 01 Jan 1970 00:00:00 GMT"); // Début de la période UNIX, les dates antérieures n'existent pas.
Pour empêcher l'acces à des personnes ne venant pas de ton site, tu peux utiliser un mécanisme d'identification de l'utilisateur (sessions, cookies, stockage de l'ip) sur ton site, et dans ton fichier "img.php", tu vérifie que ton utilisateur est bien passé sur ton site (depuis n secondes par exemple, c'est pas nécessaire de tester plus, car la page se charge avant les images). Exemple avec des cookies :
Fichier "index.php" :

Code : Tout sélectionner

setcookie("connected", "1", 0); // Crée un cookie pour la durée de la session
Fichier "img.php" :

Code : Tout sélectionner

if(!isset($_COOKIE["connected"])) { header("HTTP/1.0 403 Forbidden"); // Erreur 403 // Ou bien header("Location: image_avertissement.jpeg"); Dans ce cas, l'image en question ne doit pas se situer dans le dossier protégé. exit(); }
Et pour lire l'image, il faut utiliser :

Code : Tout sélectionner

if($handle = fopen("image.jpeg", "rb")) { $str = ""; while(!eof($handle)) { echo fread($handle, 8192); } fclose($handle); }
La normalement tout y est. Tout le travail est fait :)

par MANCHOT FOU » 23 mai 2007, 19:35

Je suis pas sûr d'avoir bien compris vos réponses.

Voici ce que je voudrais faire.

Dans mes pages, j'ai du code qui appelle des images du type <img href='www.monsite.com/images/photo.jpg>.

Je voudrais que si quelqu'un appelle l'adresse http://www.monsite.com/images/, il n'est pas l'acces à l'ensemble des images du repertoire d'un seul coup d'oeil. Cela est pareil pour d'autre repertoire ou du code PHP est présent et donc facilement accessible.
J'ai fais des essais en mettant ce code dans le .htaccess du repertoire
AuthUserFile /home/votre_login_ftp/www/'chemin d'accès au fichier .htpasswd'/.htpasswd
AuthGroupFile /dev/null
AuthName "Accès Restreint"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
mais ce code me bloque également les appels dans mon code du type <img href='www.monsite.com/images/photo.jpg> et me demande une identification ce qui ne va pas du tout.

Comment faire pour réaliser ce blocage.

Merci.

par AB » 19 mai 2007, 18:07

Tu peux laisser les .htaccces dans tes répertoires à protéger et appeler les images qui se trouvent dans les répertoires protégés par une page php sur ton site

ex:
header("Content-Type: image/jpeg");
readfile("PHOTO/image.jpg");
L'inconvénient c'est que ça fait bosser le serveur pour l'affichage de tes photos mais l'accès direct à tes images est protégé

par Ripat » 19 mai 2007, 17:36

Il n'est pas possible de d'empêcher le "vol" d'image. Dès qu'une image s'affiche dans un navigateur, elle est dans le cache du client. Il peut dès lors la copier à loisir.

Maintenant, il y a un autre fléau, ce sont les webmasters peu respectueux du travail des autres qui insèrent dans leurs pages des liens vers tes photos. Pour peu que leurs pages soient régulièrement consultées, le compteur de ta bande passante va en prendre un coup!

Si c'est de cela que tu veux te prémunir, jette un coup d'oeil sur le lien ci-dessous. Il suffit de changer l'extension mp3 par .gif .jpeg ou autre.
http://www.phpfrance.com/forums/voir_su ... .php#66115

Changer le masque de la directive <FilesMatch> par:

Code : Tout sélectionner

<FilesMatch "\.(gif|jpe?g|png)$">
Pas infaillible contre les "spoofer" doués qui modifient le referer du header mais c'est déjà pas mal. :wink:

par thehawk » 19 mai 2007, 16:55

Met un fichier nommer index.html qui est vide et puis voila apres le seul moyen d'acceder a tes photos est de teseter tous les noms possibles et imaginables et de prier que ce soit bon ^^

@+ thehawk

fichier .HTACCESS

par MANCHOT FOU » 19 mai 2007, 16:06

Bonjour,

concernant la protection des repertoires d'un site.
Je souhaiterais que des repertoires de 'photos' et 'images' de mon site soient protéger contre un acces direct. J'ai essaye avec .htaccess et .htpasswd, cela marche bien mais lorsque je veux afficher le site, il me demande le mot de passe lorsque le serveur veux acceder aux repertoires.
Je souhaiterais que la demande de mot de passe soit uniquement pour un acces direct et non du serveur.
Comment faire.

Merci