Accès aux fichiers sécurisé en php [Résolu]

Signaler
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008
-
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008
-
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

Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

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();
?>
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

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.
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

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.
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

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
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

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
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

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
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

Ok, je te remercie pour ta réponse je vais me lancer dans cette technique.
Bonne journée

neodelphi