Php salva i dati relativi alle sessioni tramite la serializzazione, ovvero l’array $_SESSION viene linearizzato e salvato in un supporto come un file o un record di un database.
Il comportamento di questo viene controllato da 2 variabili del file di configurazione php.ini:
Session.save_handler: indica a php come viene salvata la sessione e in quale supporto, il valore di default è file.
Session.save_path: indica la directory in cui le sessioni saranno salvate e mantenute. Il valore di default è /tmp.
Al giorno d’oggi la maggior parte dei servizi di hosting forniscono un servizio di hosting condiviso, questo abbassa di molto i costi sia per la gestione che per l’utente finale. Un setup del genere però, in cui diverse web application girano sullo stesso server in cui tutte le sessioni vengono salvate nella stessa directory porta degli enormi problemi di sicurezza, oltre che di mal funzionamenti come la perdita di login.
La soluzione è una suddivisione delle directory di salvataggio delle sessioni in applicazioni, così che ogni applicazione avrà la propria directory, ad esempio:
/tmp/applicazione1
/tmp/applicazione2 ecc....
Se il servizio di hosting in cui ci appoggiamo non ha già pensato a modificare la variabile del php.ini possiamo provare ad aggiungere la seguente riga di codice nella nostra applicazione:
ini_set(‘session.save_path‘, ‘/tmp/nostra_app‘);