Riepilogo
Una volta che un utente si collega a un sito Web e le sue credenziali nome utente / password sono verificate e viene stabilita una sessione attiva, è possibile evitare di colpire il DB per ogni singola richiesta da quell'utente? Qual è il metodo consigliato per autenticare in sicurezza le richieste successive per la durata della sessione, riducendo al minimo le query DB e altri traffico di rete interno?
Sfondo
In un'architettura di server di applicazioni Web stateless, in cui ogni richiesta non è a conoscenza di alcuna attività precedente dell'utente, sarebbe necessario interrogare il DB su ogni singola richiesta da quell'utente (in genere eseguendo una query sull'ID di sessione archiviato in un cookie e trasferito nell'intestazione della richiesta). Ma cosa succede se alcune informazioni di base sono state crittografate e memorizzate in quel cookie di sessione che aveva informazioni sufficienti per convalidare l'utente per richieste non sensibili e non modificabili? Per tali richieste, è possibile ad esempio criptare e memorizzare l'ID utente e qualcosa che identifichi in modo univoco la propria macchina il più possibile (user-agent + indirizzo IP) nei dati della sessione. La chiave utilizzata per crittografare i dati potrebbe cambiare ogni giorno rendendo difficile per qualsiasi hacker clonare i dati di sessione su un altro computer. Alla scadenza della sessione, è necessario convalidare completamente le credenziali dell'utente. Il fatto è che la più grande minaccia per l'hacking di una sessione di un utente sarebbe stata quella di usare il computer di un utente che non l'aveva lasciato. Non dovrei preoccuparmi di questo e lasciare che un certo livello di memorizzazione nella cache tra i server di app Web e il DB si occupi di accelerare il processo di autenticazione? Anche se può sembrare un'ottimizzazione non necessaria, sembra che un candidato sia maturo per migliorare l'efficienza poiché ogni richiesta richiede questo processo. Grazie per qualsiasi suggerimento!