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é] téléchargement ‘sécurisé’ de fichiers


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut [Sécurité] téléchargement ‘sécurisé’ de fichiers
    [ téléchargement ‘sécurisé’ ]

    Salut @tous,

    Je dois mettre en place un système de téléchargement ‘sécurisé’.

    L’internaute doit d’abord remplir un formulaire dans le quel je lui demande son adresse mail.
    Puis je lui envoie un mail avec une clef que j’ai enregistré dans ma base de données.

    Dans le mail y’a un lien (avec la clef) et quand il clique dessus ça télécharge le produit.


    Mais voila je sais pas trop comment finir

    Le code de download.php le script qui est appellé par le clique sur le lien
    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
    26
    27
    28
    29
     
    <?
    //d'abord on vérifit que l'internaute n'est pas arrivé là par zazard
    if(!isset(!isset($_GET["code"]))
    {
    	exit("houst ptit malin");
    }
     
    //je récupére le code
    $code = urldecode($_GET['code']);
     
    //et si le code n'existe pas je l'envoie balader
    $sql = "SELECT * FROM gl_serial WHERE serial_num = $code";
    $res = mysql_fetch_array(send_sql($sql));
    if(!$res)
    {
    	exit("houst ptit malin");
    }
     
    //on à bien une personne qui à demander la bonne url avec un bon code => je lance le téléchargement.
    //
    //  Mais je sais pas comment
    //
     
    // j'ais bien penser à :
    header("location: ... ");
    // Mais il ne faut pas que l'on puisse récupérer le fichier directement (ceci serait une faille de sécurité)
    // Donc mon fichier et en dehors de l'espace web
    ?>
    Merci de m'éclérer de vos lumières

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par SoF_AzraeL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset(!isset($_GET["code"]))
    Pourquoi deux isset ?? C'est aussi faux qu'inutile.

    Sinon pour effectivement envoyer le fichier, voilà comment je fais pour un pdf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $fileSize = filesize($filename);
    header("Content-Type: application/pdf");
    header("Content-Length: $fileSize");
    header("Content-Transfer-Encoding: binary");
    readfile($filename);
    Avec $filename qui contient évidemment l'adresse du fichier, et ton fichier qui est dans un endroit inaccessible par apache (ou protégé d'une quelconque manière).

    Ca répond à ta question ?

  3. #3
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut .zip
    Super Eusebius,
    Merci.

    Une derniére chose : quel est le Content-Type: d'un fichier zip ??


    _______________________________
    edit : j'ai trouvé


    header('Content-Type: application/x-zip') ; //on détermine les en-tête
    header('Content-Disposition: inline; filename=archive.zip') ;

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Je voudrais avoir une petite précision.
    Pour ton cas tu veux que ça soit téléchargeable qu'une seul fois ou autant de fois qu'il utilisera cette clés ?

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par SoF_AzraeL
    Une derniére chose : quel est le Content-Type: d'un fichier zip ??
    Après un rapide coup d'oeil sur google (tu n'as sans doute pas accès à google... ) j'ai trouvé application/zip et application/x-zip, à toi d'essayer et de voir ce qui marche...

  6. #6
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    lool merci Eusebius

    C'est à cause du patron .. il fait rien qu'a m'embéter


    @berceker united
    au début je pensai que le clef servait à télécharger le logiciel. (ici le produit est un logiciel)
    Mais je viens de revoir ça avec le patron.. en fait la clef est demandée lors de l'instalation.
    Et nainporte qui peut télécharger le fichier zip depuis le lui ou s'il posséde l'URL

  7. #7
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par SoF_AzraeL
    lool merci Eusebius

    C'est à cause du patron .. il fait rien qu'a m'embéter


    @berceker united
    au début je pensai que le clef servait à télécharger le logiciel. (ici le produit est un logiciel)
    Mais je viens de revoir ça avec le patron.. en fait la clef est demandée lors de l'instalation.
    Et nainporte qui peut télécharger le fichier zip depuis le lui ou s'il posséde l'URL
    j'ai essayé mais là non j'ai pas trouvé ce qui se cache derrière ça. Bon si je comprend bien. N'importe qui peut télécharger le logiciel mais pout l'utiliser il faut utiliser la clé qui sera fournit par mail.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2017, 08h26
  2. [Système] Téléchargement par HTTP d'un fichier
    Par Thierry8 dans le forum Langage
    Réponses: 20
    Dernier message: 06/06/2006, 10h42
  3. Réponses: 11
    Dernier message: 28/04/2006, 12h50
  4. Bloquer le téléchargement de certains types de fichiers
    Par Nikos dans le forum Développement
    Réponses: 4
    Dernier message: 23/12/2002, 20h54

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