2011-12-17 13 views
7

I siti web come Facebook store hanno effettuato l'accesso agli utenti nei cookie (lato client) o sessioni (lato server)? I miei test indicano che fanno il primo.I siti web come Facebook store hanno effettuato l'accesso agli utenti in cookie o sessioni?

+0

Se memorizzassero le informazioni su cui l'utente ha effettuato l'accesso in un cookie, chiunque potrebbe accedere come qualcuno che non è. Quindi * probabilmente * non è così;) –

+0

Le sessioni sono spesso eliminate da un valore casuale memorizzato in un cookie. Il cookie di solito non conterrà alcun dato identificativo di conseguenza, e se lo fa, verrà convalidato lato server con altri mezzi. –

+0

cookie memorizzano un ID univoco.Il server utilizza questo ID univoco per l'autenticazione. –

risposta

12

In genere, le informazioni sensibili come l'utente attualmente connesso devono essere memorizzate sul lato server - ricorda che i cookie possono essere letti e modificati liberamente dall'utente.

Quello che probabilmente state vedendo è il cookie di sessione che lega un client specifico a una sessione specifica sul server - è così che il server sa quale sessione utilizzare per voi. In questo caso, l'unica cosa che il cookie contiene è un ID sessione casuale, lungo e casuale, quindi non può essere facilmente indovinato da un utente malintenzionato.

L'atto di rubare un cookie di sessione di un altro utente si chiama session hijacking.

Ulteriori informazioni:

+0

Grazie a Pekka ... ma puoi spiegare ulteriormente ... ho pensato che una sessione su un server è un file ... perché dovresti averli entrambi? – jon

+1

I cookie possono essere crittografati e utilizzare i checksum per evitare di essere modificati o letti: P – Esailija

+0

@jon legge come funzionano le sessioni (ad esempio nel capitolo Sessione nel manuale PHP). Il cookie è necessario per Facebook per sapere quale utente ha quale sessione. –

2

Usano sessioni lato server in combinazione con un cookie.

Il cookie contiene un ID, questo ID viene inviato a FaceBook e il server controlla i dettagli per la sessione con tale ID.

+0

Grazie Richard, ma perché hanno bisogno della sessione? Quando parliamo di sessioni, per esempio: $ _SESSION ['utente'] – jon

4

Penso che l'idea alla base di $_sessions sia molto più veloce ed efficiente per il server di elaborare le proprie informazioni, piuttosto che ricevere informazioni di massa dal client.

Guardate in questo modo:

You (il server) e un amico (il cliente) sono spettegolare su l'altra amica Cindy, non si amico vi darà tutti i dettagli delle informazioni su di lei (colore dei capelli, altezza , eccetera...)? No, sarebbe una perdita di tempo. È molto più veloce per te elaborare le informazioni che già conosci su Cindy (sul file $_session, sul lato server) e ricevere solo informazioni univoche ($_cookies) dal tuo amico (il client).

Efficiente: "Ehi, hai sentito cosa ha fatto Cindy la scorsa notte?"

NON efficiente: "Ehi, hai sentito cosa Cindy con capelli castani, occhi blu, corporatura media, ecc ... ha fatto la scorsa notte?"

Ovviamente, questo non riassume completamente $_sessions e $_cookies, ma forse aiuterà qualcuno a capire la gestione efficiente dei dati a breve termine.

0

Essi utilizzano probabilmente le sessioni e quindi memorizzano alcune informazioni in cookie, come, user_id è connesso con session_id = .../quindi check-in sessione per quel session_id per vedere se l'utente è ancora loggato. Penso che è uno spreco di risorse. Secondo me memorizzo informazioni critiche in sessioni e grandi informazioni nei cookie

Problemi correlati