Puoi ottenere ciò che desideri senza dover registrare la password. Ma è anche importante chiedersi "perché?" Perché questi controlli? Cosa farai realisticamente con queste informazioni? Possono essere realizzati con mezzi passivi?
Controlla se è solo un errore di battitura: se un utente spesso fallisce il login la prima volta con la stessa password con hash ma in seguito accede con successo, allora è possibile solo un errore di battitura
Controlla se qualcuno sta cercando di indovinare la password: alcune password comuni, proprio come 123456 e birthday, che ha un hash corretto, se questi tentativi esistono, il login fallito può essere fatto da chi cerca la password.
La registrazione dell'account, del timestamp, dell'IP e se sono riusciti è sufficiente. Puoi dedurre molto da queste informazioni.
Se vedi uno schema di fallire, fallire, fallire, passare in rapida successione per lo stesso account, probabilmente è stato un errore di battitura. Se vedi un gran numero di fallimenti di seguito e molto rapidamente, è probabile che si tratti di un attacco a quell'account.
Ma un aggressore intelligente giocherà al gioco dei numeri e distribuirà i suoi attacchi su più account. Se l'aggressore non ha informazioni sui tuoi account, è probabile che qualsiasi ipotesi sulla password funzioni su qualsiasi account. Se hanno 100 password da provare, non importa se le provano tutte su 1 account o le distribuiscono su 100 account, le probabilità sono le stesse.
Allo stesso modo potrebbero utilizzare più indirizzi IP. Se vedi un gruppo di quasi tutti i guasti da molti account ma un singolo IP potrebbe essere un attacco distribuito o potrebbe essere un gruppo di utenti reali dietro lo stesso NAT o VPN. È difficile da dire.
Realisticamente c'è un modo molto più semplice. Questi attacchi sono resi più costosi dalla limitazione della velocità e dai soft lockout. Indovinare una password si basa sulla capacità di eseguire molti tentativi di accesso molto rapidamente. Gli accessi dovrebbero già essere limitati in base all'account, non c'è motivo per cui un utente reale tenterà di accedere più volte al secondo. Scegli il limite di frequenza più alto possibile che non è ancora visibile ai tuoi utenti. Questo sventerà i tentativi di accesso automatizzati a fuoco rapido. Se ci sono comunque tentativi persistenti, aumenta automaticamente ed esponenzialmente il limite di velocità per quell'account (e possibilmente IP), riducilo una volta che i presunti sondaggi si sono attenuati.
Inoltre, puoi fornire un buon feedback sulla sicurezza della password quando gli utenti stanno creando i loro account per evitare password facilmente indovinate.
In questo modo puoi sventare sonde automatiche a scatto rapido senza infastidire gli utenti legittimi che hanno solo difficoltà a digitare oggi.
Controlla se un utente ha un account alternativo: alcuni utenti potrebbero avere un account alternativo ma con password diverse, se un utente di solito non è riuscito ad accedere con lo stesso hash e l'hash è lo stesso di un altro account ma poi effettua il login con successo, allora potrebbe essere un utente che tenta di accedere con un account alternativo ma si è dimenticato di cambiare la password.
Questo sembra più un requisito aziendale che un problema di sicurezza. Stai essenzialmente cercando di rilevare la persona unica dietro un account, ed è abbastanza difficile da capire: Internet non vuole che tu abbia quelle informazioni. Il costo per farlo bene è alto e man mano che ottieni sempre più utenti è sempre più probabile che si verifichino molti falsi positivi che infastidiscono i tuoi utenti reali.
A meno che non sia la tua attività, se lo sei una società di data mining per esempio, considera perché hai questo requisito: qual è il suo reale effetto sul tuo sistema? Quali metriche hai per supportarlo?
Se decidi di dover davvero prevenire gli alt, utilizza vari ID semiunivoci del mondo reale per aggiungere un costo agli account alt e ridurne la frequenza. L'indirizzo e-mail è il più comune. Fare conti costare denaro o richiedere un numero di carta di credito è un altro. Anche i numeri di identificazione fiscale se sei un sito di grandi aziende. Tutto dipende da cosa stai facendo.