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 :

Quel risque et problème de sécurité avec ce script ?


Sujet :

Langage PHP

  1. #1
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut Quel risque et problème de sécurité avec ce script ?
    Bonjour,

    J'ai intégré ce bout de code sur un site mais visiblement il présente des failles de sécurité....

    Quelqu'un pourrait-il m'en dire plus svp ? (risques encourus, quel faille, etc...)

    Merci

    page download.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
     header("Content-type: application/pdf");
     header("Content-Disposition: attachment; filename=$_GET[pdf]");
     readfile($_GET['pdf']);
     
    ?>
    Page HTML :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
    <head>
    </head>
    <body>
    <a href="download.php?pdf=test.pdf">télécharger test.pdf</a>
    </body>
    </html>


    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    imagine par exemple que tu as un fichier .htpassword protégeant un repertoire.
    j'appelle la page http://tonsite/download.php?pdf=../r...re/.htpassword
    et hop je l'ai.

    imagine par exemple que tu as un script faisant une connexion à la base de données
    j'appelle la page http://tonsite/download.php?pdf=page.php
    et hop j'ai les identifiants de connexion.

    Il faut donc nettoyer et valider le nom du fichier demandé.

  3. #3
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Ah ouai....effectivement ça craint...

    Merci pour ces explications.... Donc si je modifie le code comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if ($_GET['pdf']=="test.pdf") {
     header("Content-type: application/pdf");
     header("Content-Disposition: attachment; filename=$_GET[pdf]");
     
     readfile($_GET['pdf']);
    }
    else
    {
    echo "non autorisé";
    }
    C'est mieux ?

  4. #4
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Pourquoi faire appel à GET alors que la valeur sera toujours la même?

  5. #5
    Mut
    Mut est déconnecté
    Membre averti Avatar de Mut
    Homme Profil pro
    Inscrit en
    Mars 2003
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Mars 2003
    Messages : 931
    Points : 307
    Points
    307
    Par défaut
    Ajourd'hui elle est toujours la même mais cela évoluera. Je cherche donc un système fiable que j'adapterais par la suite

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    - Fais une liste blanche composée des noms de fichiers autorisés
    - limite la lecture à certains répertoires seulement
    - limite l'accès au script à des utilisateurs connus uniquement.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il faut éviter de trimballer $GET dans tout le code :
    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
    <?php
    $fileGET = trim($_GET['pdf']);
    // GESTION/VERIFICATION du fichier
    $fileValid = false;
    // Fichier dans une liste pré-définie
    $fileAllowed = array ("test.pdf","test1.pdf","test2.pdf");
    if (in_array($GETfile, $fileAllowed)) {
    	$fileValid = true;
    }
    // Fichier OK ?
    if($fileValid){
     $fileOK = $GETfile;
     header("Content-type: application/pdf");
     header("Content-Disposition: attachment; filename=$fileOK");
     
     readfile($fileOK);
    } else { // PAS OK
    echo "non autorisé";
    }
    En l’occurrence, tu veux que le fichier soit exclusivement un fichier pdf.
    => tester l'Extension
    => tester le Type Mime

    Tu peux t'inspirer de ceci : Traitement Fichier : news_traiter_file.php

Discussions similaires

  1. Problème de sécurité avec MS Access
    Par jpduches dans le forum Sécurité
    Réponses: 2
    Dernier message: 13/12/2010, 16h44
  2. problème de sécurité avec Access runtime
    Par DSabah dans le forum Runtime
    Réponses: 1
    Dernier message: 18/09/2007, 15h15
  3. problème de sécurité avec IE
    Par fabrice001 dans le forum Sécurité
    Réponses: 9
    Dernier message: 27/07/2006, 14h41
  4. [AJAX] Sécurité avec AJAX
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 19h01
  5. [Sécurité] Problème de sécurité avec l'upload
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2006, 11h54

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