Page 1 sur 1

Interdire l'accès aux répertoires en fonction d'un compte us

Posté : 21 nov. 2008, 10:10
par stadros83
Bonjour bonjour,

Je vais essayer d'expliquer mon soucis :

J'ai un petit site ultra basique en PHP/MySQL sur lequel des personnes se connectes (compte utilisateur créé manuellement dans MySQL, mot de passe MD5, etc).

J'utilise du coup $_SESSION, tout se passe bien.

Le principe du site en fait c'est d'accéder a des informations personnelles (plus précisément des PDFs).

Par exemple : toto se connecte, et il voit ses PDFs qui sont dans un répertoire à son nom et pas celui des autres.

Mon site est grosso modo comme ça :

INDEX
\PDFs\Toto
\PDFs\Titi
\PDFs\Jacques
\PDFs\...

Le hic bien entendu c'est que les répertoires peuvent être visualisés en rentrant le nom directement.

Du coup ma question est la suivante : comment protéger vraiment l'accès ? Est-ce que je dois utiliser un .HTACESS ? Est-ce que je dois mettre un fichier php dedans qui peut bloquer l'accès ?

Je ne sais pas du tout quelle est la meilleure solution.

Posté : 21 nov. 2008, 10:49
par yaug
Bonjour.

Hum.

Tu dois pouvoir utiliser $_SERVER['SCRIPT_FILENAME'];

Dès que tu entre dans un dossier, tu vérifies si toto est bien dans cette variable.
si ce n'est pas le cas, tu jartes l'utilisateur.

Tu vois ?<

Posté : 21 nov. 2008, 10:58
par stadros83
Bonjour.

Hum.

Tu dois pouvoir utiliser $_SERVER['SCRIPT_FILENAME'];

Dès que tu entre dans un dossier, tu vérifies si toto est bien dans cette variable.
si ce n'est pas le cas, tu jartes l'utilisateur.

Tu vois ?<
Je pense voir plus ou moins, je vais creuser ça.

Sinon je me disais, est-ce qu'il est possible par exemple de mettre des droits spécifiques sur un dossier (genre un .HTACESS) et d'utiliser opendir avec un nom d'utilisateur/mot de passe contenu dans le HTACESS/HTPASSWORD ?

Sécurisé un peu comme un accès FTP en somme.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 21 nov. 2008, 15:21
par AB
Tu peux envisager la protection via .htacces en mettant "deny from all" à la racine du répertoire que tu veux protéger.

Ainsi les fichiers ne seront accessibles que via php, et non pas en rentrant une adresse http.

Ensuite tu peux créer le chemin du répertoire visible pour chaque utilisateur en faisant :
$rep = '/PDFs/'.$_SESSION['login'];
//en supposant que tu aies affecté le login de l'utilisateur dans la variable de session $_SESSION['login'] lors de l'autentification.
Ensuite il te suffit de lister ce répertoire via php pour afficher les fichiers et utiliser un download en php pour que les utilisateurs puissent les télécharger, ou tu peux simplement les faire afficher avec des entêtes php
header('Content-type: application/pdf');

readfile("$monfichier.pdf");
Le problème de la solution de yaug c'est qu'elle peut fonctionner dans un script mais qu'elle ne protégerait pas l'accès direct aux fichiers en rentrant simplement leur adresse dans la barre d'adresse du navigateur.

Posté : 21 nov. 2008, 15:52
par stadros83
Tu peux envisager la protection via .htacces en mettant "deny from all" à la racine du répertoire que tu veux protéger.

Ainsi les fichiers ne seront accessibles que via php, et non pas en rentrant une adresse http.

Ensuite tu peux créer le chemin du répertoire visible pour chaque utilisateur en faisant :
$rep = '/PDFs/'.$_SESSION['login'];
//en supposant que tu aies affecté le login de l'utilisateur dans la variable de session $_SESSION['login'] lors de l'autentification.
Ensuite il te suffit de lister ce répertoire via php pour afficher les fichiers et utiliser un download en php pour que les utilisateurs puissent les télécharger, ou tu peux simplement les faire afficher avec des entêtes php
header('Content-type: application/pdf');

readfile("$monfichier.pdf");
Le problème de la solution de yaug c'est qu'elle peut fonctionner dans un script mais qu'elle ne protégerait pas l'accès direct aux fichiers en rentrant simplement leur adresse dans la barre d'adresse du navigateur.
Tu confirmes la solution que j'envisageai je te remercie :).

Le but du jeu étant bien entendu que les fichiers ne soient pas accessibles autrement que via PHP :D !

J'ai plus qu'à creuser tout ça maintenant !!

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 21 nov. 2008, 15:55
par yaug
Le problème de la solution de yaug c'est qu'elle peut fonctionner dans un script mais qu'elle ne protégerait pas l'accès direct aux fichiers en rentrant simplement leur adresse dans la barre d'adresse du navigateur.
Au temps pour moi.
J'avais oublié de rajouter le fait que évidemment il fallait compléter par un .htacces.

20 coups de fouet pour la peine :shock:

Posté : 21 nov. 2008, 16:14
par stadros83
Allons, ce ne sera pas nécessaire :D !!