2012-02-29 9 views
5

Come il manuale dice:

Nota: La classe Session non utilizza sessioni PHP native. Lo genera i propri dati di sessione, offrendo una maggiore flessibilità per gli sviluppatori di .

Ma quando posso conservare alcuni dati utilizzando $this->session->set_userdata(array('sample_key' => 'sample_value'));, in phpinfo() posso trovare sample_key e sample_value in questo.

ho sperato che la parte

non utilizza sessioni PHP native

essere il che significa che nasconde le variabili di sessione da phpinfo().

Ho sempre pensato che potesse essere una mancanza di sicurezza. Potrebbe essere?

Come sembra, i valori sono urlencode ed.

+2

Le pagine 'phpinfo()' non devono essere accessibili pubblicamente su un sistema di produzione. Dubito fortemente che qualcuno abbia mai usato le session vars mostrate lì come motivo per usare un sistema di sessione personalizzato. – ThiefMaster

+2

Il vero problema di sicurezza sarebbe avere l'output 'phpinfo()' disponibile pubblicamente. – ceejayoz

risposta

0

La "sessione" di CodeIgniter memorizza semplicemente i dati in un cookie e li chiama una sessione. Le sessioni native di PHP memorizzano i dati sul server e un "sessionID" in un cookie.

In phpinfo, è possibile visualizzare le variabili, ma è la sessione, non è possibile visualizzare la sessione di un altro utente.

+0

Molto falso. Esistono numerosi driver di sessione disponibili, incluso uno che memorizza i dati nel database. – ceejayoz

+4

@ceejayoz: dove ho detto che i driver alternativi non erano disponibili? Ho appena descritto il comportamento predefinito. –

+0

Il cookie memorizza solo l'ID di sessione. Memorizzare i dati di sessione reali in un cookie sarebbe un rischio di sicurezza odioso, ad es. mantenere "superuser = 0" su un cookie lato client inviterà ogni sorta di cose "divertenti". –