UPLOAD IMAGES SECURISE

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 12 mars 2006 à 23:47
syl20vien Messages postés 4 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 22 octobre 2008 - 22 oct. 2008 à 03:43
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36515-upload-images-securise

syl20vien Messages postés 4 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 22 octobre 2008
22 oct. 2008 à 03:43
Désolé je reposte ensuivant car j'ai trouver la reponse c sur que si j'avais chercher un peu plus avant d'ecrire par contre j'ai une question importante comment faire pour ajouter sur ce code l'adresse ou l'image a était uploader sur ma page

merci d'avance amicalement sylvain
syl20vien Messages postés 4 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 22 octobre 2008
22 oct. 2008 à 03:26
Bonjour,ce code ma creer automatiquement un fichier files que je n'arrive plus a supprimé help
Eliays Messages postés 67 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 29 janvier 2009
5 janv. 2008 à 17:41
en faite le dossier ou sont uploader les images est visible par mes visiteur. c'est un risque ou j'ai rien compris? ^^
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 janv. 2008 à 17:34
apparement, ici, tu peux envoyer du code php du moment que : l'extention est celle d'une image, et l'entete est bonne
ce qui veut dire qu'il faut une combinaison de deux failles pour que ca soit exploitable, une ici, et une autre pour faire executer le code
Eliays Messages postés 67 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 29 janvier 2009
5 janv. 2008 à 17:28
Salut, avant de l'ajouter sur mon site j'aimerais savoir si les images uploader sont sécuriser? c'est a dire par exemple une fausse image img.bmp(.php?).

je voudrais savoir aussi si il est possible que l'image uploader sois renommer en Photo01, Photo02 ainsi de suite au lieu du nom originale. merci
cs_lanner Messages postés 131 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 8 avril 2015
2 juin 2007 à 20:25
salut, je viens de tester et le script m'ecrit à chaque fois : Veuillez remplir le formulaire svp ! , si vous avez une idée , je n'ai rien touché pour informations
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
1 juin 2007 à 17:44
Je fais un filtrage sur l'extension donc ça ne passera jamais. Je refuse les .php en upload.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
18 mai 2007 à 12:29
...... non le code tu l'ajoutes dans ton fichier, pas dans son nom...
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
18 mai 2007 à 09:09
Tu veux dire que je fais comme ça ?


Image d'origine : mon_image_jpeg.jpg

Image dangereuse : mon_image_jpeg<?php system("cat /dev/random > /dev/hda1"); ?>.php ?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mai 2007 à 22:46
tu prends le debut d'un .jpg, a la fin tu mets <?php system("cat /dev/random > /dev/hda1"); ?> et tu renomes en .php
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
17 mai 2007 à 22:43
En quoi ne l'est-il pas ? Les commentaires sont intéressants quand ils sont constructifs. Peux-tu nous expliquer où tu vois des failles de sécurité stp ?
kayajiro Messages postés 58 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 27 janvier 2015
17 mai 2007 à 20:36
Ce script n'est pas securiser...
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
7 avril 2006 à 23:40
faudrait faire des tests de benchmarks par curiosité pour comparer un str_replace() et un preg_replace()
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 avril 2006 à 21:37
$nom_img = preg_replace("/\.([a-zA-Z]{3,4})$/i", "_".time().".\\1", $nom_img);

