Differenze tra cookie e sessioni?


154

Mi sto allenando nello sviluppo web e sto imparando su JSP e Servlet . Ho una certa conoscenza di HttpSession- l'ho usato in alcuni dei miei progetti di esempio.

Nei browser ho visto l'opzione per "eliminare i cookie". Se elimino i cookie, elimina HttpSessionanche.

I cookie e la sessione sono uguali? Quali sono le differenze tra loro?


Vedi anche questa domanda: < stackoverflow.com/questions/356562/… > In particolare, le osservazioni sui cookie firmati.
Joel Coehoorn,

Penso che la seconda risposta a questa domanda sia più adatta, se la selezioni come migliore risposta, molte persone la leggeranno.
Suraj Jain,

Risposte:


180

Le sessioni sono file sul lato server che contengono informazioni sull'utente, mentre i cookie sono file sul lato client che contengono informazioni sull'utente. Le sessioni hanno un identificatore univoco che le associa a utenti specifici. Questo identificatore può essere passato nell'URL o salvato in un cookie di sessione.

La maggior parte dei siti moderni utilizza il secondo approccio, salvando l'identificatore in un cookie anziché passarlo in un URL (che rappresenta un rischio per la sicurezza). Probabilmente stai usando questo approccio senza saperlo, e cancellando i cookie cancelli efficacemente le loro sessioni corrispondenti mentre rimuovi l'identificatore di sessione univoco contenuto nei cookie.


10
" passandolo in un URL (che rappresenta un rischio per la sicurezza). " in realtà entrambi gli approcci presentano rischi per la sicurezza (diversi). L'ID segreto nell'URL può essere reso sicuro se fatto correttamente e se l'utente comprende che l'URL è segreto e non può mai essere pubblicato in un forum pubblico.
curiousguy,

1
"L'identificatore può essere passato nell'URL o salvato in un cookie di sessione." . Dove? lato client o server? grazie per aver chiarito di più.
Adib Aroui,

