Per sicurezza, la registrazione nella mia app corrente non memorizza i parametri passati ai metodi di accesso o di reimpostazione della password. La chiamata di registro ha un parametro opzionale che controlla questo, che, se impostato su true, sostituisce l'oggetto parametri memorizzati con [Redacted]
. Certo, quindi mi manca un po 'di dati, ma ho i loro indirizzi IP e preferirei non rischiare di ottenere qualcosa di così sensibile in chiaro.
Se vuoi davvero registrare questo tipo di cose, ti suggerirei che quando si registra un tentativo di accesso, controlli il database per gli utenti con un nome corrispondente a quello che hai nel campo del nome utente e lo memorizzi solo se hai una corrispondenza. Altrimenti, lo memorizzi semplicemente come "utente sconosciuto". Potresti essere fantasioso, controllando se questo valore contiene questo o altro, ma c'è sempre il rischio di ottenere combinazioni come [Utente] [Password] e [UserPas] [spada], nel qual caso puoi verificare contro l'IP e dedurlo hai inavvertitamente memorizzato l'inizio della password di qualcuno in chiaro. Potresti estenderlo all'improbabile ma possibile [Utente] [Password] e [UserPassword] [??], nel qual caso puoi vedere "login fallito da UserPassword" seguito da "Login riuscito da Utente" e dedurre tuttodella password dell'utente. In generale, per sicurezza, direi di non registrare nomi utente a meno che l'accesso non abbia esito positivo.
Modifica per aggiungere:
La maggior parte degli argomenti che le persone pubblicano per la registrazione del nome utente per tentativi di accesso non riusciti sono, a mio avviso, gestiti meglio attraverso altri metodi.
Ad esempio, è stato detto che quando un cliente chiede "perché non riesco ad accedere?", I nomi utente registrati ti permetterebbero di segnalare errori di battitura. Questo è vero, ma non vale la pena rischiare di catturare anche le password; Lo farei invece reindirizzando l'utente al modulo di accesso in caso di errore, evidenziando il campo nome utente e ripopolandolo con qualsiasi cosa abbiano digitato in modo che possano vedere da soli.
Un altro argomento è stato che ti consente di identificare i tentativi di hacking; una serie di errori contro un nome utente potrebbe essere un tentativo di forzare una password. Lo farei avendo una colonna "BadLogins" nella tabella Users, che viene incrementata ogni volta che un accesso fallisce con un nome utente corrispondente a questo utente, e viene riportato a zero su un accesso riuscito, dopo aver detto all'utente "ci sono stati x tentativi di accesso falliti dal tuo ultimo accesso "e consigli su cosa fare se non pensano che i tentativi siano stati da loro. Se vuoi essere davvero completo, potresti avere un'altra colonna che memorizza l'ultimo valore della colonna BadLogins anche dopo il login riuscito, e / o una colonna che memorizza il valore più alto di sempre di questa colonna e / o una colonna che memorizza il numero totale di accessi non riusciti che questo account abbia mai avuto.