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

Conception Web Discussion :

Téléchargement à partir d'une page


Sujet :

Conception Web

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut Téléchargement à partir d'une page
    Bonjour,

    Je ne sais pas trop ou poster alors je poste ici !

    Sur mon site internet des personnes sont invitées à mettre leur CV sur un espace sécurisé par session. Ce CV peut être téléchargé par les autres membres ayant accès a l'espace sécurisé !

    Les CV sont placés dans un dossier, comment empêcher le téléchargement direct en tapant l'adresse du CV ( http://www.monsite.fr/CV/leCV1.pdf ) ! Cependant il faut que les membres de l'espace sécurisé puissent le télécharger !

    Merci de votre aide

  2. #2
    Membre actif
    Avatar de (Benoit)
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 184
    Points : 289
    Points
    289
    Par défaut
    Je te présente deux solutions :

    Solution simple mais facilement contournable par quelqu'un qui s'y connait un minimum :
    Ton lien vers un CV pourrait ressembler à ça (à la hache) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <a href="javascript:gotoCV('leCV1.pdf')"> CV </a>
    
    <script>
    function gotoCV(strCV) {
      window.open('/dossier-de-cv-avec-un-nom-complique/'+strCV);
    }
    </script>
    Et tu obfusque le javascript.

    Solution beaucoup plus compliquée mais sécurisée, les grandes lignes :

    Si tu es en Php, tu créé une variable "a le droit de voir les CV" dans ta session Php, tu créé un fichier downloadCV.php qui lira cette valeur dans la session Php, si elle est à true, alors, lorsque on appelle cette page php, elle enverra le contenu du PDF comme étant la réponse (tu aura besoin de travailler avec les header php, car la réponse de ton downloadCV.php ne sera pas de type HTML mais PDF)
    "J'adorerais changer le monde, mais pas moyen de mettre la main sur le code source."
    chez moi

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut
    Euh je vais choisir la 2ème solution, mais il faudrait que je la comprenne !!

    Comment je protège mon fichier contenant les CV?

    Et à vrai dire je ne comprends pas trop le principe :s

  4. #4
    Membre actif
    Avatar de (Benoit)
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 184
    Points : 289
    Points
    289
    Par défaut
    Supposons que depuis ton navigateur tu appelles l'url http://monsite.com/downloadCV.php?idcv=cv1

    Dans ta page downloadCV.php tu pourrais avoir un code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php    // Demo - send a (binary) file
    
    $file = "un_dossier/ireland.jpg";
    $fp = fopen($file,"r") ;
    
    header("Content-Type: image/jpeg");
    
    while (! feof($fp)) {
           $buff = fread($fp,4096);
           print $buff;
           }
    ?>
    Et dans ce cas, ce sera comme si tu avait appelé l'url d'une image, sauf que c'est php qui "génère" l'image vers le navigateur.

    Tu peux faire exactement pareil avec un fichier PDF... Via l'utilisation de header( "Content-type: application/pdf");

    Le dossier "un_dossier" ne va jamais apparaitre publiquement dans aucune url...
    Et tu peux, en plus, protéger ton dossier "un_dossier" via un fichier .htaccess de sorte qu'il n'y ait que ton code .php qui puisse accéder au contenu
    "J'adorerais changer le monde, mais pas moyen de mettre la main sur le code source."
    chez moi

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut
    Oki d'accord, génial .

    Merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut
    Euh en fait quand je fais ceci, le téléchargement marche bien, la page téléchargée correspond bien à celle voulu mais elle porte le nom download.php !

    J'ai essayé aussi avec ceci :
    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
      $file = $_GET['file'];
      $pi = pathinfo($file);
      // ajouter de la sécurité ici pour interdire au client de choisir des chemins remontants (../../etc/passwd) :-)
      $ext = $pi['extension'];
      if($ext=='pdf') $mimeType = 'application/pdf';
      else die(); // voir améliorations ci-après
      $path = 'dossier/'.$file;
      $size = filesize($path);
      header("Content-Type: $mimeType");
      header("Content-Length: $size");
      readfile($path);
    ?>

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut
    J'ai rajouté cette ligne dans le dernier script que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Content-Disposition: attachment; filename=$file");
    Mais quand je télécharge le fichier porte bien le nom mais il est impossible de le lire ! Pourtant il porte bien l'extension .pdf !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut
    Bon bon je discute tout seul

    J'ai la réponse, il faut mettre le type-mime : application/force-download
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Content-type: application/force-download");
    C'est définitivement résolu

  9. #9
    Membre actif
    Avatar de (Benoit)
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 184
    Points : 289
    Points
    289
    Par défaut
    Cool

    (Je connaissais cette technique mais je ne l'ai encore jamais moi-même implémentée)
    "J'adorerais changer le monde, mais pas moyen de mettre la main sur le code source."
    chez moi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2009, 15h06
  2. Réponses: 2
    Dernier message: 20/02/2006, 19h51
  3. [C#] déclencher un évènement à partir d'une page
    Par luimême dans le forum ASP.NET
    Réponses: 1
    Dernier message: 07/12/2005, 17h01
  4. connection a mssql a partir d'une page php
    Par jean_marc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2003, 14h24

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