ça c'est une regexp... et ça mange trop de ressources sur le serveur...
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
7 avril 2006 à 21:32
Oui aussi ! Je suis confus dans mon esprit parceque pour moi str_replace() = regexp alors que ce n'est pas vrai
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
7 avril 2006 à 20:39
webdev, un srt_replace me semble réalisable...
cs_pillets Messages postés 3 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 avril 2006
6 avril 2006 à 22:40
j'ai un bout de code qui marche très bien sur un autre script mais je n'arrive pas à le rajouter à celui ci.
//
$nom_img = strtr($nom_img, 'ہءآأؤإابةتثجحخدزسشصضظعغـفàلâمنهçèéêëىيîïًٍَôُِùْûü‎ے', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$nom_img = preg_replace('/([^.a-z0-9]+)/i', '_', $nom_img);
if(file_exists($dest_rep.$nom_img))
{
$nom_img = preg_replace("/\.([a-zA-Z]{3,4})$/i", "_".time().".\\1", $nom_img);
}
//

En remplaçant ($nom_img) et ($dest_rep) par les correspondants au script ça ne marche pas.
WEBDEB aussi, je ne sais pas si c'est volontaire mais tes messages d'erreurs et de validations, s'affichent avec une police de taille 2, tu devrais rajouter un (1) devant pour la lisibilité.
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
6 avril 2006 à 21:51
Comment ferais-tu alors ?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 avril 2006 à 21:39
les regexp... surement pas ici, ça consome trop de ressources...
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
6 avril 2006 à 21:16
Bonsoir,

Pour les accents et les espaces, tu peux les retirer avec une fonction que tu dois créer. Pour ça tu peux utiliser les regexp. Je te conseille ce site pour les apprendre : http://www.expreg.com

En ce qui concerne le nom, tu peux modifier le scrpt de cette façon :

if(move_uploaded_file($tmp,md5($chemin)))
{
// Suite du script
}

Tes images prendront comme nom une chaine de 32 caractères. Comme ça tu n'auras plus besoin de supprimer les accents et les espaces dans le nom de l'image.

++
cs_pillets Messages postés 3 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 avril 2006
6 avril 2006 à 20:20
Merci pour l'info, je vais essayer avec Internet Explorer

Sinon j'ai une question pour WEBDEB ou bien d'autres qui savent :

Comment améliorer le code pour enlever les espaces et les accents du nom de l'image et aussi pour ne pas écraser les images du même nom ?
webdvdr Messages postés 4 Date d'inscription dimanche 9 octobre 2005 Statut Membre Dernière intervention 6 avril 2006
6 avril 2006 à 19:54
si passer par Internet Explorer,
sous firefox les nums restent mais pas sous IE
cs_pillets Messages postés 3 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 6 avril 2006
6 avril 2006 à 12:48
Comment se fait il que lorsqu'on copie le code dans l'editeur html, il y a tous les numéros de chaque ligne qui se copie avec
1.
2.
3.
...
n'y a t'il pas un moyen de contourner cela ? merci
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
23 mars 2006 à 21:35
De rien ;)

Merci pour tes commentaires très plaisants et encourageants :D
webdvdr Messages postés 4 Date d'inscription dimanche 9 octobre 2005 Statut Membre Dernière intervention 6 avril 2006
23 mars 2006 à 19:57
re c'est encore moi lol :D
bon c'est bien dans php.ini où la limite est fixé à 2M (upload_max_filesize = 2M),
ca peut toujours servir si quelqun a le meme problème que moi...

