IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sécurité des répertoires


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Sécurité des répertoires
    Bonjour,

    + Mise en contexte
    Je développe une application web dans laquelle je dois créer des répertoires personnels pour les usagers. Mon module de connexion sécurisée est classique et se compose d'un formulaire web (user/passwd) et les informations sont validées dans une BD MySql. Chaque ligne de ma table comporte les infos de l'utilisateur, le hash du passwd et le nom du répertoire qui lui est réservé (ce répertoire est créé lors de son inscription).

    + Le problème
    Il est possible d'accéder aux fichiers contenus dans les répertoires en question en rentrant le lien direct dans le navigateur. J'ai placé un .htaccess pour en réduire l'accès au public mais cette restriction s'applique « dans tous les cas ». Ce que je recherche, c'est un script qui permette d'empêcher l'accès à ces répertoires à tout le monde sauf à l'usager connecté pour qui le dossier est réservé. Est-il possible de générer un .htaccess qui contiendrait les informations de connexion de l'utilisateur et qu'on peut également mettre à jour si l'utilisateur change de mot de passe ? Idéalement je voudrais que ce soit une opération à effectuer de façon dynamique. J'ai regardé sur le web mais je n'ai rien trouvé de concluant.

    + Merci pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    Ce que tu cherche peut être réglé avec les htaccess, mais le rendre dynamique est délicat (personnellement je dirait foireux).

    Ton problème est que quand tu entre l'url d'un fichier dans ton navigateur,
    solutions :

    - Soit c'est un script php, et on peut effectuer des vérifications dynamiques
    - Soit c'est un fichier autre (ie pas un script), du coup seul apache peut limiter l’accès au fichier. On en revient au problème précédent.

    Personnellement, la meilleure solution que je vois est de faire une interface pour les utilisateurs listant leur fichiers. Lors d'un clic on peut vérifier que la requête est valide et commencer l'upload, tout ceci par script et non par clic sur un fichier précis.

    Par exemple un script du type fichier.php?file=789 lancerait l'upload du fichier 789 si le bon utilisateur est connecté.

    A ce stade je trouverai même plus pratique de stocker les fichiers dans des champs blob. Ca évite d'être obligé de tenir à jour une liste de fichiers qui n'est pas forcément à l'image de ce qu'il y a sur le disque.
    Au commencement Dieu a crée l'Homme, puis l'Homme a crée la machine, puis l'Homme a tué Dieu. Fou de rage, Dieu a envoyé à l'Homme l'Informatique pour le punir de son orgueil.


    Le libéralisme économique est une conjecture qui énonce que tout ensemble de classes tend à constituer un programme cohérent et stable.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par nonolagalinette Voir le message
    A ce stade je trouverai même plus pratique de stocker les fichiers dans des champs blob. Ca évite d'être obligé de tenir à jour une liste de fichiers qui n'est pas forcément à l'image de ce qu'il y a sur le disque.
    Pour peux qu'il ai un peu d'utilisateur sa bdd va devenir énorme pour pas grand chose .

    Pour moi il faut placer les dossiers de tes utilisateurs hors de la racine web (donc pas accessible via http) et tu fais un explorateur de fichier en php avec des limitation sur le compte qui peut consulter.
    De cette manière tu est certains qu'un petit malin qui essairai des nom de dossier au hasard ne pourrais y avoir accès.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Parfait, merci beaucoup pour les suggestions. Je vais m'y remettre!

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par grunk Voir le message
    Pour moi il faut placer les dossiers de tes utilisateurs hors de la racine web (donc pas accessible via http) et tu fais un explorateur de fichier en php avec des limitation sur le compte qui peut consulter.
    De cette manière tu est certains qu'un petit malin qui essairai des nom de dossier au hasard ne pourrais y avoir accès.
    Le « compte qui peut consulter » est-il un compte que je crée pour accéder à ces fichiers ou le compte de l'utilisateur qui est connecté ? Si c'est celui de l'utilisateur connecté, comment puis-je vérifier son accès au dossier hors racine ? Est-ce en utilisant un .htaccess ? C'est encore nébuleux pour moi.
    Quant à l'explorateur de fichiers, aurait-tu un exemple ? J'ai déjà un script qui me permet de parcourir et lister des fichiers et répertoires, mais j'imagine que ça va plus loin que ça lorsqu'il s'agit d'accès restreint

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 89
    Points
    89
    Par défaut
    Pour peux qu'il ai un peu d'utilisateur sa bdd va devenir énorme pour pas grand chose .
    Question de préférence, que les fichiers soient stockés dans la bdd ou sur le système de fichier, il faudra de toutes façons avoir de la place de disponible, après je n'ai jamais fait de test de performances entre les deux méthodes qui se valent pour ce qui est du résultat.


    Le « compte qui peut consulter » est-il un compte que je crée pour accéder à ces fichiers ou le compte de l'utilisateur qui est connecté ? Si c'est celui de l'utilisateur connecté, comment puis-je vérifier son accès au dossier hors racine ? Est-ce en utilisant un .htaccess ? C'est encore nébuleux pour moi.
    Le but est que l'utilisateur connecté (utilisateur inscrit dans ta base) qui appelle le script où il y aura l'explorateur n'accède qu'à ses fichiers. Tu peux essayer de modifier le script d'explorateur pour qu'il n'explore que le dossier de l'utilisateur connecté. Il suffit apparemment puisque tu as déjà les infos dans la base de chercher le dossier correspondant.
    Si les fichiers sont hors du domaine web, il ne seront consultables que depuis l'explorateur, donc si l'explorateur n'affiche que les fichiers de l'user connecté, il n'y aura pas de risque d'exploration du mauvais dossier (en théorie du moins).

    Pour les droits tous les fichiers auront sans doute besoin d'êtres lisibles par l'utilisateur qui exécute le script (ce doit être apache ou www-data si tu a apache2 si je ne dis point de bêtises).
    Au commencement Dieu a crée l'Homme, puis l'Homme a crée la machine, puis l'Homme a tué Dieu. Fou de rage, Dieu a envoyé à l'Homme l'Informatique pour le punir de son orgueil.


    Le libéralisme économique est une conjecture qui énonce que tout ensemble de classes tend à constituer un programme cohérent et stable.

Discussions similaires

  1. [Sécurité] Attributs / droits des répertoires
    Par innova dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2007, 06h52
  2. Empêcher le parcours des répertoires
    Par Tankian dans le forum Sécurité
    Réponses: 5
    Dernier message: 04/03/2005, 15h10
  3. [Arborescence des répertoires]
    Par JustAGphy dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/03/2004, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo