Come posso affrontare in modo efficiente la gestione delle sessioni basata sui cookie?

1

Attualmente la nostra applicazione web utilizza sessioni server-side. A causa della grande quantità di utilizzo della memoria, vogliamo passare alle sessioni basate sui cookie. Ho pensato a diversi modi:

Idea 1

La mia prima idea era di dare al cliente due cookie: SessionID (un hash) e SessionData (i dati crittografati). Il SessionID verrà utilizzato per cercare una chiave di decrittazione per SessionData in un hash in memoria.

Poiché solo le chiavi di decrittografia sono memorizzate sul server, questo dovrebbe comportare un minor utilizzo di memoria. Tuttavia utilizza ancora un po 'di memoria, e il carico della CPU è aumentato a causa della crittografia / decrittografia su ogni richiesta.

Inoltre renderebbe il cluster di sessione dipendente, senza un failover grazioso possibile.

Idea 2

La mia seconda idea era simile al pugno, ma invece di cercare una chiave di decrittazione in una cache, userei una versione salata di SessionID per decrittografare SessionData .

Il lato positivo è che non ci sarebbe più alcuna cache in memoria o hash, e quella sessione sarebbe indipendente dal cluster se il sale è lo stesso per tutti i cluster.

Tuttavia, il compromesso è che è molto meno sicuro a causa del potenziale pericolo di decrittografia o modifica del cookie SessionData , e che il carico della CPU è aumentato a causa della crittografia / decrittografia su ogni richiesta.

C'è un modo migliore per risolvere questo problema? O un modo per modificare una di queste idee per essere un po 'più appetibili?

    
posta thwd 11.01.2012 - 07:49
fonte

1 risposta

1

"No signore, non mi piace"

Stai inutilmente complicando le cose. Considera che memorizzando le informazioni sul lato client, ora devi anche essere più attento a convalidare tutte quelle informazioni quando ti vengono rispedite. O decifri semplicemente e ti fidi di esso? Cosa succede se i dati sono leggermente corrotti quando vengono restituiti? Inoltre stai potenzialmente aumentando l'utilizzo della larghezza di banda in quanto ogni richiesta, che tu lo voglia o no, ti invierà i dati della sessione crittografati.

Una soluzione migliore sarebbe trovare un modo per archiviare i dati della sessione in modo più efficiente sul server. O conservane di meno. O come suggerito da Mike N, aggiungi solo un po 'di RAM.

    
risposta data 11.01.2012 - 21:22
fonte

Leggi altre domande sui tag