Devo far sapere a un utente che hanno inserito un nome utente o un indirizzo e-mail sconosciuto?

23

Sul mio sito web ho una pagina di reimpostazione della password che gli utenti possono utilizzare se hanno dimenticato la loro password. In questa pagina possono inserire il loro nome utente o il loro indirizzo e-mail e premere "reset" che invierà loro un link per reimpostare la loro password.

Se hanno inserito un nome utente o una e-mail errati, dovrei informarli che non esiste nel nostro sistema o che c'è un rischio per la sicurezza?

    
posta AlexFoxGill 11.07.2014 - 13:43
fonte

5 risposte

22

La risposta è generalmente dipende. Questo è veramente basato sulla sicurezza del tuo sistema.

Gli utenti possono creare nuovi account senza restrizioni

Se è così, è un po 'insignificante dire a non . Non puoi avere nomi utente o indirizzi email intersecanti, quindi devi informare un nuovo utente se il loro nome utente o email è già stato utilizzato. Un utente malintenzionato potrebbe quindi ottenere i nomi utente e le e-mail attaccando il nuovo sistema di registrazione degli utenti. Dare loro una sede simile per attaccare nella sezione della password dimenticata non danneggia la tua sicurezza perché il metodo esiste solo altrove. Assicurati solo che le restrizioni utilizzate nel sistema di registrazione siano le stesse delle restrizioni per la richiesta di una password (che è il sistema anti-spam che usi).

Gli utenti non possono creare nuovi account senza restrizioni

Considera un sistema solo su invito. L'unico modo in cui ti è consentito registrarti è se qualcuno lo ha autorizzato. Potrebbe trattarsi di un'istanza in cui un amministratore imposta il nome utente, l'e-mail e la password iniziali (potenzialmente manualmente). Questo sistema ti consentirebbe di guadagnare sicurezza non dicendo agli utenti se le informazioni inserite sono corrette o meno. I nomi utente e le e-mail potrebbero quindi essere trattati come un segreto debolmente protetto.

In generale

Si noti che questo è un successo per l'usabilità. Se qualcuno digita il proprio indirizzo email, potrebbe non accorgersene. Le e-mail dei siti Web non vengono sempre inviate immediatamente, quindi un utente potrebbe essere in attesa di un'e-mail che non arriva mai.

    
risposta data 11.07.2014 - 15:52
fonte
8

C'è una vecchia tradizione di non che distingue tra "quel nome utente non esiste" e "quel nome utente esiste ma la password è sbagliata". Viene dai tempi più antichi, quando sia gli attaccanti che i difensori erano nuovi al lavoro, e il contesto era diverso. A quel tempo, l'attaccante era "fuori" e voleva indovinare una coppia nome utente + password per entrare nel mainframe. A quel tempo, le password erano ancora più scarse di oggi, e si riteneva che mantenere segreti i nomi degli utenti sarebbe stato di grande aiuto ("l'aggressore non immaginerà mai che abbiamo un utente chiamato 'smith'!").

Una lettura interessante è questa descrizione del "Morris" del 1988 verme . Quella bestia ha distrutto l'intera Internet (era più piccola di oggi) per l'ampiezza di banda consumata da tutte le istanze di worm che si riproducono pazzamente senza controllo. Il worm può entrare nei sistemi attraverso vari metodi, uno dei quali è il cracking delle password. È interessante notare che il worm prima raccoglie i nomi degli account da varie fonti, inclusi i file ".forward", quindi (e solo allora) prova un dizionario di 432 parole. Questo illustra due punti:

  • I nomi degli account non sono segreti. Non esistono solo sul sistema di destinazione; possono anche essere dedotti da vari elementi di dati su altre macchine, inclusi (in tempi moderni) file di configurazione SSH, rubriche, ...

  • Nel 1988 erano davvero cattivi nella scelta di password sicure.

I tempi sono cambiati. In particolare, come altri hanno sottolineato, molti sistemi moderni consentono la registrazione automatica: chiunque può provare ad accedere e vedere da sé se un determinato account è "libero" o meno. Molti altri sistemi di destinazione consentono la raccolta del nome dell'account (ad esempio, i forum Web possono utilizzare lo pseudo dell'account del contributore come nome dell'account). Ciò fa sì che la segretezza dei nomi degli utenti si affievolisca più che mai. D'altra parte, si può sperare che gli utenti medi ora scelgano password più forti (pensando altrimenti sarebbe troppo deprimente). L'effetto netto è un cambio di equilibrio: la tradizione di tenere segreti i nomi degli account ha perso gran parte della sua rilevanza.

