Accès aux fichiers sécurisé en php

Résolu
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008 - 14 sept. 2006 à 13:18
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008 - 15 sept. 2006 à 10:55
Bonjour tout le monde,

Je souhaitai récemment proteger l'accès a un fichier zip sur mon site perso pour le restreindre à seulement quelques personnes de mon entourage. J'ai donc fouillé un peu et je suis tombé sur la gestion des droits avec apache: les fichier .htaccess... J'ai mis en place cette solution et ça marche du tonère.

Mais maintenant j'ai un second problème: ayant sécursé également certaines pages, je souhaiterai pouvoir récupérer en php le login de l'utilisateur pour afficher des informations plus ciblées (normal quoi !). Je n'ai pas trouvé de moyen pour le faire, et j'ai cru comprendre que apache/php on pouvait pas trop mélanger (mais je fait peut-être fausse route !). J'ai déjà réussi a sécuriser des pages web en php avec les sessions, mais je ne sais pas le faire pour les fichiers, car n'importe qui peut entrer l'url directement si il la connait et le téléchargement lui sera proposé. Est-il possible d'interdire l'accès a un fichier si l'utilisateur n'est pas reconnu ?

neodelphi

7 réponses

cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
14 sept. 2006 à 23:22
dans ce cas tu peux mettre tout les fichiers dans un dossier protègé (où il y a "image.gif" et d'autre truc) et tu crée une page php qui ouvre ces fichiers,
par exemple:
tu crée acces.php que tu accède par "acces.php?fichier=image.gif"
et dans la page acces.php tu fais un script genre
<?php
là tu mais ton script d'identification
puis un truc genre:
  header("Content-type: image/gif");
  readfile("dossierprotege/"+@$_GET["fichier"]);
  exit();
?>
3
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
15 sept. 2006 à 10:15
Le principe de la technique est utilisé souvent (certains site on qu'une page d'index et utilise index.php?page=accueil)
Attention pour la sécurité, le mieux est de faire la liste des fichiers auxquels tu autorise l'accès et d'afficher une erreur si le fichier demandé n'est pas dans ta liste.
3
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
14 sept. 2006 à 13:57
Pour les fichiers php tu peux utiliser ça en début de fichier
<?php
if (@$_SERVER["PHP_AUTH_USER"] != "pseudo" || @$_SERVER["PHP_AUTH_PW"] != "motdepasse") {
 header("WWW-Authenticate: Basic realm="Authentification"");
 header("HTTP/1.0 401 Unauthorized");
 echo "Vous n'êtes pas autoriser à accéder à cette page.";
 exit();
}
?>
Et je sais que sur un serveur free tu peux mettre ça:

un fichier .htaccess avec:
PerlSetVar AuthFile perso/.htpasswd
AuthName "Acces Restreint"
AuthType Basic
require valid-user

et un .htpasswd avec:
pseudo:motdepasse

ce qui te protège un dossier, avec ça il suffit de se loguer soit sur la page php soit en essayant d'accèder au dossier pour être loguer partout, pour protèger que certains fichier il faut utiliser:
<Files "tonfichier.ext">
require valid-user
</Files>

sinon souvent il faut crypter le motdepasse du fichier .htpasswd, avec ça par exemple:
http://www.toutwebmaster.be/home/dossiers/crypt_pass.php
alors la ligne devient:
pseudo:$1$2Igck0yR$bIDRJR562UJPJjEB/LOYm/

voilà j'espère que cela t'aidera.
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
14 sept. 2006 à 14:04
Euh encore un précision;
la ligne:
PerlSetVar AuthFile perso/.htpasswd
est comme cela car dans mon exemple le fichier protège .htpasswd était dans le fichier perso, normalement il faut mettre le chemin complet (qu'on peut trouver par exemple avec un realpath (c'est commande php)  et qui donne souvent un truc genre /home/utilisateur/www/dossier/.htpasswd
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
14 sept. 2006 à 22:57
Merci pour ta réponse Kysic, mais mon problème est que je ne veut pas avoir a se loguer pour les fichier puis se loguer pour les pages en php... j'aurai voulu une seule authentification qui puisse donner accès aux fichiers et qui puisse être réutilisée par php pour afficher par exemple les informations de l'utilisateur.

Pour ce qui est du .htaccess je l'ai déjà fait et ça marche très bien même. Mais je ne sais pas lorsque le code php est exécuté qui est logé car ces informations semblent être détenues par apache.

neodelphi
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
15 sept. 2006 à 10:02
Merci pour ta réponse, ça me semble pas mal comme solution. Est-ce quelque chose qui se pratique souvent ou c'est un bricolage ? Est-ce assez sécurisé ?

neodelphi
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
15 sept. 2006 à 10:55
Ok, je te remercie pour ta réponse je vais me lancer dans cette technique.
Bonne journée

neodelphi
0
Rejoignez-nous