2011-09-30 11 views
6

Come dovrei ospitare l'id dell'utente nella sessione? solo per inserire l'id? Voglio dire (per esempio):Iniezione di sessione?

$_SESSION['id'] = 1; 

Non c'è un modo per cambiarlo dall'utente stesso (come cookie ..)? Perché se così fosse, può passare a qualsiasi ID.

Un'altra domanda a riguardo: come posso verificare se l'utente ha effettuato l'accesso (con sessioni)? Ho creato una sessione:

$_SESSION['is_logged_in'] = true; 

Anche in questo caso, non è in grado l'utente basta creare una sessione che il suo nome è 'is_logged_in' e il suo valore è vero? o solo il server ha un controllo sul valore del server?

+4

vedere: [PHP Session Fixation/Hijacking] (http://stackoverflow.com/questions/5081025/php-session-fixing-hijacking#5081453) –

+1

Il modo in cui deve funzionare è la SESSIONE controllata e creata da solo il server. Quindi no, l'utente non dovrebbe essere in grado di * creare una sessione che il suo nome è 'is_logged_in' * e influenza la sessione nel modo in cui descrivi, a meno che la tua metodologia SESSION non sia seriamente imperfetta. –

+1

I valori in '$ _SESSION' sono memorizzati esclusivamente sul lato server. L'utente riceve solo un cookie PHPSESSID contenente il proprio ID di sessione. PHP lo utilizza per cercare i dati nell'archivio delle sessioni. –

risposta

12

Tutte le variabili di sessione in PHP vengono memorizzate sul lato server. Il client memorizza un cookie che fa riferimento a quale sessione deve essere utilizzata, quindi il server cerca i valori per la sessione. È sicuro memorizzare is_logged_in nella sessione e l'id utente.

Quello che dovresti sapere è se un altro utente ottiene una sospensione del cookie di sessione di un altro utente, sarà in grado di imitare quell'utente fino a quando la sessione scadrà. Una soluzione semplice è collegare le sessioni agli IP.

+0

Controllare @Charles [risposta] (https://security.stackexchange.com/questions/14093/why-is-passing-the-session-id-as-url-parameter-insecure#14094). "il blocco di una sessione su un indirizzo IP potrebbe accidentalmente allontanare le persone". – another