4
@whitelettersandblankspaces Il cookie di sessione è memorizzato sul client (e il suo valore contiene l'identificatore di sessione univoco che viene inviato con ogni richiesta per mappare la sessione del browser alla sessione utente sul server).
WynandB,

306

Un cookie è semplicemente una breve stringa di testo che viene inviata avanti e indietro tra il client e il server. È possibile memorizzare name=bob; password=asdfasin un cookie e inviarlo avanti e indietro per identificare il client sul lato server. Potresti pensare a questo come portare avanti uno scambio con un cassiere che non ha memoria a breve termine e ha bisogno che ti identifichi per ogni singola transazione. Ovviamente usare un cookie per conservare queste informazioni gentili è orribile e insicuro. Anche i cookie hanno dimensioni limitate.

Ora, quando il cassiere è a conoscenza del suo problema di memoria, può scrivere le tue informazioni su un pezzo di carta e assegnarti un breve numero ID. Quindi, invece di fornire il numero di conto e la patente di guida per ogni transazione, puoi semplicemente dire "Sono cliente 12"

Traducendolo in server Web: il server memorizzerà le informazioni pertinenti nell'oggetto sessione e creerà un ID sessione che verrà inviato al client in un cookie. Quando il client restituisce il cookie, il server può semplicemente cercare l'oggetto sessione utilizzando l'ID. Pertanto, se si elimina il cookie, la sessione andrà persa.

Un'altra alternativa è che il server utilizzi la riscrittura degli URL per scambiare l'id di sessione.

Supponi di avere un link: www.myserver.com/myApp.jsp puoi scorrere la pagina e riscrivere ogni URL come www.myserver.com/myApp.jsp?sessionID=asdfo anche www.myserver.com/asdf/myApp.jspe scambiare l'identificatore in quel modo. Questa tecnica viene gestita dal contenitore dell'applicazione Web e di solito viene attivata impostando la configurazione per l'utilizzo di sessioni senza cookie.


29
Questa è una meravigliosa spiegazione ancorata a una grande analogia nel mondo reale. Questa risposta dovrebbe essere migliorata molto di più. Molto accessibile ai neofiti che sono quelli che hanno maggiori probabilità di porre una simile domanda.
user798719

2
Cosa succede se sono un utente e qualcun altro viene a conoscenza del mio ID di sessione?
Maria Ines Parnisari,

3
@ I19 Forse, possono impersonarti. Questo è successo negli scenari di gioco online: annusa il wifi dell'hotel, ruba un ID di sessione e accedi all'account. Assicurare una sessione è un'altra storia.
Chris Cudmore,

2
Quindi chi crea per primo il cookie? Server o client? O questo dipende dall'applicazione? (Direi che il server poiché altrimenti pone minacce alla sicurezza, ma penso che valga la pena menzionarlo?)
nha

4
@nha Il server crea la sessione e la passa nella risposta con il cookie. La sessione viene creata in base alla logica dell'applicazione quando si desidera che venga creata. Il client può anche creare un cookie, ma potrebbe non essere molto utile nello scenario di identificazione della sessione perché il server potrebbe non sapere quale valore rappresenta nella sessione.
Azeem,

4

I cookie e la sessione memorizzano sia informazioni sull'utente (per rendere statica la richiesta HTTP) ma la differenza è che i cookie memorizzano informazioni sul lato client (browser) e le sessioni archiviano informazioni sul lato server. Un cookie è limitato, nel senso che memorizza informazioni su utenti limitati e memorizza solo contenuti limitati per ciascun utente. Una sessione non è limitata in questo modo.



1

I cookie sono fondamentalmente un array globale accessibile da tutti i browser web. Più volte utilizzato per inviare / ricevere valori. funge da meccanismo di archiviazione per accedere ai valori tra i moduli. I cookie possono essere disabilitati dal browser che aggiunge un vincolo al loro utilizzo rispetto alla sessione.

La sessione può essere definita come qualcosa tra l'accesso e la disconnessione. il tempo tra l'utente che effettua l'accesso e la disconnessione è una sessione. La sessione memorizza i valori solo per il tempo della sessione, cioè prima di disconnettersi. Le sessioni vengono utilizzate per tenere traccia delle attività dell'utente, una volta effettuato l'accesso.


0

Google JSESSIONID . Questo spiegherà come l'API Servlet inizialmente utilizza la riscrittura degli URL e quindi, se i cookie sono abilitati, i cookie per gestire le sessioni.

HTTP è senza stato, quindi il browser client deve inviare l'id della sua sessione al server con ogni richiesta. Il server, con qualsiasi mezzo, utilizza questo ID per recuperare tutti i dati per quella sessione rendendoli disponibili per la durata della richiesta.


0

Sessione in Asp.net:

1.Mantiene i dati in tutta l'applicazione.

2.Presenta i dati se la sessione corrente è attiva. Se abbiamo bisogno che alcuni dati siano accessibili da più controller e viste, la sessione è il modo per archiviare e recuperare i dati.

3. Le sessioni sono file sul lato server che contengono informazioni sull'utente. [Le sessioni sono identificatori univoci che le associano a utenti specifici]

Traducendolo in server Web: il server memorizzerà le informazioni pertinenti nell'oggetto sessione e creerà un ID sessione che verrà inviato al client in un cookie. Quando il client restituisce il cookie, il server può semplicemente cercare l'oggetto sessione utilizzando l'ID. Pertanto, se si elimina il cookie, la sessione andrà persa.


0

I cookie sono un modo per implementare la sessione tra client e server, in questo modo le informazioni sulla sessione memorizzate nei cookie. Ma questo non è l'unico modo per conservare le informazioni sulla sessione, un altro modo è memorizzare le informazioni sulla sessione in Url.


0

I cookie sono memorizzati nel browser come formato di file di testo. Sono archiviati limiti di dati . Consentono solo 4kb [4096bytes] . La variabile $ _ COOKIE non conterrà più cookie con lo stesso nome

possiamo accedere facilmente ai valori dei cookie, quindi è meno sicuro . La funzione setcookie () deve apparire PRIMA della

<html> 

etichetta.

Le sessioni vengono archiviate sul lato server. Viene archiviata una quantità illimitata di dati. Contiene la variabile multipla nelle sessioni. non possiamo accedere facilmente ai valori dei cookie, quindi è più sicuro .

Collegamenti: differenza tra cookie e sessioni


Bene, in realtà puoi contenere più dati nei cookie. Inoltre, le sessioni non possono contenere quantità illimitate di dati. Sei praticamente limitato dalla quantità di RAM che hai.
Koray Tugay,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.