Il problema principale è che le password errate devono essere memorizzate in un modo che consenta di visualizzarle successivamente agli utenti. Il che, come ha sottolineato il tuo dev, significa che non possono essere prima crittografati con hash. Il risultato è che le memorizzi come testo normale (non valido) o crittografate (meglio ma non normalmente consigliato).
Il rischio maggiore è se questo database di password non valide diventa accessibile agli aggressori. O compromettono il server, eseguono SQL injection o lo recuperano in qualche altro modo. Piuttosto che decifrare le password primarie, che si spera siano fortemente hash e quindi obiettivi più difficili, potrebbero decidere di compromettere gli account utilizzando le informazioni nella cronologia delle password non valide. O accedono facilmente alle password in testo normale o tentano di trovare la chiave di crittografia che consente loro di decrittografare nuovamente le password in testo normale.
Una fonte comune di errori di accesso sono errori di battitura minori durante il processo di immissione della password. Quindi la mia password è Muffins16 ma digito mUFFINS16 perché il mio blocco maiuscole è attivo. O Muffins166 perché ho premuto due volte lo stesso tasto. Oppure Muffina16 perché il mio dito ha premuto il tasto sbagliato. Come puoi vedere, queste variazioni sono abbastanza vicine all'originale che gli aggressori possono probabilmente determinare la password valida dalle password non valide provando alcune piccole modifiche o confrontando le password errate con le parole o i nomi del dizionario.
Questo problema è esacerbato perché la maggior parte delle persone utilizza scelte di password simili a questi formati e non stringhe casuali. È più difficile per un utente malintenzionato identificare l'errore di battitura se la password non valida è V8Az $ p4 / fA, sebbene sia ancora molto più facile provare varianti di quella quindi indovinarla senza alcuna informazione.
Un altro rischio è che gli utenti potrebbero non ricordare quale delle loro password hanno utilizzato su questo sito, quindi provano quelle comuni. Ora questo sito è improvvisamente un obiettivo più grande perché un utente malintenzionato potrebbe essere in grado non solo di compromettere l'account di un utente lì, ma anche su altri siti con il pratico elenco di password "non valide".
Puoi mitigare alcune di queste rischi cancellando l'archiviazione delle password non valide immediatamente dopo la visualizzazione dopo un accesso valido. Ciò dovrebbe limitare la finestra di opportunità per un utente malintenzionato di accedere e trarre vantaggio dai dati.
La domanda che dovresti probabilmente porre al tuo cliente è come prevede che gli utenti trarranno vantaggio dal vedere le loro password non valide. È così che gli utenti possano identificare come hanno digitato male la loro password? Gli errori di battitura non sono intenzionali, quindi è improbabile che mostrare loro l'errore migliorerà i futuri tentativi di accesso. Quindi gli utenti possono identificare un utente malintenzionato che cerca di indovinare le proprie password? Un feedback simile può essere fornito elencando data, ora, IP / geolocalizzazione o altre informazioni per tentativi non validi senza la password tentata. Quindi gli utenti sanno che hanno sbagliato durante l'immissione della password e non incolpano il sistema di accesso del sito? Sembra l'unico con merito e non sono sicuro che fornisca un valore sufficiente per giustificare il rischio.
La mia ipotesi è che una volta che avrai compreso meglio cosa stanno cercando di ottenere con questa funzione, potrai probabilmente suggerire alternative più sicure.