Espace sécurisé et identification

Eléphant du PHP | 124 Messages

31 mai 2008, 10:11

Bonjour,

Voilà j'ai un script à programmer, et je ne sais pas trop comment aborder le problème :

J'ai un site avec une session ou une personne doit s'identifier pour acceder à une liste de fichier directement listé dans un répertoire.
l'espace a été crée avant via une interface d'administration ou l'administrateur a par la suite envoyé des fichiers par ftp dans l'espace créé

Mon problème est que lors de la l'accès au répertoire, je ne voudrais pas qu'une personne puisse relever l'url du répertoire et aller donner l'adresse à une autre personne qui prenne les fichier directement dans celui-ci sans passer par le site.

Avez vous une idée de comment protéger ou dissimuler ce repertoire ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 juin 2008, 14:43

Le plus simple est sans doute de protéger le dossier par htaccess, interdisant l'accès aux personnes non authentifié.

Sinon au lieu d'accéder au dossier proposant les fichiers, il te faut les placer dans un dossier inaccesible, générer cette liste dans un script php et gérer les téléchargement avec php (qui ira lire le fichier demandé dans le répertoire protégé et le retournera à l'utilisateur). Il te sera alors facile de tester la session dans ce script et voir si l'utilisateur à le droit ou pas de télécharger le fichier :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 124 Messages

02 juin 2008, 12:00

Le plus simple est sans doute de protéger le dossier par htaccess, interdisant l'accès aux personnes non authentifié.
C'est justement la que je bloque, comment faire le lien entre la personne logué en session et le htaccess ?

Eléphant du PHP | 398 Messages

05 juin 2008, 17:17

Tu dois avoir une table utilisateur je penses (login, pass etc...). Tu peux rajouter un champ 'level' par exemple, dans lequel tu donnes des numeros d'autorisation.
Exemple : 1 -> admin, 2 -> user enregistré.
Lorsque l'utilisateur se conencte, son login est en variable de session, tu peux créer une autre variable de session genre $_SESSION['level'] qui contient le numero de niveau de l'user.
Et avec une condition if($_SESSION['level'] == '1') tu autorise l acces.

Couplé avec le htacces ça peut être suffisant je pense.

Autre solution aussi (oula j ai le cerveau qui chauffe lol), si tu ne veux pas utiliser de level, tu peux faire une methode qui liste tous les users, tu les met dans un tableau. Avec la fonction in_array(), tu compare ta variable de session login avec le tableau. ça te renvoi true si le pseudo est dans le tableau, alors tu affiche ta page, sinon tu indique un message d'erreur.
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 124 Messages

07 juin 2008, 14:12

Tu dois avoir une table utilisateur je penses (login, pass etc...). Tu peux rajouter un champ 'level' par exemple, dans lequel tu donnes des numeros d'autorisation.
Exemple : 1 -> admin, 2 -> user enregistré.
Lorsque l'utilisateur se conencte, son login est en variable de session, tu peux créer une autre variable de session genre $_SESSION['level'] qui contient le numero de niveau de l'user.
Et avec une condition if($_SESSION['level'] == '1') tu autorise l acces.

Couplé avec le htacces ça peut être suffisant je pense.

Autre solution aussi (oula j ai le cerveau qui chauffe lol), si tu ne veux pas utiliser de level, tu peux faire une methode qui liste tous les users, tu les met dans un tableau. Avec la fonction in_array(), tu compare ta variable de session login avec le tableau. ça te renvoi true si le pseudo est dans le tableau, alors tu affiche ta page, sinon tu indique un message d'erreur.
C'est le .htaccess mon problème, je le gère comment lui ? je dois mettre quoi dedans pour n'autoriser que le passage par la session ?