Semplicemente perché già almeno da 4 anni a questa parte, il team di php SCONSIGLIA vivamente di mantenere la Registerglobals su on, e nella prossima versione addirittura la registerglobals scomparirà, rendendo impossibile attivarla.

La ragione di questo è che, in realtà (se ci pensi è anche chiaro perché) è MOLTO pericoloso che inserendo un parametro sulla url venga creata una variabile corrispondente nel codice.

Pensa ad esempio se tu stessi usando la variabile booleana $autenticato per verificare nel tuo codice che l'utente abbia fatto correttamente login: io potrei aggiungere alla url che visito ?autenticato=1 ottenendo così di essere automaticamente autenticato!

E' ovvio che se nel tuo codice non ci sono difetti, tu inizializzeresti $autenticato a false subito prima di verificare dalla sessione che io abbia fatto login, ma se la regglobals è attiva bastano piccole dimenticanze come quella, assai comune, di non inizializzare una variabile, per aprire ENORMI varchi di sicurezza...

Invece, con la regglobals a off, qualsiasi cosa io metta sulla url andrebbe dentro all'array $_GET (e ciò che arriva dal submit di una form andrebbe in $_POST), e non potrebbe in NESSUNA maniera pasticciare le variabili disponibili nel tuo applicativo: nell'esempio di prima, $autenticato e $_GET["autenticato"] sono separate, e non c'è nessun modo di pasticciare con $autenticato!

Insomma, il mio vivissimo consiglio è: rimetti SUBITO in entrambe le config la Registerglobals su OFF, e correggi il tuo codice per leggere i parametri sulla url dalla $_GET e i dati delle form dalla $_POST, farai fare al tuo codice un notevole balzo in avanti quanto a sicurezza!

(già verificato di non essere vulnerabile alle sql injections? è l'altro difetto di sicurezza assai comune... )

Ciao!