Ormai, dovremmo sapere tutti usare bcrypt o scrypt per archiviare gli hash delle password salate con un numero sufficiente di round. (Vedi, ad esempio, link ) La lezione: supponiamo che il tuo database di autenticazione sarà compromesso ad un certo punto.
Dovremmo anche sapere come progettare i cookie di autenticazione utente che soddisfano il livello di sicurezza e riservatezza che la nostra applicazione richiede utilizzando HMAC con chiavi per utente. Il documento più citato che ho visto è link .
Tuttavia, ogni documento e proposta che ho letto che affronta l'autenticazione sicura dell'utente affronta una serie di problemi diversi e sovrapposti (ad esempio intercettazioni, manomissioni e attacchi di replay) e sono spesso finalizzati alla memorizzazione di opaco-to-the- anche i dati dell'utente.
Non riesco a trovare nessuno che indirizzi come rendere i cookie di autenticazione utente lato client resistenti agli attacchi anche dopo che il database di autenticazione del server è stato compromesso.
Il documento sopra, per esempio, si basa solo sulla segretezza della chiave del server. Molte implementazioni che ho visto generano anche un token per utente che viene utilizzato nell'HMAC e memorizzato sul server. In entrambi i casi, una volta compromesso il segreto del server, è banale falsificare le credenziali di qualsiasi utente.
Esistono riferimenti o implementazioni note che coprono questo scenario per le tipiche applicazioni Web (ad esempio, al di fuori degli ambienti aziendali e bancari)?