Soyez le premier à donner votre avis sur cette source.
Snippet vu 11 797 fois - Téléchargée 15 fois
<!-- formulaire d'upload--> <form method="post" enctype="multipart/form-data" action=""> <p> <input type="file" name="file" size="30"> <input type="submit" name="upload" value="Envoyer"> </p> </form> <?php function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } if(isset($_POST['upload'])) { define ("MAX_SIZE", "400"); $errors = 0; $filename = $_FILES["file"]["name"]; $uploadedfile = $_FILES['file']['tmp_name']; $type_file = $_FILES['file']['type']; if ($filename) { if( !is_uploaded_file($uploadedfile) ) { exit("Le fichier est introuvable"); } // on vérifie maintenant l'extension elseif( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') ) { exit("Le fichier n'est pas une image"); } else { $size = filesize($_FILES['file']['tmp_name']); if ($size > MAX_SIZE*1024) { exit ("verifier la taille de votre image!!"); $errors=1; } $extension = getExtension($filename); $extension = strtolower($extension); if($extension=="jpg" || $extension=="jpeg" ) { $uploadedfile = $_FILES['file']['tmp_name']; $src = imagecreatefromjpeg($uploadedfile); } else if($extension=="png") { $uploadedfile = $_FILES['file']['tmp_name']; $src = imagecreatefrompng($uploadedfile); } else $src = imagecreatefromgif($uploadedfile); list($width,$height) = getimagesize($uploadedfile); $newwidth = 60; $newheight = ($height/$width)*$newwidth; $tmp = imagecreatetruecolor($newwidth,$newheight); $newwidth1 = 25; $newheight1 = ($height/$width)*$newwidth1; $tmp1 = imagecreatetruecolor($newwidth1,$newheight1); imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagecopyresampled($tmp1, $src, 0, 0, 0, 0, $newwidth1, $newheight1, $width, $height); $filename = "". $_FILES['file']['name']; $filename1 = "small". $_FILES['file']['name']; imagejpeg($tmp,$filename,100); imagejpeg($tmp1,$filename1,100); imagedestroy($src); imagedestroy($tmp); imagedestroy($tmp1); echo "miniature: <img src='{$filename1}'/><br/><br/>"; echo "image originale: <img src='{$filename}'/>"; } } } ?>
@Fenoril Connais tu l'information pour ces autres failles ? Je suis curieux de savoir comment encore plus protêger mes upload d'images ou d'autre fichiers.
C'est que mon projet ne doit pas avoir aucune faille alors je prend toute les techniques et les joints ensemble dans une seul et parfaite formule. Ensuite je metterai le code le plus complet ici même pour ma partis de upload d'images.
Merci, et bonne journée ! C'est bcp l'hiver ici au Québec
Reste encore un peu de manque de sécurité sur les extensions, mais qtronix et sagat06 on donné deux méthodes qui fonctionnent. Par ailleurs, autre moyen de faire des dégâts : Les caractères de hack (null byte etc...) dans le nom de fichier, mais comme ça prend du temps à mettre en place pour le hacker (car ça dépend de notrer code), c'est moins problématique.
Merci dilar !
@ neige d'hiver, j'ai cessé la liste des erreurs parceque celles trouvées précédemment n'ont pas été corrigée depuis une semaine et que ce code ne peut PAS fonctionner en l'état. Je ne connais pas bien les fonctions d'image de php, j'espérais au passage les découvrir, aussi merci d'avoir relevé cette énormité, car du coup j'ai regardé la doc, et donc effectivement deux sorties écran d'image avant d'imprimer un texte... Je renonce...
@Qtronik Merci pour le lien vers la classe, elle est très instructive.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.