Faile dans $_POST?

Signaler
Messages postés
45
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
31 octobre 2005
-
Messages postés
45
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
31 octobre 2005
-
Bonjour tout le monde,



Les programmeurs php se souviennent : Avant, avec les anciennes versions de PHP, il suffisait de faire une page avec dedans <? echo $toto ?>.



Vous me suivez jusque-là. La variable $toto n'était définit à nulle
part, la page affichera qqch si on tappe dans notre navigateur préféré
(firefox) mapage.php?toto= 211223



Jusque là tout va bien. En pouvait faire la même chose en en créant un
formulaire sur une autre page avec comme action notre fameuse page avec
la méthode post, si on avait un champ texte, la page affichera sa
valeur.



Bref... Tout cela est bien beau. si maintenant on refait les mêmes expériances avec le php nouveau ça ne fonctionnera plus....



Pourquoi avoir changé qqch qui marchait au poil?



J'ai trouvé une solution pour y remédier dites moi ce que vous en pensez:



Je parle de ça

foreach($_POST as $var =>$value)

$$var=$value; //Fait $NoCode=sdksjskd;



Ce petit bout de code prends le tableau posté,



essayez print_r($_POST) et vous optiendrez un truc du style:



Array ( [formName] => AddComputer [backurl] => index.php [id]
> 19 [NoCode!] > dfsdf [Nom!] => dddd [IpAddress] =>
asdsda [MacAddress] => dasasddsadsasda [NoSerieManuf] => asddass
[FactureNo] => daasd [PurchaseDate] => 2005-05-10 [ModelId] =>
8 [CptTypeId] => 2 [InUseId] => 1 [UserId] => 2 [RoomId] =>
3 [ManufacturerId] => 0 [ProviderId] => 1 [Notes] => lasddas
[send] => Update )



Le foreach dont je parle prends tous les noms de variable entre
crochets, en crée avec ce nom et les défini. exemple $formName =
AddComputer. Et Tout ça est 100% automatique



Ma question est : Je recrée ce que php a supprimé dans ses nouvelles versions, suis-je en train de réactiver une faille?

10 réponses

Messages postés
196
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
2 septembre 2005

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



pourquoi avoir changé ça ? tout simplement parce que c'était la porte ouverte aux failles de sécurité...



imaginons que tu envoies un formulaire via méthode post avec un champ
nommé "variable" qui est de type hidden et ne doit donc pas être
modifié par l'utilisateur. Celui-ci veut tester ton site et met donc
une url du style



site.com/page.php?variable=blablablebal



ici, en général ta variable post sera supprimée et lorsque tu
récupèreras le contenu de ta variable elle sera remplacée par
blablablebal



ce n'est qu'un exemple parmis tant d'autres...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
196
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
2 septembre 2005

youps, il marche pas ton exemple Anthomicro ! Un utilisateur peut poster ce qu'il veut :) la page web est juste là pour le style !
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ouais il peut poster ce qu'il veut, enfin c'était ce que j'ai tenté de faire comprendre

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
45
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
31 octobre 2005

Ouais, mais même avec un système comme le mien il peut poster ce qu'il
veut. en fait peu importe le système, on postera toujous ce qu'on
voudra avec un socket ouvert sur le site via c, c++, java, php,
python...
Messages postés
196
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
2 septembre 2005

via nc/telnet quoi
va voir sur le manuel, la question que tu soulèves y est très détaillée
Messages postés
196
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
2 septembre 2005

ou wget/curl encore plus simple
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Tu ne posteras pas ce que tu veux à partir du moment ou tu vérifies correctement
en PHP ce que l'utilisateur rentre comme données... Après c'est sûr que
si t'utilises javascript en plus des register_globals à on je donne pas
dix minutes pour que ton site soit en rade une fois que tu nous aura
passé l'url (lol)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
196
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
2 septembre 2005

le truc que tu fait ici est encore pire parce que tu vas écraser les variables de sessions.
Ben, tu postes ce que tu veux dans le sens ou tu peux faire une requete post avec les variables que tu veux. Après, libre au programmeur de faire un code pourri avec les variables récupérées :D
Messages postés
45
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
31 octobre 2005

Non, ça ne va pas écraser les variables $_SESSION ça n'écrase que les
variables $_POST, mais c'est vrai que d'un côté c'est du code pas super
propre, car l'utilisateur débutant ne comprendra pas pourquoi ça
fonctionne.