OVH Community, votre nouvel espace communautaire.

Guide ovh 'register_global'


i-services
18/06/2004, 15h38
moi j'ai constaté dans mes scripts une faille de sécurité avec register_global sur on.

j'ai une fonction qui permet quand je valide un formulaire d'enregistrer toutes les variables de post en variable global, afin que je puisse directement les utiliser avec $variable même si $variable a déjà été définie au début du script avec uen valeur différente de celle venant du formulaire. Cette fonction trim() et stripslashes() également les valeurs pour que je ne doive pas le faire variable par variable

le problème est que si un visiteur crée un formulaire avec un champ "variable_systeme" et que $variable_systeme contient une valeur de configuration de votre site, cette variable sera écrasée ... Imaginez ce que soit une variable qui est insérée telle quelle dans vos requetes sql. Il est alors facilement possible de modifier une requete en passant ce qu'on veut via les variables de formulaire

j'ai donc du passer register_global sur off et pour que ma fonction enregistre une variable en global il faut qu'elle ne soit pas encore initialisée, à moins que je ne passe en parametre à cette fonction le nom des variables qui peuvent etre écrasées (cela peut arriver).

EricZone
08/03/2004, 18h25
A mon avis c impossible, ou il faudra faire un serveur special pour les mutua qui veulent OFF, et laisser les autres en ON.

ET puis quand un mec veut rentrer sur un site, register on ou off, c pareil pour lui, il fera juste un petit formulaire en html vite fait, ca lui prendra 20 secondes de plus que de marquer la var dans l'url...

grandzebu
20/02/2004, 23h34
Reprendre les scripts en register_global OFF c'est beaucoup de boulot.
Utiliser $_POST["action"] ou $action revient au même : dans les 2 cas il faut vérifier que la variable contient bien ce à quoi on s'attend.
Depuis quelques temps j'initialise en début de script toutes les variables locales au script et je vérifie toutes celles qui arrivent de l'extérieur; mais c'est vrai qu'il faudrait reprendre chaque script tranquilement ...

xgquebec
14/02/2004, 18h48
Salut

En tous cas, je pense que si OVH passe un jour en register_global off, ils auront la bonne idée de prévenir quelques semaines avant leurs clients car vu le nombre de sites qui utilisent des scripts non compatibles register_global off ça va être un beau bordel pour le support (la grande majorité doit même pas savoir de quoi il sagit).

Casa
12/02/2004, 12h13
avec le register_global à off, la plupart des débutants effectivement récupère les données d'un post par le nom de la variable (le nom du champs input) sans vérifier si la variable vient bien d'un post ou d'un get ou ailleurs et souvent sans la tester. Bref le champs des variables est tellement élargi qu'on ne pense pas à les controler suffisemment. et elles peuvent être dès lors détourner de leur utilisation, spécialement les variables qui ne viennent ni d'un post ou get mais créées dans le code sans être initialisée correctement.
exemple tu crée un flag de controle:
if (conditon) $flag = true.
(tu oublies de mettre $flag = false avant pour initialiser)
plus loin
if ($flag)
// faire ceci
else
// faire cela
avec register_global ON on peut te passer $flag dans l'url ou un post et dévier ton code.
bien sûr en soit c'est pas une faille, mais register_global ON amplifie donc les autres erreurs que l'on peut faire (ici utiliser une variable sans l'initialiser correctement).

TheRebel226
12/02/2004, 10h19
Salut,

C'est pas histoire d'etre porc.. C'est que tout le monde a débuté un jour dans un langage, et que la plupart des bouquins et howto sur PHP sous-entendent que le register global est a on..

Après selon l'avancement de l'appli en PHP, si les gens ont le temps, ils la reprennent et la securisent..

Mais concretement, quel est la methode d'attaque quand register global est a on? Je ne vois pas .. ?

A+

jeanyves
12/02/2004, 07h52
...c'est la façon dont sont codés les programmes. Un porc qui programme mal avec register_globals à on ou off reste un porc. Non ?

Casa
11/02/2004, 22h07
Depuis toujours en mutu, le register_global est à ON chez OVH, on n'est pas prêt de le voir à OFF visiblement alors que c'est effectivement non pas une faille mais un affaiblissement de la sécurité d'un site. (cf les indications dans le php.ini lui-même)
il a été question à un moment que php5 ne fonctionne qu'en register_global off, visiblement ils ont reculé devant la chose dommage !

Psyk
11/02/2004, 04h32
Bonjour,

J'ai lu le guide ovh "register global" : http://guides.ovh.com/PassageParametreEnPhp/

Il peut être interessant de préciser que si register_global est désactivé par défaut, c'est qu'il peut engendrer des failles de sécurité si le code n'est pas parfait (les scripts ne s'exécutant pas avec un register_global désactivé sont généralement anciens et donc d'autant plus susceptibles de ne pas avoir été revus à jour en prenant à compte les failles php les plus exploitées depuis qqs mois).

Enfin c'est seulement une suggestion.