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 :

accès à des fichiers uniquement via php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 13
    Points
    13
    Par défaut accès à des fichiers uniquement via php
    Bonjour,

    Je voudrais faire un site qui permet à 1 utilisateur de déposer et récupérer des fichiers dans un dossier sur un serveur.

    Pour cela l'utilisateur devra passer par un page de login.

    Seulement je voudrais que les fichiers ne soient accessibles seulement en passant par cette page login et donc empêcher l'accès aux fichiers, en tapant directement l'url du fichier dans le navigateur (si par exemple qu'un découvrait le nom du dossier + le nom d'un fichier : http//www.lesite.com/dossier/unfichier.doc).

    Est-ce que c'est possible ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    ... je viens de voir qu'il y avait d'autres messages qui traités du même sujet... désolé j'aurais du regarder avant...

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Renvoie un code http 403 pour empêcher l'accès d'un utilisateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    header("HTTP/1.0 403 Forbidden");
    die();

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    Merci pour ton conseil.

    Finalement j'ai fait ça comme ça :

    dans le dossier où se trouvent les fichiers :
    un .htaccess avec deny from all

    et un fichier php qui accède au dossier uniquement après login :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    session_start();
    if (isset($_SESSION['logged'])) {
    	$fichier = $_GET['fichier'];
    	header("Content-Type: application");
    	header("Content-Disposition: attachment; filename=$fichier");
    	readfile("dossier/$fichier");
    }
    ?>
    ça suffit pour la sécurité ?

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Avec cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier = $_GET['fichier'];
    N'importe quel utilisateur loggé un peu malin peut récupérer tous les fichiers du site voire du serveur. Tu devrais sécuriser un peu mieux.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    de quelle façon un utilisateur logué pourrait récupérer tous les fichiers du site, voir du serveur ?
    cette ligne, normalement permet uniquement de récupérer un fichier qui se trouve dans le dossier "dossier" ? : readfile("dossier/$fichier");

  7. #7
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 387
    Points
    9 387
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier = "../../../../../../un_fichier_loin_dans_le_système.ext";
    readfile("dossier/$fichier");
    Ceci te parlerait-il plus ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    bin, j'avais essayé de rentrer "fichier=../unfichier.txt" dans l'url,

    mais ça me donne :
    ouverture de la fenetre de téléchargement avec :
    vous avez choisi d'ouvrir :
    dossier_.._unfichier.txt

    et ne me permet pas de remonter la hiérarchie des dossiers ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    ... heu oui en effet, c'était juste le nom du fichier ça !!

    je ne savais pas qu'on pouvait retourner en arrière dans un chemin de dossier après avoir commencé à entrer dans un dossier...
    merci pour l'info

    Du coup si j'interdis les / dans les noms de fichiers ça suffira ?

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Tu n'a pas fait d'urlencode, essaie avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fichier=..%2Findex.php
    Fais donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (isset($_GET['fichier']) && !strpos($_GET['fichier'], '/') === false) {
    // ...
    }
    die('WRONG PATH4');

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 39
    Points : 13
    Points
    13
    Par défaut
    ah oui, du coup on pourrait contourner...

    Et si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier = "dossier/".basename($_GET['fichier']);
    ça devrait le faire, non ?

Discussions similaires

  1. [MySQL] générer un fichier xml avec des caratéres speciaux via php
    Par sooprano dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 18/12/2010, 15h11
  2. accés à des fichiers *.db
    Par wincroc dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/08/2005, 14h48
  3. Accès à un fichier xml via hibernate
    Par boisdin dans le forum Hibernate
    Réponses: 12
    Dernier message: 20/01/2005, 14h54
  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