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é avec is_uploaded_file


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 131
    Par défaut Sécurité avec is_uploaded_file
    Bonjour,

    J'ai un pb avec is_uploaded_file qui me génère une erreur. Si je l'enlève est ce que cela peut poser un pb au niveau de sécurité ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //        if ( isset($_FILES[$this->_file]['tmp_name']) && !empty($_FILES[$this->_file]['tmp_name']) && is_uploaded_file($_FILES[$this->_file]['tmp_name']) && ($_FILES[$this->_file]['size'] > 0) ) {
            if ( isset($_FILES[$this->_file]['tmp_name']) && !empty($_FILES[$this->_file]['tmp_name']) && ($_FILES[$this->_file]['size'] > 0) ) {
    Explication
    J'ai une erreur quen j'essaye de télécharger une image / fichier.
    L'image est téléchargée mais l'erreur aparait tout le temps.

    [08-Sep-2016 09:45:29 America/New_York] PHP Notice: File Upload [POST]: Cannot process $_FILES[products_image_resize]['tmp_name'] in /home/www/boutique/includes/OM/Upload.php on line 73

    Line 73 o Upload class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        if ( isset($_FILES[$this->_file]) ) {
                if ( isset($_FILES[$this->_file]['tmp_name']) && !empty($_FILES[$this->_file]['tmp_name']) && is_uploaded_file($_FILES[$this->_file]['tmp_name']) && ($_FILES[$this->_file]['size'] > 0) ) {
                  $this->_upload = array('type' => 'POST',
                                         'name' => $_FILES[$this->_file]['name'],
                                         'size' => $_FILES[$this->_file]['size'],
                                         'tmp_name' => $_FILES[$this->_file]['tmp_name']);
                } else {
                  trigger_error('File Upload [POST]: Cannot process $_FILES[' . $this->_file . '][\'tmp_name\']');
                }
              }
    Ma classe class products : function getImage()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        // load originale image
              $image = new Upload('products_image_resize', DIR_FS_CATALOG_IMAGES  . $dir_products_image, null, array('gif', 'jpg', 'png'));
     
              if ( $image->check() && $image->save() ) {
                $error = false;
              }
     
              if ( $error === false ) {
                $sql_data_array['image'] = $dir_products_image . $separator . $image->getFilename();
              } else {
                $sql_data_array['image'] = '';
                $OSCOM_MessageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_NOT_WRITEABLE, 'warning');
              }
    appellé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        // image
              $this->getImage();
    Mon fichier HTML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <form name="new_product" action="http://boutique/admin/index.php?Products&cPath=&pID=3&action=update_product" method="post" enctype="multipart/form-data">
    test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
     
        //print_r($_FILES[$this->_file]);
        // Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) - no files
        //Array ( [name] => shopping-bag.png [type] => image/png [tmp_name] => /tmp/phpOg7mnD933577 [error] => 0 [size] => 933577 )  - files
     
        print_r($_FILES[$this->_file]['tmp_name']); // 0 - no files
        print_r($_FILES[$this->_file]['size']); // 0 - no file;
     
        print_r($_FILES[$this->_file]['tmp_name']); // //tmp/phpOg7mnD933577 - files
        print_r($_FILES[$this->_file]['size']); // /tmp/phpOg7mnD933577g - file;
    line to test

    if ( isset($_FILES[$this->_file]['tmp_name']) && !empty($_FILES[$this->_file]['tmp_name']) && is_uploaded_file($_FILES[$this->_file]['tmp_name']) && ($_FILES[$this->_file]['size'] > 0) ) {

    remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        if (!empty($_FILES[$this->_file]['tmp_name'])) { // works
           if (is_uploaded_file($_FILES[$this->_file]['tmp_name'])) { // File Upload [POST]: Cannot process $_FILES[products_image_resize]['tmp_name']
           if (($_FILES[$this->_file]['size'] > 0)) {  //works

  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
    Par défaut
    Ca serait bien que tu sois un peu plus explicite dans ce que tu nous montres, parce que, par exemple, dans ton test, tu mets à la fois des résultats bon et mauvais.

    Ton erreur vient d'une des conditions qui est fausse, il faut déjà voir laquelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var_dump($_FILES);
    var_dump( is_uploaded_file($_FILES[$this->_file]['tmp_name']));
    Apparemment sur Windows, il peut y avoir un problème de casse sur les chemins.
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    is_uploaded_file(realpath($_FILES[$this->_file]['tmp_name']));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 131
    Par défaut
    cela vient d'ici :
    var_dump( is_uploaded_file($_FILES[$this->_file]['tmp_name']));

    J'ai essayé de donner les éléments essentiels, peut être ai je été un peu trop succinct

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. [Sécurité] A propos de la sécurité avec J2EE
    Par kodo dans le forum Java EE
    Réponses: 3
    Dernier message: 03/06/2006, 21h45
  3. [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
  4. [Sécurité] Sécurité avec .HTACCESS
    Par BRAUKRIS dans le forum Langage
    Réponses: 3
    Dernier message: 02/04/2006, 00h01
  5. sécurité avec C
    Par chiheb366 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 14/10/2005, 12h30

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