La registrazione dei tentativi di accesso non riusciti espone le password

38

Ho iniziato a registrare i tentativi di accesso non riusciti sul mio sito Web con un messaggio come

Failed login attempt by qntmfred

Ho notato alcuni di questi log come

Failed login attempt by qntmfredmypassword

Immagino che alcune persone abbiano avuto un accesso fallito perché hanno digitato il loro nome utente e la loro password nel campo del nome utente. Le password vengono sottoposte a hashing nel database, ma se in qualche modo il db viene compromesso, questi messaggi di log potrebbero essere un modo per un utente malintenzionato di individuare password per qualsiasi piccola percentuale di persone che abbia un accesso fallito come questo.

C'è un modo migliore per gestirlo? Dovrei anche preoccuparmi di questa possibilità?

    
posta kenwarner 22.04.2013 - 05:49
fonte

4 risposte

65

Provalo in questo modo:

Se il nome utente esiste, registra "tentativo di accesso fallito di username ". Altrimenti, registra "tentativo di accesso fallito di IP 123.45.67.89 ". Questo dovrebbe risolvere il problema di avere le password nel registro accidentalmente.

    
risposta data 22.04.2013 - 05:55
fonte
12

Perché non controllare semplicemente se tale nome utente esiste nel database? Questo ti lascerà con 2 risultati possibili.

  1. L'utente ha inserito un nome utente corretto. A questo punto puoi semplicemente registrare ciò che accedi ora.

  2. L'utente ha inserito la sua password nel campo nome utente, quindi il nome utente non è valido. Basta inserire una voce del registro dicendo che il tentativo di accesso non riuscito è fallito da un utente non identificato?

E ovviamente puoi avere un campo extra per registrare ip, date e cosa no?

    
risposta data 22.04.2013 - 11:29
fonte
1

Considerazioni:

  1. Riesci a rilevare quando ciò si è verificato, a differenza di qualcuno che digita erroneamente il proprio nome utente? La registrazione di nomi utente errati può essere utile a scopo di supporto, ovvero rispondere alla domanda "perché non riesco ad accedere su "con la risposta" Hai digitato in modo errato il tuo nome utente, che dovrebbe essere un trattino non un punto ", o" Hai due punti iniziali quindi spazi bianchi - lo hai tagliato e incollato ". Se hai un piccolo numero di utenti paganti di alto valore (vale a dire non ancora un altro sito di social network), probabilmente dovrai fornire questo tipo di supporto.

  2. Qual è l'azione appropriata se qualcuno dovesse farlo? I nomi utente potrebbero essere indicatori di tentativi di hacking. Il fatto che il nome utente non compaia nella tua lista non significa che non hai bisogno di sapere di cosa si tratta. Tuttavia, se ritieni che questo sia un problema serio e potresti rilevare la password, potresti richiedere all'utente di cambiare la password dopo che si è verificato.

  3. Qual è la pratica del settore? La pratica del settore consiste nel registrare il campo del nome utente ma non il campo della password. È improbabile che tu venga licenziato per averlo fatto.

A meno che tu non abbia delle considerazioni fuori dall'ordinario, ti suggerirei di seguire la prassi del settore e registrare il campo del nome utente, a prescindere. Considera le modifiche forzate della password come suggerimento 2 se ritieni che ciò sia inadeguato.

    
risposta data 22.04.2013 - 11:51
fonte
1

Per sicurezza, l'accesso alla mia app corrente non memorizza i parametri passati ai metodi di login o di ripristino della password. La chiamata registro ha un parametro facoltativo 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 testo semplice.

Se vuoi davvero registrare questo tipo di cose, ti suggerirei di effettuare il login di un tentativo, controllare il database per gli utenti con un nome corrispondente a quello che hai nel campo del nome utente, e memorizzarlo solo se hai una partita. Altrimenti, lo memorizzi come "utente sconosciuto". Potresti essere fantasioso, controllando se questo valore contiene questo o quel che sia, ma c'è sempre il rischio che tu riceva combinazioni come [Utente] [Password] e [UserPas] [spada], nel qual caso puoi controllare l'IP e dedurlo hai inavvertitamente memorizzato l'inizio della password di qualcuno in chiaro. È possibile estenderlo all'improbabile, ma possibile [Utente] [Password] e [UserPassword] [??], nel qual caso è possibile visualizzare "login non riuscito da UserPassword" seguito da "Login riuscito per utente" e dedurre tutti della password dell'utente. In generale, per sicurezza, direi di non registrare i nomi utente a meno che l'accesso non abbia esito positivo.

Modifica da aggiungere:

La maggior parte degli argomenti che gli utenti pubblicano per registrare il nome utente per tentativi di accesso non riusciti sono, a mio parere, gestiti meglio attraverso altri metodi.

Ad esempio, è stato detto che quando un cliente chiede "Perché non riesco ad accedere?", i nomi utente registrati ti consentono di indicare errori di battitura. Questo è vero, ma non vale la pena rischiare di catturare anche le password; Lo farei reindirizzando l'utente al modulo di accesso in caso di errore, evidenziando il campo del nome utente e riproponendolo con tutto ciò che hanno digitato in modo che possano vedere da soli.

Un altro argomento era 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 login fallisce con un nome utente che corrisponde a questo utente, e viene ripristinato a zero su un login di successo, dopo aver detto all'utente "ci sono stati x tentativi di accesso non riusciti dal tuo ultimo accesso "e consigliandoli su cosa fare se non pensano che i tentativi siano stati da loro. Se vuoi essere veramente approfondito, 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 questa colonna, e / o una colonna che memorizza il numero totale di accessi non riusciti che questo account ha mai avuto.

    
risposta data 22.04.2013 - 14:43
fonte

Leggi altre domande sui tag