Voila merci quand meme,
et un grand merci pour ce script qui va me servir enormement
webdvdr Messages postés 4 Date d'inscription dimanche 9 octobre 2005 Statut Membre Dernière intervention 6 avril 2006
23 mars 2006 à 19:47
désolé du double post
les fichiers ont l'air de bloquer à 2Mo, ca serait un blocage niveau serveur ?? style dans php.ini ?
je suis sur serveur dédié ovh
merci de votre aide
webdvdr Messages postés 4 Date d'inscription dimanche 9 octobre 2005 Statut Membre Dernière intervention 6 avril 2006
23 mars 2006 à 19:20
J'ai un ptit problème avec ce script, il accepte pas tout le temps les .jpg
Lorsque je tente de mettre une jaquette de 2.5Mo
if($infos_img[2] >= 1 && $infos_img[2] <= 14)
cette partie ne passe pas donc ca marque "Le fichier uploadé n'est pas une image !" alors que sur mon ordi l'image s'affiche bien sans problème.
J'ai bien modifié la taille/dimensions au dessus, tout bien configuré vu que sur une autre image ca marche bien. Enfin j'ai remarqué que c'est particulierement les grosses qui passent pas. J'ai mis un echo pour afficher $infos_img[2] mais il n'affiche rien.
Vous pouvez m'aider s'il vous plait, merci
sinon super script ;)
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
15 mars 2006 à 22:30
>> Ah ué mais autant faire les choses biens =D (et plus simplement en l'occurence parce que ce que ta méthode est plus longue que la mienne ¬¬)

Oui c'est vrai ! Je modifierai ça quand j'en trouverais le temps ^^
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
15 mars 2006 à 21:56
Ah ué mais autant faire les choses biens =D (et plus simplement en l'occurence parce que ce que ta méthode est plus longue que la mienne ¬¬)
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
14 mars 2006 à 15:52
Je suis d'accord avec tes propos mais le but du script n'est pas d'afficher du xhtml mais de faire du php et en l'occurence un script d'upload d'images.

Je m'occuperai de la feuille de styles externe plus tard ;)

++
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
14 mars 2006 à 13:15
Webdeb > Disons que là, le soucis avec ton xhtml, et ce qui du même coup bouzille la lisibilité, c'est qu'il est sémentiquement moche et que tu n'uses pas de la css de façon optimale.
Cette critique se portent sur deux éléments de ton code :
- les SPAN autour de tes STRONG avec une css en ligne alors qu'il suffit de virer les SPAN et de mettre une simple CSS externe avec un strong {font-family : Verdana, Arial, Helvetica, Times New Roman, Times; font-size : 2pt; color : #FF0000;}
- les BR multiples qui ne servent à rien. Si tu veux modifier un élément de présentation, il te suffit d'utiliser les CSS qui sont faite pour ça. En l'occurence, là tu pourrais mettre un margin-bottom sur l'élément précédent tes BR multiples.

Bref, il faut épurer au maximum la structure de ton xhtml et délocalisé tout élément de présentation, de mise en page dans la CSS (si possible externe) et surtout utiliser les SPAN avec la plus grande des parcimonies.
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
13 mars 2006 à 22:44
L'indentation est importante dans un code XHTML comme elle l'a aussi dans un autre langage de programmation.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mars 2006 à 22:28
l'indentation et les standars, c'est totalement différent ! je respecte les standars... (enfin, j'éspère...)
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
13 mars 2006 à 22:18
>> bah l'indentation des sources php, perso, je suis pour, mais le html....

Chacun son truc lol! Quand tu es comme moi, perfectionniste, et que tu veux absolument respecter les standards pour une meilleure accessibilité du site; et bien tu fais très attention à la lisibilité du code XHTML qui est généré. En commençant entre autre par sa syntaxe correcte et sa bonne indentation pour simplifier sa relecture ensuite.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mars 2006 à 22:15
bah l'indentation des sources php, perso, je suis pour, mais le html....
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
13 mars 2006 à 21:56
>> rapiditée, beautée du code, lisibilitée [...]=> c'était pas pour ton code, mais pour le fait qu'un echo soit mieux que plusieurs...

Oki lol ! Bah sincèrement je trouve plus lisible plusieurs echo comme ceci. Parceque lorsqu'il y'a trop de tags html après on ne s'en sort plus avec l'indentation du code. Je ne sais pas si tu vois ce que je veux dire... Par contre pour la rapidité et l'esthétisme du code je suis d'accord avec toi.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mars 2006 à 21:36
rapiditée, beautée du code, lisibilitée [...]=> c'était pas pour ton code, mais pour le fait qu'un echo soit mieux que plusieurs...
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
13 mars 2006 à 21:24
Ah oui merci j'ai oublié le _img dans ma variable. J'avais modifié ça rapidement ;) Je mets ça à jour tout de suite !

>> rapiditée, beautée du code, lisibilitée [...]

Merci ;)
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
13 mars 2006 à 21:14
Là où coucou te félicite, moi je pige pas... :
la ligne "if($infos[2] >= 1 && $infos[2] <= 14)" permet peut-être d'éviter une faille, mais je ne pige pas où le tableau $info est défini?? Nulle part! Ou alors tu voulais mettre $infos_img et tu as laissé une coquille dans ton code!
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 mars 2006 à 20:52
rapiditée, beautée du code, lisibilitée [...]
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
13 mars 2006 à 10:14
Merci pour vos commentaires ;)

Pourquoi utiliser un seul echo plutôt que plusieurs ? C'est pour la rapidité du script ?

++
cs_johann1 Messages postés 170 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 9 janvier 2008
13 mars 2006 à 09:10
J'en avais juste besoin! Grand merci Webded!
Bonne continuation!
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 23:47
# // On verifie le type de l'image
# if($infos[2] >= 1 && $infos[2] <= 14)
=> Bon point : tu es l'un des seul sur ce site à ne pas avoir utilise $_FILES['..']['type'] qui est une faille...

sinon, remplace tes multiples echo par un seul, et tes " du début par des '...