Tuttavia , le tradizioni sono forze forti. Se il tuo sistema restituisce l'errore "che il nome utente non esiste" e un messaggio diverso per "la tua password non è corretta", è probabile che alcuni utenti si sentano nervosi, e scandalizzati, e ti infastidiranno con lamentele sulla tua irresponsabilità nel divulgare a il mondo in generale che il nome di Joe è Joe. Puoi discutere e offrire ragioni razionali per cui questo non è un problema (vedi sopra); alcuni rimarranno poco convinti. Questa non è una buona cosa quando gli utenti sono clienti ; e, in ogni caso, questo consuma troppo tempo. È più facile mantenere la vecchia tradizione, anche se non ha senso; puoi vederlo come un modo per affrontare l'irrazionalità di base degli utenti umani.

    
risposta data 11.07.2014 - 21:59
fonte
4

No, non devi far loro sapere se il nome utente non esiste in quanto consentirebbe a un utente malintenzionato di scoprire nomi di account che potrebbero quindi tentare di violare. Se invii un messaggio generico "È stata inviata una email di reset, controlla la tua casella di posta". anche quando l'account non esiste un attaccante guadagna nulla dal provare.

    
risposta data 11.07.2014 - 14:02
fonte
3

Ciò che conta di più in termini di sicurezza è ciò che guadagna un utente malintenzionato per sapere se un ID o un indirizzo email specifico ha un account con il tuo sito?

Ad esempio, se stai facendo qualsiasi tipo di attività che può essere vista come un problema di privacy, o se gli account sul tuo sito possono essere utilizzati per spendere soldi o avere un valore intrinseco (in altre parole se posso ottenere qualcosa dal phishing del tuo sito). Alcuni siti non hanno questo tipo di problema, ad esempio una piattaforma di micro-blogging o OSN visualizzerà comunque il tuo ID sulla tua pagina, quindi lasciare che l'utente sappia che ha digitato un ID inesistente può essere utile.

Dal punto di vista dell'usabilità, non dire al tuo utente se il suo ID esiste è disastroso. Qualsiasi sito web che utilizza ID dovrebbe almeno confermare un ID (gli ID sono specifici per il tuo sito in modo che non forniscano spammer molte informazioni). Anche non dire al tuo utente che l'indirizzo e-mail è una pessima idea: hanno bisogno di ridigitare ogni possibile password che hanno usato per ciascuno dei loro indirizzi e-mail.

Chiedi a te stesso quanto spesso i tuoi utenti visitano il tuo sito web. Una bassa frequenza di visite amplifica notevolmente i problemi di usabilità, al punto che potresti voler abilitare le password monouso inviate via SMS o e-mail di un modulo di accesso tradizionale, per chiunque si connetta solo poche volte all'anno.

Per esempio, ho due diversi indirizzi al lavoro, più password per diversi sottosistemi e una politica idiota di reimpostazione della password, in cima alla quale ho il mio indirizzo e-mail personale e una tonnellata di password diverse. Ci possono volere decine di tentativi per trovare la giusta combinazione email / password per un sito che non frequento spesso.

Come sottolineato da @William Forcier, puoi sapere se un'email è in uso in diversi modi :

  • modulo per la creazione dell'account
  • modulo di accesso
  • modulo password dimenticato

Potresti comunque schierare difese diverse per ogni modulo. Se si decide di nascondere assolutamente gli indirizzi e-mail, è possibile bloccare / complicare la creazione dell'account (CAPTCHA) su un indirizzo IP specifico dopo un numero eccessivo di creazioni. Probabilmente avrai comunque bisogno di un meccanismo per proteggere dagli account di spam (ma ricorda di non rovinare la vita dei tuoi utenti effettivi con soluzioni inutilizzabili, ad esempio servendo sistematicamente CAPTCHA).

    
risposta data 11.07.2014 - 21:37
fonte
2

Un aspetto che non ho visto menzionato è il fatto che molte difficoltà di accesso sorgono perché il nome preferito di un utente è stato preso prima che tentasse di registrarsi per un determinato sito. Se "JSmith" tenta di accedere e non può, ciò che vuole veramente sapere non è se il sito ha un account chiamato "JSmith", ma piuttosto se il sito ha un account per lui chiamato JSmith. Se il sito ha alcune informazioni pubbliche associate agli utenti (ad esempio un'immagine di avatar) e consente a tali informazioni di essere interrogate liberamente, può essere utile non solo indicare se esiste un account per JSmith, ma anche mostrare alcune informazioni ad esso associate . Se Jack Smith usa sempre un gatto come avatar, e quando tenta di accedere sotto JSmith viene mostrato un cane, saprà che il problema non è una password dimenticata, e quindi dovrebbe provare una delle sue "ripiego" nomi utente piuttosto che un link "password dimenticata".

    
risposta data 11.07.2014 - 23:08
fonte

Leggi altre domande sui tag