GNT sans publicité, site mobile, fonctionnalitées exclusives...

Variables Globales a OFF : contournement

Le
Road2Hells
Salut,

en attendant de purger mes scripts contenant encore des variables globales
j'ai rajouté ceci au début ma librairie principale appelé par toutes mes
pages
[code]
foreach ($_POST as $k => $v) {
if ( (isset($_POST[$k])) && (!isset($$k)) ) {
$$k=$_POST[$k];
}
}
foreach ($_GET as $k => $v) {
if ( (isset($_GET[$k])) && (!isset($$k)) ) {
$$k=$_GET[$k];
}
}
[/code]

en gros ça me recrée les variables envoyés par les formulaires
pour chaque $_GET/POST[nom_variable] il me recrée une variable
$nom_variable

y a t'il un autre moyen lorsque les variables globales sont à OFF dans le
php.ini?

--
Bertrand
Qui trop écoute la météo, passe sa vie au bistrot
(proverbe breton)
Lire les 20 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
slambert
Le #71062
en attendant de purger mes scripts contenant encore des variables globales
j'ai rajouté ceci au début ma librairie principale appelé par toutes mes
pages
[code]
foreach ($_POST as $k => $v) {
if ( (isset($_POST[$k])) && (!isset($$k)) ) {
$$k=$_POST[$k];
}
}
foreach ($_GET as $k => $v) {
if ( (isset($_GET[$k])) && (!isset($$k)) ) {
$$k=$_GET[$k];
}
}
[/code]

en gros ça me recrée les variables envoyés par les formulaires
pour chaque $_GET/POST[nom_variable] il me recrée une variable
$nom_variable


Super dangereux.

Rajoute au moint un stripslashes, un trim, un striptag, un htmlentities,
voir un str_replace sur les % .

Au MI-NI-MUM. Et n'oublie pas non plus le cas des tableaux.

Tu peux, peut etre , faire comme cela, à la seule et unique condition de
bien comprendre ce que tu fais et de faire ton code en conséquence.


y a t'il un autre moyen lorsque les variables globales sont à OFF dans le
php.ini?


tu as le cas des magic quote aussi, dont il faudra prendre soin dans tes
tests....
if (get_magic_quotes_gpc()==1) .......

@++

Stef

thierry
Le #71057
Salut,
bonjour,


le code

foreach ( $_REQUEST as $k => $v ) {
if ( !isset(${$k}) )
${$k} = $v;
}

devrait suffire

sinon
http://fr2.php.net/manual/fr/ini.co...er-globals
si tu as accès à un htaccess (si ton serveur est sous apache quoi)


en attendant de purger mes scripts contenant encore des variables globales
j'ai rajouté ceci au début ma librairie principale appelé par toutes mes
pages
[code]
foreach ($_ as $k => $v) {
if ( (isset($_POST[$k])) && (!isset($$k)) ) {
$$k=$_POST[$k];
}
}
foreach ($_GET as $k => $v) {
if ( (isset($_GET[$k])) && (!isset($$k)) ) {
$$k=$_GET[$k];
}
}
[/code]

en gros ça me recrée les variables envoyés par les formulaires
pour chaque $_GET/POST[nom_variable] il me recrée une variable
$nom_variable

y a t'il un autre moyen lorsque les variables globales sont à OFF dans le
php.ini?



thierry
Le #70786
enfonçons une porte ouverte

évidemment dans ton foreach tu DOIS valider le format
des entrées
Road2Hells
Le #70781
le23 mars 2007, thierry a dégazé dans fr.comp.lang.php:

le code

foreach ( $_REQUEST as $k => $v ) {
if ( !isset(${$k}) )
${$k} = $v;
}

devrait suffire
sauf qu'en fonction de la directive de ton php.ini varables_orders=EGPCS

les résultat de $_REQUEST peuvent être imprévisible si tu a la mauvaise
idées d'appeller des variables de la même facon que certaines autres comme
des variables d'environnement ou server
je ne veux que POST et GET
je ne me sert pas, ni des $_ENV, ni des variables $_COOKIES, ni des
variables $_SERVER

sinon
http://fr2.php.net/manual/fr/ini.co...er-globals
si tu as accès à un htaccess (si ton serveur est sous apache quoi)
en local oui mais chez mon hébergeur non :-)




--
Bertrand
Qui trop écoute la météo, passe sa vie au bistrot
(proverbe breton)

Road2Hells
Le #70783
le23 mars 2007, slambert a dégazé dans fr.comp.lang.php:

[code]
foreach ($_POST as $k => $v) {
if ( (isset($_POST[$k])) && (!isset($$k)) ) {
$$k=$_POST[$k];
}
}
foreach ($_GET as $k => $v) {
if ( (isset($_GET[$k])) && (!isset($$k)) ) {
$$k=$_GET[$k];
}
}
[/code]
Super dangereux.


Rajoute au moint un stripslashes, un trim, un striptag, un
htmlentities, voir un str_replace sur les % .

Au MI-NI-MUM. Et n'oublie pas non plus le cas des tableaux.

Tu peux, peut etre , faire comme cela, à la seule et unique condition
de bien comprendre ce que tu fais et de faire ton code en conséquence.
pour info avant toutes injections/requetes mysql je passe mes variables

dans une de ces 2 fonctions
(j'utilise les librairies ADOdb pour mes accès database)

[code]
function make_db_safe ($input) {
// data going into the db
global $conf, $conn;
if ($conf[strip_html] = "yes") {
$output = strip_tags($input, $conf[allowed_html_tags]);
// strips out disallowed tags
}
$output = $conn->qstr($output, get_magic_quotes_gpc());
return $output;
}

function make_db_extra_safe ($input) {
// handles data going into the db
global $conn;
$output = strip_tags($input); // strips out all tags
$output = ereg_replace (";","",$output);
$output = $conn->qstr($output, get_magic_quotes_gpc());
return $output;
}
[/code]

--
Bertrand
Qui trop écoute la météo, passe sa vie au bistrot
(proverbe breton)


Publicité
Suivre les réponses
Poster une réponse
Anonyme