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 :

Empecher toute lecture non autorisée


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Baldy
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 223
    Points : 128
    Points
    128
    Par défaut Empecher toute lecture non autorisée
    Bonjour

    Je voudrais savoir si il y a une manière particulière d'empecher la lecture de fichier d'un site. Je m'explique :

    Si je fais un site qui comporte une partie nécessitant login et MDP et que certains fichiers ne sont visibles que de cette partie (donc logiquement protégés), que puis je faire pour empecher quelqu'un de lire ces fichiers depuis une URL absolue?

    Exemple :

    http://www.monsite.fr/ --> le site
    http://www.monsite.fr/admin/ --> partie administration accessible par login et MDP
    http://www.monsite.fr/admin/fichiers/exemple.pdf --> depuis le site je ne peut lire ce fichier qu'en passant par le formulaire d'authentification, mais si un utilisateur rentre cette URL directement dans son navigateur, qu'est ce qui l'empêche d'accéder au fichier?

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    Tu as effectivement un moyen simple de protéger le dossier, c'a déjà été développé dans d'autres sujets :
    1 : mettre un index.php pour empêcher le parcours du dossier
    2 : utiliser un .htacess, dans le dossier fichiers, du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Order Deny, Allow
    Deny From All
    ou utiliser le rewrite_mod d'Apache
    3 : mettre en place un fichier ( download.php ) auquel tu passe le nom de fichier en paramètre, et qui te renvoie le fichier grâce à un echo file_get_contents( ) ou autre, avec les headers appropriés, et qui vérifie accessoirement que la personne est bien logguée. Par contre, faut pas oublier de bien vérifier le chemin quand il est envoyé, pour éviter le téléchargement de n'importe quel fichier ( du genre vérifier que le chemin ne contient pas de '../' )

    Voila, bonne chance

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    L'utilisation d'un fichier .htaccess peut-être une solution.

    Mais avant tout, il faut que le visiteur connaisse l'existence de ton fichier, et pour empêcher un quidam de cataloguer ton site, il existe une première astuce toute simple qui consiste à mettre un fichier index.php vide dans chacun de tes dossiers. Ainsi il ne sera pas possible de lister le répertoire par un navigateur.

    Tu peux aussi provoquer une erreur lorsqu'il y a tentative d'accéder à un dossier en y mettant ce index.php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    header("HTTP/1.0 404 Not Found");
    ?>

    --- edit ---
    oups, grillé par l'ange de l'amour !

  4. #4
    Membre habitué Avatar de Baldy
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 223
    Points : 128
    Points
    128
    Par défaut
    Vos propositions sont en effet bonnes pour empecher le listage d'un répertoire. Mais cela n'empeche pas quelqu'un de lire directement un fichier si il en connait l'URL et le nom exact (c'est difficile connaissable mais bon...)

    La méthode de LoveAngel pourrait elle corriger ce défaut?

    Citation Envoyé par LoveAngel Voir le message
    3 : mettre en place un fichier ( download.php ) auquel tu passe le nom de fichier en paramètre, et qui te renvoie le fichier grâce à un echo file_get_contents( ) ou autre, avec les headers appropriés, et qui vérifie accessoirement que la personne est bien logguée. Par contre, faut pas oublier de bien vérifier le chemin quand il est envoyé, pour éviter le téléchargement de n'importe quel fichier ( du genre vérifier que le chemin ne contient pas de '../' )

    Voila, bonne chance

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Baldy Voir le message
    Vos propositions sont en effet bonnes pour empecher le listage d'un répertoire. Mais cela n'empeche pas quelqu'un de lire directement un fichier si il en connait l'URL et le nom exact (c'est difficile connaissable mais bon...)

    La méthode de LoveAngel pourrait elle corriger ce défaut?
    Si l'utilisateur connait l'url, non.

    Tu peux éventuellement mettre tes fichiers pdf hors du serveur web, comme le sont les scripts CGI par exemple.

  6. #6
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Points : 225
    Points
    225
    Par défaut
    Ben, c'le rôle de l'htaccess dans le dossier, avec un Deny From All, il interdit l'accès à tous les fichiers du dossier :/
    Puis, les personnes ne connaitrons plus l'url réelle, mais une url du style download.php?file=exemple ... et la, rien ne t'empèche d'y vérifier le login ! Tu ne fournis jamais la vraie adresse au final ...

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/06/2006, 13h11
  2. [Debutant] Lecture non destructrice !
    Par Treuze dans le forum C
    Réponses: 5
    Dernier message: 18/05/2006, 18h22
  3. Rendre la lecture non bloquante
    Par Charlinecha dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 05/07/2005, 15h46
  4. Réponses: 3
    Dernier message: 16/03/2004, 16h42

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