cs_cladx
Messages postés30Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 1 septembre 2005
-
30 juin 2005 à 14:49
Utilisateur anonyme -
17 août 2007 à 19:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
kun00538
Messages postés9Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention10 juin 2006 10 juin 2006 à 00:05
Slt a vous tous
je viens de trouver ce poste je suis a la recherche d'un script d'upload
qui fonctionne depuis au moins 2 jour.
je viens de teste celui ci et je remerci cladx car ce script fonctionne
certe il besoin d'etre adapter au besoin de l'utilisateur mais
il fonction sur ie nestcape et firefox reste a tester sur mozilla linux mais ca
c'est pour bientot.
je suis d'accord avec coucou747 quand a la faille de securite presente mais il suffit
de lire sont tuto et de recup les info de securisation qu'il propose (elle sont vraiment
simple pour faire vite il suffit de controle la hauteur du fichier car seule les img on
une hauteur dixit le tuto de coucou747).
voila c tout merci encore a cladx apres avoir tester au moins 10 source du forum j'ai enfin trouve
ce qu'il me faut
bonne soire a tous
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 20161 21 mai 2006 à 20:46
alors la BRAVO ! 10/10 !
La seule source que j'ai trouvée qui marche !!!
un grand merci
alainbon
Messages postés3Date d'inscriptionmercredi 12 octobre 2005StatutMembreDernière intervention19 octobre 2005 19 oct. 2005 à 20:46
1/J'ai testé, ce code ne peut pas marcher tel quel!
Si le dossier dans lequel on veut télécharger les fichiers s'appelle "avatar"
A la ligne 14 du code, il faut remplacer
$content_dir = '/avatar';
par
$content_dir = realpath("avatar").'/';
2/ après cette correction, ça marche, mais bon si un fichier de même nom est déjà présent sur le serveur, ça le remplace. Il serait plus prudent de faire une vérif avec un "file_exists" (cf doc php) pour ne l'écraser qu'après un message de confirmation.
3/Coucou747, tu vas un peu vite ... la faille n'est pas aussi grosse que ton message semble le faire penser.
$_FILES['fichier']['type'] retourne le type MIME du fichier fourni par le navigateur donc le quidam moyen ne pourra pas rentrer par erreur un fichier php ou html avec une extension jpg (j'ai testé avec ce code).
Maintenant pour les hackers, il faudra transformer le type MIME renvoyé par le navigateur. ça je sais pas quel niveau il faut mais ce doit pas être tout à fait débutant (ton avis m'intéresse).
4/(Résumé du 3)
Ce code est suffisant pour éviter les erreurs des visiteurs, mais pour contrer les hackers non débutants, suivez les conseils de Coucou :
- A priori, selon mes recherches sur le web, on peut faire assez confiance au "getimagesize" (jusqu'à preuve du contraire...)
- Mais pour éviter cette interrogation à laquelle je ne sais répondre : peut-on absolument faire confiance au "getimagesize"?, le plus sûr est de ne permettre l'upload de fichier que dans un espace authentifié.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 2 sept. 2005 à 11:59
je ne parlais pas de ça :
souvent dans un site, t'as un menu, et t'inclue des pages html (dont t'as retiré le header et le /body /html) pour faire des articles, dans un CMS, t'inclue les plugins, t'inclue un fichier de conf, et parfois, les fichiers inclus sont des variables passés en GET, donc, la, tu changes le GET, et tu fais exécuter ton .jpg, et tu bouzilles le site en entier avec une faille comme ça !
MyXiLo
Messages postés57Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 juillet 2006 2 sept. 2005 à 01:44
Ca implique de pouvoir modifier un script php sur le serveur... Si tu arrives ce genre de choses je ne vois pas l'interet d'inclure un script prealablement uploade.
Par contre un fichier uploade rendu accessible par un script "defaillant", disons, me semble plus a la portee du premier venu.
Bref, tout ca pour dire que la verification de l'extension me semble une bonne chose.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 août 2005 à 12:20
souvent, t'as des includes dans les sites web (pour inclure des pages web, des plugins...) et donc, on peut inclure un .jpeg dans un .php
include('a.jpeg') et il sera interprété comme un .php
marrant non ?
MyXiLo
Messages postés57Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 juillet 2006 27 août 2005 à 17:55
Admettons que le type envoie un fichier php qui contienne veritablement du php, admettons que l'utilisateur en question puisse ensuite(par une manipulation malhonette ou a cause d'une defaillance du script d'upload) acceder a ce fichier. Le serveur executera le script php en question.
Maintenant si l'individu envoie un fichier jpg avec un contenu php le serveur n'executera pas le contenu en tant que php mais envera le fichier image au client.
En verifiant l'extension le fichier sera peut etre corrompu mais il n'y a pas, a priori, de pb de securité.
C'est du moins ce que je pense.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 25 août 2005 à 19:19
un programme PHP peut avoir l'extention .jpg...
une erreur dans l'extention : ici, une simple page html avait l'extention php...
MyXiLo
Messages postés57Date d'inscriptionvendredi 21 mai 2004StatutMembreDernière intervention28 juillet 2006 25 août 2005 à 18:17
(Pour coucou747: Il est evident qu'il faut faire une vérification de l'extension. Personnes censees ou non... Il arrive à tout le monde de faire des erreurs. Je ne vois pas en quoi c'est une faute que de le verifier, au contraire.
En ce qui concerne la source, en effet elle est archi recurrente et peche par sa non rigueur)
wizard512
Messages postés459Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention11 mai 20132 1 juil. 2005 à 12:32
jsui d'acco a se niveau la coucou747
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 1 juil. 2005 à 11:48
c'est un détail, parfois, on préfère faire deux fichiers, ce qui théoriquement est plus rapide d'exécution, mais c'est vrai que pour un site bien complet, c'est assez lourd de programmer dans 200 fichiers...
index.php devrait être remplacé par index.html, si on n'a pas de php, autant l'apeler html pour éviter une étape de parsage...
wizard512
Messages postés459Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention11 mai 20132 1 juil. 2005 à 11:42
mais pour fais 2 fichiers au lieu d'un tu peux tré bien placer Upload.php dans le meme fichier que ton formulaire apré le formulaire et avec les isset() c niquel...
ten pense koi???
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 1 juil. 2005 à 11:26
merci
cs_cladx
Messages postés30Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 1 septembre 2005 30 juin 2005 à 22:16
tu a bien raison c'est un source presque entierement pomper sur un tuto prochain couo j'essayerai de ne pas decevoir
:x
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 30 juin 2005 à 16:26
quand on n'a pas de solution, on va dans le forum, mais on ne poste pas...
je n'ai pas fait de vérifications de types pour les uploads car j'ai toujours considéré que les personnes qui uploadaient étaient des gens sencés (en clair : il faut un mdp pour uploader sur mon site...)
mais j'ai fait un truc pour les reconnaissances d'images pour un album photo :
list($x1, $y1, $type, $n) = getimagesize($f);
$t = array(false, 'GIF','Jpeg','PNG','WBMP');
le type est $t[$type], les dimentions sont ($x1, $y1)
voila, au plaisir de te voir poster une meilleur source la prochaine fois...
cs_cladx
Messages postés30Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 1 septembre 2005 30 juin 2005 à 15:51
que propose tu a la place :p
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 30 juin 2005 à 14:54
Vas voir ma soure : tuto sécuritée upload...
Cette source est déja présente en plein d'exemplaires différents et tu refais les erreurs des autres programmeurs qui vérifient l'extention !
Tu n'as rien inventé, et tu proposes une faille de sécuritée énorme !
En mettant un name au bouton d'upload, tu surcharge un peu la requette (on n'est pas à quelques octets près...) tu utilises parfois de simples guillemets, parfois des doubles, ce n'est pas super rigoureux...
cs_cladx
Messages postés30Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention 1 septembre 2005 30 juin 2005 à 14:49
j'attend vos commentaire plz , je c'est que ce n'est pas une source spectaculaire mais bon je debute
17 août 2007 à 19:29
10 juil. 2006 à 10:12
Héhé
10 juin 2006 à 00:05
je viens de trouver ce poste je suis a la recherche d'un script d'upload
qui fonctionne depuis au moins 2 jour.
je viens de teste celui ci et je remerci cladx car ce script fonctionne
certe il besoin d'etre adapter au besoin de l'utilisateur mais
il fonction sur ie nestcape et firefox reste a tester sur mozilla linux mais ca
c'est pour bientot.
je suis d'accord avec coucou747 quand a la faille de securite presente mais il suffit
de lire sont tuto et de recup les info de securisation qu'il propose (elle sont vraiment
simple pour faire vite il suffit de controle la hauteur du fichier car seule les img on
une hauteur dixit le tuto de coucou747).
voila c tout merci encore a cladx apres avoir tester au moins 10 source du forum j'ai enfin trouve
ce qu'il me faut
bonne soire a tous
21 mai 2006 à 20:46
La seule source que j'ai trouvée qui marche !!!
un grand merci
19 oct. 2005 à 20:46
Si le dossier dans lequel on veut télécharger les fichiers s'appelle "avatar"
A la ligne 14 du code, il faut remplacer
$content_dir = '/avatar';
par
$content_dir = realpath("avatar").'/';
2/ après cette correction, ça marche, mais bon si un fichier de même nom est déjà présent sur le serveur, ça le remplace. Il serait plus prudent de faire une vérif avec un "file_exists" (cf doc php) pour ne l'écraser qu'après un message de confirmation.
3/Coucou747, tu vas un peu vite ... la faille n'est pas aussi grosse que ton message semble le faire penser.
$_FILES['fichier']['type'] retourne le type MIME du fichier fourni par le navigateur donc le quidam moyen ne pourra pas rentrer par erreur un fichier php ou html avec une extension jpg (j'ai testé avec ce code).
Maintenant pour les hackers, il faudra transformer le type MIME renvoyé par le navigateur. ça je sais pas quel niveau il faut mais ce doit pas être tout à fait débutant (ton avis m'intéresse).
4/(Résumé du 3)
Ce code est suffisant pour éviter les erreurs des visiteurs, mais pour contrer les hackers non débutants, suivez les conseils de Coucou :
- A priori, selon mes recherches sur le web, on peut faire assez confiance au "getimagesize" (jusqu'à preuve du contraire...)
- Mais pour éviter cette interrogation à laquelle je ne sais répondre : peut-on absolument faire confiance au "getimagesize"?, le plus sûr est de ne permettre l'upload de fichier que dans un espace authentifié.
2 sept. 2005 à 11:59
souvent dans un site, t'as un menu, et t'inclue des pages html (dont t'as retiré le header et le /body /html) pour faire des articles, dans un CMS, t'inclue les plugins, t'inclue un fichier de conf, et parfois, les fichiers inclus sont des variables passés en GET, donc, la, tu changes le GET, et tu fais exécuter ton .jpg, et tu bouzilles le site en entier avec une faille comme ça !
2 sept. 2005 à 01:44
Par contre un fichier uploade rendu accessible par un script "defaillant", disons, me semble plus a la portee du premier venu.
Bref, tout ca pour dire que la verification de l'extension me semble une bonne chose.
28 août 2005 à 12:20
include('a.jpeg') et il sera interprété comme un .php
marrant non ?
27 août 2005 à 17:55
Maintenant si l'individu envoie un fichier jpg avec un contenu php le serveur n'executera pas le contenu en tant que php mais envera le fichier image au client.
En verifiant l'extension le fichier sera peut etre corrompu mais il n'y a pas, a priori, de pb de securité.
C'est du moins ce que je pense.
25 août 2005 à 19:19
une erreur dans l'extention : ici, une simple page html avait l'extention php...
25 août 2005 à 18:17
En ce qui concerne la source, en effet elle est archi recurrente et peche par sa non rigueur)
1 juil. 2005 à 12:32
1 juil. 2005 à 11:48
index.php devrait être remplacé par index.html, si on n'a pas de php, autant l'apeler html pour éviter une étape de parsage...
1 juil. 2005 à 11:42
ten pense koi???
1 juil. 2005 à 11:26
30 juin 2005 à 22:16
:x
30 juin 2005 à 16:26
je n'ai pas fait de vérifications de types pour les uploads car j'ai toujours considéré que les personnes qui uploadaient étaient des gens sencés (en clair : il faut un mdp pour uploader sur mon site...)
mais j'ai fait un truc pour les reconnaissances d'images pour un album photo :
list($x1, $y1, $type, $n) = getimagesize($f);
$t = array(false, 'GIF','Jpeg','PNG','WBMP');
le type est $t[$type], les dimentions sont ($x1, $y1)
voila, au plaisir de te voir poster une meilleur source la prochaine fois...
30 juin 2005 à 15:51
30 juin 2005 à 14:54
Cette source est déja présente en plein d'exemplaires différents et tu refais les erreurs des autres programmeurs qui vérifient l'extention !
Tu n'as rien inventé, et tu proposes une faille de sécuritée énorme !
En mettant un name au bouton d'upload, tu surcharge un peu la requette (on n'est pas à quelques octets près...) tu utilises parfois de simples guillemets, parfois des doubles, ce n'est pas super rigoureux...
30 juin 2005 à 14:49