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

Apache Discussion :

Protéger l'accès à des fichiers (autorisation selon la session)


Sujet :

Apache

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 92
    Points : 43
    Points
    43
    Par défaut Protéger l'accès à des fichiers (autorisation selon la session)
    Bonjour à tous,

    Je possède un site ou chaque membre s'identifie grâce à une session ($_SESSION) suite à une vérification sur ma base mysql.

    J'aimerai que suivant le membre qui se logue, il ait accès seulement à certains fichiers (les droits sont définies ds ma base mysql).

    Je pense qu'une identification .htaccess est le seul moyen de protéger efficacement l'accès aux fichiers, mais comment l'adapter à mon cas?

    Merci d'avance pour vos suggestions.

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tes fichiers sont tous dans un (ou des) répertoire(s) dédié(s) à ces fichiers ou bien ont une URL bien reconnaissable ? Dans ce cas, c'est un mélange entre .htaccess et PHP. Dans le cas simple où les fichiers sont tous dans un répertoire dédié, tu mets ceci dans le .htaccess de ce répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !index\.php$
    RewriteRule (.*) index.php?file=$1 [L]
    Avec ce fichier, toutes les requêtes qui sont faites sur ce répertoire sont redirigées sur index.php : on utilise alors index.php pour vérifier l'utilisateur et s'il peut télécharger le fichier demander :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    // Fonction utilisee pour bloquer l'acces aux fichiers
    function unauthorized() {
        header("HTTP/1.X 401 Forbidden");
        exit();
    }
     
    // On recupere l'identifiant de l'utilisateur
    if (isset($_SESSION["login"])) {
        $user = $_SESSION["login"];
    } else {
        unauthorized();
    }
     
    // On verifie que le parametre file est positionne
    if (isset($_GET["file"])) {
        $file = $_GET["file"];
    }
        unauthorized();
    }
     
    // On verifie que le fichier demande est autorise pour l'utilisateur
    // La, tu te connectes a ta base de donnees et tu fais ta verification
    ...
    // Si le fichier est autorise pour l'utilisateur, tu le renvoies, sinon tu bloques l'acces
    if (...) {
        include($_SERVER["DOCUMENT_ROOT"].$file);
    } else {
        unauthorized();
    }
    ?>
    le include($_SERVER["DOCUMENT_ROOT"].$file) marche en principe mais il faut quand même vérifier que ce chemin est bon (chez certains hébergeurs, $_SERVER["DOCUMENT_ROOT"] n'a pas la valeur attendue).

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 92
    Points : 43
    Points
    43
    Par défaut
    Ah la la tu déchires mac!

    Merci pour ta réponse rapide, c'est exactement ce qui me fallait!

    Sinon penses tu que cette méthode est assez sécurisée pour mettre des fichiers sensibles ou en existe-t-il d'autres plus poussées?

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Je pense que c'est suffisamment poussé, d'autant plus qu'en appelant ton script index.php, s'il y a un problème avec le .htaccess, tu n'auras pas de "directory listing". Pour le coup, ajoute
    tout en haut du .htaccess.

    Ensuite, la sécurité vient aussi du script index.php : il faut qu'il soit suffisamment robuste pour prendre en compte tous les cas, toutes les valeurs possibles pour le paramètre file (notamment, attention à l'injection SQL).

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 92
    Points : 43
    Points
    43
    Par défaut
    C'est bien noté, merci en tt cas!

Discussions similaires

  1. [2.x] Protéger l'accès à des fichiers uploadés
    Par dnd888 dans le forum Symfony
    Réponses: 4
    Dernier message: 24/12/2012, 18h03
  2. [FPDF] création d'un interface pour accés à des fichiers PDF
    Par StyleXP dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/12/2005, 10h18
  3. accés à des fichiers *.db
    Par wincroc dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/08/2005, 14h48
  4. Chemin d'accès des fichiers dans des sous rep
    Par Le Veilleur dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/11/2004, 14h37
  5. Restreindre l'accès des fichiers..
    Par Neilos dans le forum Windows
    Réponses: 6
    Dernier message: 25/08/2004, 00h22

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