Per Gmail, puoi determinare se un account esiste semplicemente inviando un'email a un indirizzo @gmail.com
. Se rimbalza, quell'account non esiste.
Questo è vero per molti provider di posta elettronica. Qui, i nomi utente non sono considerati segreti. Se un utente ha l'indirizzo email [email protected]
tutti sanno che foo
ha un account su example.com
con nome utente [email protected]
.
Tuttavia, per la maggior parte degli altri sistemi è una violazione della privacy rivelare i nomi utente. Se qualcuno può scoprire che [email protected]
ha un account a nostringsattacheddating.example.org
e la moglie di Bob, Alice, può provare a registrarsi con lo username [email protected]
sul sito web e dice che il nome utente è già in uso, quindi è una grande violazione della privacy.
Ricorda che l'indirizzo email ha le sue radici nel provider di posta elettronica. Non c'è perdita di privacy se [email protected]
è noto per avere un account in example.com
, in quanto non esiste un punto di riferimento per chi è [email protected]
. Lo stesso non è vero per un altro sistema che utilizza l'e-mail come nome utente - un utente con nome utente [email protected]
su un sito Web non di posta elettronica avrà lo stesso [email protected]
registrato su altri siti Web. C'è privacy per proteggere su quali account Mallory ha.
Inoltre, rivelare nomi utente può essere utile per un utente malintenzionato. Questo è noto come vulnerabilità di enumerazione del nome utente. Se un utente malintenzionato sa quali sono i nomi utente, quindi può eseguire un attacco indovinare la password .
As an attacker if I can use your login or forgotten password page to
narrow my list from 10000 targets to 1000 targets, I will.
Consente inoltre agli aggressori di scegliere come target gli utenti del sistema tramite phishing.
È facilmente possibile progettare un sistema in cui l'enumerazione degli utenti non può essere eseguita. Ad esempio, i processi di registrazione e password dimenticati sono la stessa cosa.
I passaggi sono:
- Il sistema richiede il proprio nome utente (email) su una singola pagina, senza altri campi di input.
- Una volta inviato il modulo, il sistema chiede all'utente di controllare il proprio account di posta elettronica.
- Se l'account esiste, l'email contiene un link per la reimpostazione della password.
- Se l'account non esiste, l'email contiene un link di registrazione.
Come bonus, hai convalidato il loro indirizzo email al momento dell'iscrizione nel caso in cui fosse necessario reimpostare la password in un secondo momento. Qualsiasi errore di battitura significherà che l'utente non può registrarsi affatto, il che è positivo perché un utente non utilizza accidentalmente un account registrato su un indirizzo email diverso.
Sia la password che i link di registrazione contengono un ID casuale crittograficamente sicuro, quindi non possono essere seguiti senza ricevere l'e-mail. Solo chi ha accesso all'account può scoprire se un nome utente è registrato o meno (è meglio che Bob mantenga segrete le sue password di posta elettronica e portatile da Alice). Sarebbe saggio per lui disattivare i suoni di notifica nel caso in cui Alice provasse questo processo quando anche nella stessa stanza)
Vedi alcune delle mie altre risposte per argomenti correlati: