15/07/2014  - Il REGISTER_GLOBALS è ormai una direttiva deprecata e non più utilizzabile sui nostri server.

15/09/2007 AGGIORNAMENTO : E' attivo nel proprio cpanel un nuovo menù che permette di scegliere la versione di PHP da utilizzare e le estensioni da abilitare. Si può quindi scegliere di abilitare il REGISTER_GLOBALS ed ignorare quanto scritto di seguito.

 

La versione di PHP installata sui nostri server è configurata con la direttiva REGISTER_GLOBALS OFF (http://it.php.net/register_globals). A partire dal PHP 4.2 questo e' un settaggio predefinito e consigliato in quanto piu' sicuro.

Non è pertanto possibile accedere ai valori passati tramite POST o GET direttamente richiamando il nome della variabile corrispondente, ad esempio $id se la chiamata è index.php?id=10, ma bisogna far riferimento alla relativa voce nei vari array superglobali, ad esempio $_POST["id"], oppure $_GET["id"]$_REQUEST["id"].

Nei nostri spazi è attivo il settaggio di default REGISTER_GLOBALS_OFF, quando invece di solito questa impostazione viene lasciata in ON.

Perche' anche in questo settaggio siete diversi?

Questo perchè ci teniamo alla sicurezza e programmare con REGISTER_GLOBALS_ON è pericoloso, permette le intrusioni in modo più facile, è deprecato sin dal PHP 4.2.0 e dal PHP 5 in diventerà il modo di lavorare standard.

Cosa comporta lavorare con REGISTER_GLOBALS_OFF?

Comporta che le variabili speciali come ad esempio quelle di SESSIONE o di moduli inviati via POST o GET non possono essere richiamate direttamente, ma devono essere richiamate con la loro particolare sintassi. Questo comporta maggiore sicurezza.
Esempio pratico. Abbiamo un modulo dove inviamo via POST i campi per un'elaborazione "form to mail" ed è presente il campo "nome". Ebbene questo campo non potrà essere richiamato semplicemente con $nome, ma con $_POST["nome"], perchè essendo disattivata la direttiva REGISTER_GLOBALS non ci sarà l'assegnazione automatica di qualsiasi variabile speciale nella forma semplificata.

Spiegazioni dettagliate su tale direttiva e la sicurezza che comporta le trovate a questi indirizzi:
http://it.php.net/manual/it/security.globals.php
http://it.php.net/register_globals

Ho installato OSCommerce che esige REGISTER_GLOBALS_ON!

Le prossime versioni di tale softare saranno compatibili con register globals off e comunque esiste una patch per far si che le versioni attuali di tale software girino anche con REGISTER_GLOBALS_OFF.

http://www.oscommerce.com/community/contributions,2097

Prova zen-cart, un software che deriva da OScommerce, in italiano e con codice revisionato, infatti lavora nativamente con REGISTER_GLOBALS OFF.
http://www.zen-cart.com

Potete settare REGISTER_GLOBALS_ON solo per il mio spazio?

Si, lo sconsigliamo, ma lo possiamo fare solo in caso di motivato bisogno. Ci sono stati anche diversi utenti che ci hanno ringraziato per questa direttiva, perchè è stato uno sprone che li ha motivati a rendere il loro script compatibile con questo modo di programmare consigliato e più sicuro!

Incoraggiamo tutti gli utenti a rendere compatibili i propri script con REGISTER_GLOBALS_OFF perchè ne va della loro sicurezza e comunque si preparano sin da subito per il PHP 5.

Esiste qualche piccolo trucco per ovviare al problema e rendere compatibile il mio script con REGISTER GLOBALS OFF?

Si, per maggiori informazioni ti consigliamo di leggere questi thread:
http://www.prozone.it/forum/index.php?showtopic=201
http://www.prozone.it/forum/index.php?showtopic=47