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é.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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?
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  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, 15h44
  2. problème de sécurité avec Access runtime
    Par DSabah dans le forum Runtime
    Réponses: 1
    Dernier message: 18/09/2007, 14h15
  3. problème de sécurité avec IE
    Par fabrice001 dans le forum Sécurité
    Réponses: 9
    Dernier message: 27/07/2006, 13h41
  4. [AJAX] Sécurité avec AJAX
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 18h01
  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, 10h54

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