PHP  »  Guide  »  Guida sicurezza di PHP 

Pericoli in agguato sui file di sessione



Lo ripeto ancora, è un concetto importante: le sessioni PHP vengono propagate tramite il già citato SID, stringa "univoca" che identifica una data sessione, puntando il file di sessione sul server Web.

La sicurezza dei file di sessione diviene a questo punto un problema sistemistico: è necessario configurare il server in modo che nessuno possa accedere da remoto a tali file e che nessuna applicazione "estranea" possa aprirli in lettura e/o scrittura. Le relative problematiche vanno (ben) al di là della presente guida.

Tuttavia, pur dando per scontato quanto sopra, la situazione non è rosea: se infatti l'applicazione PHP risiede su spazio Web in hosting (e solo in questo caso può nascere il problema), è verosimile che tutti i file di sessione di tutte le applicazioni vengano salvati assieme: di qui a che un'applicazione PHP bacata o appositamente studiata possa visualizzare il contenuto di ogni file il passo è breve. Di default, i file di sessione sono appunto salvati nella medesima cartella, col risultato che se uno script legge un suo file di sessione, allora quello stesso file viene letto da un qualsiasi altro script di una qualsiasi altra applicazione che giri sullo stesso Web server (quindi coi medesimi permessi).

Le soluzioni sono di impostare, via script, tramite la direttiva ini_set (da usare prima del session_start() e per ogni pagina dello script), i parametri relativi alle sessioni (session.save_path in primis), differenziando la cartella temporanea relativa al proprio programma dalle altre cartelle temporanee, oppure di salvare le sessioni su database.

La seguente riga di codice imposta quale directory di salvataggio dei file di sessione il path percorso\mydir\ (che diventa percorso/mydir/ su sistemi Linux o Unix like):

ini_set("session.save_path","percorso/mydir/");

Per ciò che concerne la gestione delle sessioni su database, invece, il fulcro dell'idea riguarda il salvataggio dei dati di sessione direttamente su db, di modo che tali dati siano protetti da chiunque non abbia le credenziali necessarie per leggere su tabelle a noi riservate allo scopo. Poste ovviamente le corrette impostazioni degli stessi permessi.

Ultimi articoli PHP

Sessioni PHP: cosa sono, come si usano

Dalla configurazione di PHP, alla gestione delle sessioni in un...

Continuous Integration: automatizziamo i client con Phing

Continuous Integration: automatizziamo i client con Phing. Esempi...

Archiviazione delle applicazioni PHP con Phar

Come incorporare intere applicazioni PHP all'interno di un singolo...

I traits in PHP 5.4

Cosa sono, a cosa servono e come si unsano i traits, la novità per...

PHP 5.4: il web server integrato

Impara ad usare il web server integrato nella versione 5.4 di PHP:...

Altri articoli

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti