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é] Protéger des documents en téléchargement


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut [Sécurité] Protéger des documents en téléchargement
    Bonjour à tous,

    Je souhaite connaitre la meilleure méthode pour protéger des documents qui sont disponibles en téléchargement, dans un espace sécurisé.

    Pour être plus précis, lorsque je suis loggué dans mon espace, je peux télécharger mes docs. Jusqu'ici, pas de problème.

    Maintenant, si je copie l'url d'accès à un de mes documents, que je me déloggue, et que je colle l'url dans la barre d'adresse de mon navigateur, j'ai toujours accès à mon doc.
    Comment faire pour bloquer cet accès lorsque l'on n'est pas loggué ?

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Il faut utiliser une page php pour telecharger et mettre un .htaccess dans le dossier ou tu a tes fichiers...
    Regarde ici j'en ai deja parlé:
    http://www.developpez.net/forums/sho...d.php?t=339984

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Ok, merci. Je vais jeter un oeil.

    Bon, je comprends le principe mais je ne vois pas comment le mettre en place.

    Dans mon espace sécurisé, j'ai des liens vers des pdf, qui permettent de lancer le téléchargement.

    1°) Pour le .htAccess :

    Est ce que cela suffit ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    AuthUserFile /dev/null
    AuthGroupFile /dev/null
    AuthName AccesRestreint
    AuthType Basic
     
    <limit GET POST>
    order deny,allow
    deny from all
    allow from localhost
    </Limit>
    2°) Dois-je créer une page php pour chaque fichier à télécharger ?
    Comment intégrer cette page php dans mon code ?

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    J'ai créé et mis en place mon fichier htaccess (avc le fichier htpasswd). Le répertoire est bien protégé.

    Par contre, je galère côté PHP, depuis mon espace sécurisé pour télécharger les fichiers pdf en question. Si je clique sur un des liens, j'ai bien la fenêtre d'authentification qui apparait, due au fichier Htaccess.

    Mais j'aimerais qu'elle n'apparaisse pas afin d'avoir accès directement à mon fichier, étant déjà logué dans mon espace sécurisé via php.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    Rassure toi, tu ne vas pas être obligé de créer un fichier PHP pour chaque ressource que tu souhaites mettre à disposition en téléchargement...

    Il faut d'abord créer une page PHP qui va forcer le téléchargement de la ressource.

    Personnellement, je n'ai qu'un seul fichier à télécharger donc je précise le chemin comlet de ma ressource dans la viariable $url.

    Dans ton cas, pour éviter d'avoir un fichier PHP par ressource, tu peux gérer dynamiquement la variable $url grâce à la méthode GET. Lorsque tu créeras ton lien vers la ressource dans ton site, il ressemblera à ca : "www.tonsite.com/page.php?chemin=chemin_vers_le_fichier". Tu n'auras alors plus qu'à récupérer la valeur de ce chemin dans ton fichier PHP.

    Dans cet exemple, on suppose que la variable de session qui sert à vérifier que l'utilisateur est bien logué s'apelle $_SESSION["username"]
    Je te donne le code complet tel que je l'utilise :

    Code : 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
     
    <?php
     
    session_start();
     
    if(!isset($_SESSION["username"]))
    {
     
    echo 'Vous devez être identifié pour accéder à cette ressource';
    echo '<META HTTP-EQUIV="Refresh" CONTENT="3;URL=\'index.php\'">';
     
    }
    else
    {
     
    $url = $_GET["chemin"];
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'. basename($url) .'";');
    header('Content-Length: '. filesize($url));
    @readfile($url) OR die();
     
    }
     
    ?>
    Voila, j'espère que je n'ai rien oublié....auquel cas, je complèterai ou rectifierai au plus vite !

    @++
    Dernière modification par Invité ; 23/05/2007 à 18h23.

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Salut Geekix,
    Merci pour ton aide.
    J'ai avancé sur le sujet et ça fonctionne.

    Par contre, un nouveau problème est apparu : je propose en téléchargement uniquement des fichiers pdf. Lorsque je clique sur un lien, une fenêtre s'ouvre et me propose soit d'enregistrer le fichier, soit de l'ouvrir dans le navigateur.
    Jusque là, rien d'anormal.

    Que je choisisse l'une ou l'autre des solutions, le fichier pdf ne s'ouvre pas, un message d'erreur d'adobe s'affiche, me signalant que le fichier n'est pas pris en charge ou qu'il est endommagé !

    J'ai essayé de modifier les options de mes headers mais rien n'y fait.
    Je me demande si le problème ne vient pas de mon fichier .htaccess que j'ai créé dans le répertoire où se trouvent les fichiers pdf.

    Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    AuthUserFile /dev/null
    AuthGroupFile /dev/null
    AuthName AccesRestreint
    AuthType Basic
     
    <limit GET POST>
    order deny,allow
    deny from all
    allow from localhost
    </Limit>

    Quelle est la structure de ton fichier .htaccess ?
    Si tu peux m'éclairer, ce serait sympa. Merci

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Apparemment, après quelques tests, je m'aperçois que le problème vient bien du htaccess car en le désactivant, tout fonctionne.

    Malheureusement, en agissant de cette manière, mon but n'est pas atteint, à savoir la protection de mes fichiers pdf, lorsque l'utilisateur potentiel n'est pas logué dans mon espace sécurisé...

    Si qqun a une idée pour me sortir de ce casse-tête, je suis à l'écoute

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    Bonjour,

    Et si tu changes le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Content-Type: application/octet-stream');
    en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Content-Type: application/pdf');
    ?

    Suis pas certains, mais ça coute rien d'essayer !

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    salut,
    oui, j'ai cru que c'était ça au début. Mais ça n'a rien changé

    J'ai même joué sur le chmod du répertoire sans plus de succès...

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    Peut être un problème de header, avec le systeme d'authenfication

    Je ne connais pas bien PDF avec php. Mais s'il existe une fonction qui permet de stocker dans une chaine le contenu (binaire) du fichier PDF (un peu comme la librairie GD avec les images), tu pourrais avoir un truc du genre :

    outputpdf.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $id = $_GET['pdf_id'];
     
    $content = read_pdf();
     
    header('Content-type: application/pdf');
    echo $content;
    ?>
    Désolé, je ne te donne que des pistes, car je n'ai pas assez approfondie le domaine

  11. #11
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Je t'en prie. C'est déjà sympa de m'aider.

    J'ai essayé de creuser ta proposition mais ça ne donne rien.

    En fait, le système fonctionne mais si je choisis d'enregistrer un fichier pdf sur ma machine, lorsque je regarde les propriétés de celui-ci, son poids est de 0 Ko !

    A priori, c'est uniquement "l'enveloppe" du fichier qui est téléchargée sur mon poste.
    Apparemment, c'est ce f de fichier htaccess qui pose problème !!!


  12. #12
    Invité
    Invité(e)
    Par défaut
    Mon .htaccess est simplissime et ne semble pas très différent du tiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    order deny,allow
    deny from all
    allow from localhost
    Je ne comprend pas pourquoi tu indiques "<limit GET POST>", ton problème vient peut être de la...Mais étant donné que c'est un message d'erreur d'adobe, je ne pense pas que le problème vienne du .htaccess

    A ce niveau là, je suis comme toi, je pédale dans la semoule. Je n'utilise jamais de pdf donc je ne sais pas comment ca fonctionne au niveau d'une application web

  13. #13
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    J'ai modifié mon htaccess en n'y mettant uniquement les 3 lignes que tu as postées. ça ne change rien.

    J'ai essayé en supprimant le htaccess, et là ça fonctionne, j'arrive à télécharger mes docs....sauf que le répertoire n'est plus protégé si l'on tape directement l'URL d'un doc pdf.

    C'est une histoire de dingue. Apparemment, il faut s'y prendre autrement pour protéger des documents à télécharger mais comment ??? je cherche encore....

  14. #14
    Invité
    Invité(e)
    Par défaut
    Personnellement, les fichiers que j'ai à télécharger sont des .rar et ca fonctionne très bien !

    Mais ton cas est plus spécifique puisqu'il s'agit de pdf. Quand tu dis que ca ne fonctionne pas, tu fais référence au message d'erreur d'adobe?

    Si vraiment tu ne trouves pas de solution, essaye de compresser tes pdf en .rar et regarde si ca marche

  15. #15
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    oui, c'est bien ça. Si je choisis l'enregistrement, le fichier est bien téléchargé sur ma machine mais il fait 0 Ko !!!
    Il y a a priori un problème de flux de données comme si le htaccess bloquait l'envoi de données depuis le serveur. C'est pour cela, que j'ai modifié le chmod du répertoire dans lequel se trouvent les fichiers pdf, mais en vain.

    Je vais essayer de compresser pour voir ce que ça donne.

    Je te tiens au courant.

  16. #16
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Bon, je viens d'essayer et j'obtiens la même chose
    Le fichier est bien détecté mais le téléchargement ne fonctionne pas. Je récupère toujours un fichier de 0 Ko !!!

    D'où l'impossibilité de l'ouvrir.

  17. #17
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Bon, après avoir refait différents tests, je confirme que le problème vient bien du fichier .htaccess.

    L'accès aux documents est bloqué d'où l'explication de la taille du fichier pdf qui fait 0 Ko.

    Apparemment, l'authentification ne passe pas malgré le paramètrage que j'ai fait.

    Si qqun a une idée pour résoudre ce problème, je suis preneur.
    A moins que ce ne soit pas possible....

    Merci de m'éclairer.

  18. #18
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Par défaut
    pourquoi ne pas enregistrer les liens des fichiers dans une BD ?

    le lien sur le fichier serait de la forme "/download.php?id=5"
    et sur la page download.php, en plus de verifier l'existence de ce fichier, tu pourrais verifier si l'utilisateur est connecté (session , cookie...)

  19. #19
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Par défaut
    Les liens sont enregistrés dans une BD. Je les appelle avec une variable.

    le lien sur le fichier serait de la forme "/download.php?id=5"
    Je ne comprends pas trop où tu veux en venir. Si je rentre l'id du lien; comment vais-je récupérer l'url du fichier ? Verra-t-on l'url du fichier s'afficher qq part ?

    Merci

  20. #20
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Par défaut
    le lien que le client serait de la forme que je tai donné...

    Ton fichier download.php ferait une requete SQL pour recuperer l'URL reel du fichier..et tu download en changeant le header()..

    donc le client ne verrais que http://blbabla/download.php?id=5 (l'id de ton fichier par ex)..a toi de verifier si l'utilisateur qui utilise ce lien est loggué..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if($_SESSION["logged"])
    {
      // Là tu peux download
    $url = $_GET["chemin"];
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'. basename($url) .'";');
    header('Content-Length: '. filesize($url));
    }
    else
      // Là tu peux pas...
    ?>
    Je ne comprend pas ce qui te pose probleme ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Joomla!] Je cherche un composant qui permet le téléchargement des documents PDF
    Par jockhip12 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/02/2012, 10h26
  2. Réponses: 3
    Dernier message: 03/08/2009, 16h32
  3. peut-on protéger des documents pdf avec 4d?
    Par longomarc dans le forum 4D
    Réponses: 2
    Dernier message: 06/10/2007, 13h11
  4. [Sécurité] protéger un formulaire des robots-spammeurs
    Par Djakisback dans le forum Langage
    Réponses: 10
    Dernier message: 07/07/2006, 12h02

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