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 :

Télécharger des fichiers de façon sécurisée


Sujet :

Langage PHP

  1. #1
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Télécharger des fichiers de façon sécurisée
    Bonjour,

    Je voulais savoir votre avis de la méthode que j'utilise pour uploder des fichiers vers un site PHP

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    $MAXIMUM_FILESIZE = 5 * 1024 * 1024; //  5MB maximum file size 
    $rationnelleExpression_FileTypes ="/^\.(jpg|jpeg|gif|png|bmp|doc|docx|txt|rtf|pdf|xls|xlsx|ppt|pptx){1}$/i";//  Valid file extensions (images, word, excel, powerpoint)
    $uploadDir = 'pieces_jointes/';
     
    $msg = '';
    $err = false;
    //-------------------------------------------------------------
    if((!$err) and (!isset($_FILES['userfile'])) ) 
    {
      $msg = "Attaque par personalisation de page web";
      $err = true;  
    }
    //-------------------------------------------------------------
    if(!$err and $_FILES['userfile']['name']=='')
    {
      $msg = 'Champ obligatoire';
      $err = true;
    }
    //-------------------------------------------------------------
    if(!$err and preg_match($rationnelleExpression_FileTypes, strrchr($_FILES['userfile']['name'], '.')) == 0 )
    {
      $msg = 'Format de fichier invalid';
      $err = true;
    }
    //-------------------------------------------------------------
    if( !$err and (($_FILES['userfile']['error']==1) or ($_FILES['userfile']['error']==2) or ($_FILES['userfile']['size'] > $MAXIMUM_FILESIZE)) )
    {
      $msg = 'Dépassement de la taille maximale';  
      $err = true;
    }
    //-------------------------------------------------------------
    if( !$err and $_FILES['userfile']['error'] != 0 )
    {
      $msg = 'Erreur lors de téléchargement de fichier';
      $err = true;
    }
    //-------------------------------------------------------------
    if(!$err and !is_uploaded_file($_FILES['userfile']['tmp_name']))
    {
      $msg = 'Erreur lors de téléchargement de fichier';
      $err = true;
    }
    //-------------------------------------------------------------
    if(!$err )
    {
      $safe_filename = generate_new_file_name($_FILES['userfile']['name']);
     
      if(move_uploaded_file ($_FILES['userfile']['tmp_name'],$uploadDir.$safe_filename))
      {
        $msg = 'Le fichier a été téléchargé avec succès';
      }
      else
      {
        $msg = 'Erreur lors de téléchargement de fichier';
      }
    }
    //--------------------AFFICHAGE DU RESULTAT--------------------
    echo $msg;
    //-------------------------------------------------------------

    Ma question est est-ce que cette méthode est sécurisée ou elle contient des failles de sécurité

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    déjà il ne faut pas faire confiance à l'extension du fichier parce que le nom du fichier est envoyé par le client

  3. #3
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    déjà il ne faut pas faire confiance à l'extension du fichier parce que le nom du fichier est envoyé par le client
    c'est vrai que je teste le format du fichier en utilisant le nom du fichier envoyé par le client, mais, apres tout, je vais enregistrer le fichier avec l'extension envoyé par le client, par exemple si le client a envoyé un fichier executable en modifiant sont extension au format ".GIF", le fichier exécutable ne présente aucun danger, parce qu'il ne peut pas etre executé.

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par foufou.foufou Voir le message
    c'est vrai que je teste le format du fichier en utilisant le nom du fichier envoyé par le client, mais, apres tout, je vais enregistrer le fichier avec l'extension envoyé par le client, par exemple si le client a envoyé un fichier executable en modifiant sont extension au format ".GIF", le fichier exécutable ne présente aucun danger, parce qu'il ne peut pas etre executé.
    c'est peut-être vrai avec Windows mais pas avec Linux ou Mac
    et comme la majorité des serveurs web est sous Linux tu peux avoir ce genre de problème. autre exemple, un fichier "essai.png" qui contient en fait du code PHP : si tu part du principe que le fichier est une image et que tu ne fais pas attention, le code PHP peut se trouver exécuté et un pirate peut prendre le contrôle de tout ton hébergement

Discussions similaires

  1. Télécharger des fichiers depuis une URL
    Par nicox33 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/01/2008, 18h33
  2. Impossible de télécharger des fichiers depuis mon serveur
    Par amine55555 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 12/05/2007, 14h15
  3. télécharger des fichiers de paramétrage
    Par yas2006 dans le forum JWS
    Réponses: 7
    Dernier message: 27/03/2006, 14h17
  4. Problème pour Télécharger des fichiers
    Par joce3000 dans le forum C++Builder
    Réponses: 8
    Dernier message: 21/01/2005, 10h30

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