In realtà, la password è ciò che dovrebbe proteggere l'utente in caso di perdite di database. Se hash e sale sono corretti , l'utente malintenzionato non dovrebbe essere in grado di ottenere la versione in chiaro della password (con una password ragionevole in un tempo ragionevole con risorse ragionevoli, se un hacker come NSA ti sta seguendo, don Non fare affidamento su questo, inoltre, se si conosce il database trapelato o potrebbe essere trapelato, costringere gli utenti a cambiare la password per essere sicuro). La tua app non deve accettare l'hash come password valida. Quindi l'attaccante non dovrebbe essere in grado di accedere anche se il database è trapelato. Nota: se desideri eseguire l'hash sul lato client, controlla schemi come SCRAM-SHA256 per proteggere questo tipo di attacco.
Il TOTP d'altra parte protegge dalla password dell'utente che viene persa dall'utente o altrimenti ottenuta (forza bruta, intercettazione, keylogger) senza compromettere il server.
Se si desidera una protezione aggiuntiva nel caso in cui il server sia compromesso E si ottenga una password (ad esempio l'attaccante intercetta le richieste di accesso e ottiene la password in questo modo), considerare l'utilizzo di qualcosa come SCRAM per limitare l'esposizione della password al server o utilizzare < a href="https://cweiske.de/tagebuch/ssl-client-certificates.htm"> coppia di chiavi pubblica-privata per l'accesso, possibilmente con un token hardware utilizzando U2F .