Ce script est-il sécurisé ?

WRInaute discret
Bonjour,

Je viens de récupérer ce script d'Upload d'mages sur internet .

Je l'ai testé sur mon site et il foctionne parfaitement .

Par contre j'y connais rien et je me demande s'il est correctement protégé?

Pourriez-vous y jeter un oeil et me dire si je peut le mettre sur mon site sans risques ?

Merci d'avance .

Code:
<?php 

//-------------------------------------- 
//  DEFINITION DES VARIABLES 
//-------------------------------------- 

$target     = "files/";  // Repertoire cible 
$max_size   = 10000000000000;     // Taille max en octets du fichier 
$width_max  = 100000000000;        // Largeur max de l'image en pixels 
$height_max = 100000000000;        // Hauteur max de l'image en pixels 

$extensions_ok = array("jpg","gif","png","jpeg"); 

//------------------------------------------------------------ 
//  DEFINITION DES VARIABLES LIEES AU FICHIER 
//------------------------------------------------------------ 

$nom_file   = $_FILES['fichier']['name']; 
$taille     = $_FILES['fichier']['size']; 
$tmp        = $_FILES['fichier']['tmp_name']; 
$chemin     = $target.$_FILES['fichier']['name']; 

$extension  = substr($nom_file,-3); // Récupération de l'extension 

//--------------------------- 
//  SCRIPT D'UPLOAD 
//--------------------------- 

if($_POST['posted']) 
{ 

// On vérifie si le champ est rempli 

  if($_FILES['fichier']['name']) 
  { 
     // On vérifie l'extension du fichier 

    if(in_array(strtolower($extension),$extensions_ok)) 
    { 
       // On récupère les dimensions du fichier 

        $infos_img = getimagesize($_FILES['fichier']['tmp_name']); 
             
        // On vérifie les dimensions et taille de l'image 

        if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($taille <= $max_size)) 
        { 
           // Si c'est OK, on teste l'upload 

            if(move_uploaded_file($tmp,$chemin)) 
            { 

              // Si upload OK alors on affiche le message de réussite 
                echo '<p>Image uploadée avec succès !</p>'; 
                echo '<ul><li>Fichier : '.$_FILES['fichier']['name'].'</li>'; 
                echo '<li>Taille : '.$_FILES['fichier']['size'].' Octets</li>'; 
                echo '<li>Largeur : '.$infos_img[0].' px</li>'; 
                echo '<li>Hauteur : '.$infos_img[1].' px</li></ul>'; 
				echo '<p>Vous pouvez uploader une autre image !</p>';
                
            } 
               else 
            { 

               // Sinon on affiche une erreur système 
                echo '<p>Problème lors de l\'upload !</p>'; 
                 
            } 
        } 
          else 
        { 

          // Sinon erreur sur les dimensions et taille de l'image 
          echo '<p>Erreur dans les dimensions ou taille de l\'image !</p>'; 
        } 
    } 
      else 
    { 

      // Sinon on affiche une erreur pour l'extension 
        echo '<p>Votre image ne comporte pas une extension valide !</p>'; 
         
    } 
   } 
    else 
   { 

    // Sinon on affiche une erreur pour le champ vide 
    echo '<p>Le champ du formulaire est vide !</p>'; 
   } 
} 
?> 
<html> 
<head> 
<title>Upload d'une image sur le serveur !</title> 
</head> 
<body> 
<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="POST"> 
<p>Envoyer le fichier :</p> 
<input type="hidden" name="posted" value="1"> 
<input name="fichier" type="file"> 
<input type="submit" value="Uploader"> 
</form> 
</body> 
</html>
 
WRInaute impliqué
Non, la méthode de vérification de l'extension est la pire que l'on puisse mettre en place : il me suffit de faire un joli petit script php par exemple et de lui mettre comme extension .jpg par exemple, et a partir de la, je peux faire pleins de petites choses sur ton serveur
 
WRInaute impliqué
du 6eme au 9eme octet d'un fichier jpg tu doit trouver ceci: JFIF

renseigne toi sur le format de fichier jpg, apres je sais pas comment tu veux verifier en php le format de fichier...
 
WRInaute discret
Il me semble que le 3ème paramètre du tableau renvoyé par getimagesize est un numérique correspondant au type d'image. Si tu envoies un JPEG avec une extension GIF, il te renverra JPEG ;)
 
WRInaute discret
Tu auras surement besoin de ce tableau aussi : (fais correspondre l'id renvoyé avec la valeur dans le tableau)
$types = array(
1 => 'GIF',
2 => 'JPG',
3 => 'PNG',
4 => 'SWF',
5 => 'PSD',
6 => 'BMP',
7 => 'TIFF(intel byte order)',
8 => 'TIFF(motorola byte order)',
9 => 'JPC',
10 => 'JP2',
11 => 'JPX',
12 => 'JB2',
13 => 'SWC',
14 => 'IFF',
15 => 'WBMP',
16 => 'XBM'
);
 
WRInaute discret
Bon bah merci les amis

Je saurais absolument pas modifier tout cela .

Je vais laisser tomber et chercher autre chose .
 
WRInaute discret
numaa a dit:
Bon bah merci les amis

Je saurais absolument pas modifier tout cela .

Je vais laisser tomber et chercher autre chose .

C'est pas très difficile mais faut s'y connaitre c'est vrai! Envoie moi un MP avec ce que tu veux, je peux te dépanner si t'en as vraiment besoin! Sachant que les sources sur le net sont pas tiptop
 
WRInaute discret
Merci bidule machin je t'envoi un MP .

Sinon quelqu'un connait un petit script d'upload qui marche bien et qui soit sécurisé ?
 
Discussions similaires
Haut