Devi dire all'utente che l'account è stato bloccato, altrimenti non vedo come gestiresti una tale situazione senza visualizzare un messaggio direttamente nell'applicazione web. Ovviamente, è molto probabile che tu gli invii una e-mail con alcuni passaggi per sbloccare il suo account ma, comunque, devi notificare all'utente all'interno dell'applicazione che gli hai inviato una e-mail.
Ora, considerando la tua preoccupazione principale, ovvero che un utente malintenzionato potrebbe creare un elenco di nomi utente registrati sul tuo sito web, esiste una soluzione per mitigare questo problema.
Tentativi di tracciamento da parte di cookie / campi nascosti / voci del database
Ogni volta che un utente tenta di accedere utilizzando un nome utente inesistente, è possibile tenere traccia del tentativo fallito memorizzando le informazioni in un cookie, in un campo nascosto o anche direttamente nel database. In questo modo, se blocchi un account reale dopo 3 tentativi falliti, puoi tenere traccia dei tentativi falliti (che non sono veri tentativi falliti perché il nome utente non esiste realmente) e visualizzare il messaggio di blocco esattamente come in un vero situazione.
Il modo più trasparente ed efficiente per implementare questo sarebbe inserire i tentativi falliti in un database perché l'utente può sempre modificare i campi nascosti ei cookie, che potrebbero alla fine aiutarlo a capire il tuo piccolo stratagemma. Inoltre, potrebbe essere difficile tenere traccia dei tentativi di username inesistenti se l'utente prova molti nomi utente utilizzando cookie e campi nascosti. Tuttavia, nel database, è possibile semplicemente registrare l'IP dell'utente, il nome utente inesistente e infine la quantità di tentativi falliti che indicano se è necessario visualizzare il messaggio di blocco falso o meno alla propria applicazione Web.
Potresti anche non voler filtrare i tentativi solo tramite IP, nel caso in cui l'aggressore utilizzi un proxy e verifichi lo stesso nome utente e si accorga che gli è occorso di nuovo, ad esempio, 3 tentativi di bloccare l'account. Di nuovo, potrebbe capire il tuo stratagemma in questo modo.
Ma hai davvero bisogno di una tale protezione?
Prima di implementare una tale protezione, prenditi del tempo per pensare se è veramente necessario per la tua applicazione web. Una situazione in cui ciò sarebbe completamente inutile è un sito Web che dispone di un forum in cui gli utenti eseguono il login utilizzando lo stesso nome utente di quello visualizzato sul suddetto forum. Ovviamente, un utente malintenzionato potrebbe creare facilmente un elenco degli utenti registrati semplicemente sfogliando le pagine.
Accedi utilizzando l'indirizzo e-mail
Hai pensato di utilizzare l'indirizzo e-mail dell'utente per collegarti alla tua applicazione web, se possibile? È molto meno probabile che qualcuno tenterà di creare una lista di indirizzi e-mail poiché ci sono molte più possibilità rispetto ai nomi utente (gli utenti tendono a scegliere nomi utente semplici e tipici come "Simon" quando è disponibile. l'indirizzo di posta elettronica è più difficile, in quanto vi sono molti possibili servizi di posta elettronica, supponendo che abbia scelto nuovamente il nome utente "Simon" (ad es. [email protected], [email protected], [email protected], ecc.)) .