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?