Qualcuno può falsificare una variabile di sessione PHP

2

Ho un sito in cui un utente può creare un account ed effettuare l'accesso. Quando l'utente effettua il login, dopo aver convalidato la password e il nome utente dell'utente, fornisco loro una variabile di sessione PHP contenente il loro nome utente. È così che accedono alle funzionalità sul mio sito, come la creazione di un post sul blog e la modifica della loro biografia utente.

Può qualcuno che vuole entrare nel mio sito tramite l'account di un'altra persona falsificare una variabile di sessione contenente il nome utente dell'utente? Se è così, come possono farlo? E ci sono dei modi per impedirlo?

    
posta DMVerfurth 27.04.2018 - 00:42
fonte

2 risposte

3

No. I dati della sessione sono memorizzati sul server.

L'ID di sessione è l'unica cosa trasferita avanti e indietro tra il client e il server. Pertanto, a meno che il server non sia violato o abbia un bug sul lato server, il client non può modificare direttamente i dati della sessione. Nel tuo caso, il nome utente nella variabile di sessione sembra essere parte dell'ID di sessione o è la sua sostituzione (questo è un po 'poco chiaro).

Ciò non significa che il sistema non debba garantire che solo il client valido conosca l'ID di sessione, poiché questo è ciò che collega il client alla sessione specifica. Ecco perché la funzione session_regenerate_id() deve essere utilizzata ogni volta che viene eseguito un tentativo di accesso. Ciò impedisce la correzione della sessione .

    
risposta data 10.05.2018 - 10:18
fonte
2

Il sessionid PHP rilasciato dopo che un login riuscito è stato generato sul lato server e contiene solo dati casuali. Il sessionid viene inviato come cookie ed è incluso in ogni richiesta successiva dal client.

I dati di sessione sono memorizzati sul server e l'ID di sessione viene utilizzato per fare riferimento a questi dati per ogni richiesta. Il sessionid PHP è considerato sicuro.

Questo non è sempre stato il caso. Nelle precedenti versioni di PHP, l'id della sessione era casuale, ma il generatore casuale era solo seminato dai server ora corrente, indirizzo remoto e id processo. Una volta che un aggressore è stato in grado di capire lo stato del generatore casuale, poteva prevedere gli ID di sessione precedenti e futuri. Vedi link

Ciò ha consentito agli aggressori di rubare sessioni per altri utenti.

Quello che è successo da allora, è che PHP oltre alla vecchia generazione debole, recupera 32 byte da una buona fonte casuale come / dev / urandom su un sistema Linux.

    
risposta data 10.05.2018 - 11:33
fonte

Leggi altre domande sui tag