Arctic Bay

No Pokés => Technology Empire => Topic iniziato da: Mr.Pkmn su Settembre 09, 2008, 15:42:36



Titolo: register_globals
Post di: Mr.Pkmn su Settembre 09, 2008, 15:42:36
è on di default su Altervista

(http://img74.imageshack.us/img74/475/registerglobalsie9.png)

"E allora?"
Questa direttiva di PHP crea delle variabili globali (=accessibili ovunque) all'inizio di ogni script prendendo spunto dai dati nell'url, dai cookie, dai form ecc... (insomma tutte le variabili che cominciano con "$_")

Se senza register_globals dovessimo eseguire uno script tipo "http://random.org/dice/?num=2" avremmo una variabile $_GET['num'], mentre con register_globals si creerebbe una seconda variabile chiamata $num.

"Meglio più corto no?"
All'inizio può sembrare vantaggioso, ma poi si è scoperto che è un pericolo per la sicurezza. Immaginatevi uno script del genere:
Citato da: login.php
<?php
//Se login ha un valore positivo
if($login) {

//cose da utente loggato

} //altrimenti...
else
die('EPIC FAIL');
?>

E se eseguissimo "login.php?login=true" sotto register_globals? Si creerebbe inaspettatamente una variabile $login che ha sempre un valore positivo! Ok, ma non tutti i coders sono così mona da fare script così semplici e insicuri, e se ne possono benissimo granfottere facendo così:
Citato da: login.php coi controcazzi
<?php
//PWNT
$login = false;

/* controlli vari */
 
//Se login ha un valore positivo
if($login) {

//cose da utente loggato

} //altrimenti...
else
die('EPIC FAIL');
?>
così facendo la variabile login sarebbe definita negativa fin dall'inizio, a priori di quello che $_GET['login'] contiene.

A quanto ho capito Altervista tiene register_globals on per mantenere la compatibilità e agevolare il passaggio PHP 4 > PHP 5.
Però sono curioso di sentire la vostra: devono essere i programmatori più attenti o altervista deve impostare register_globals di default a off?