La verifica della posta elettronica deve essere seguita da un accesso basato su password? Perché?

11

[Questo è un duplicato, considerato off-topic a link

Un tipico processo di creazione dell'account sembra essere:

  1. Fornisci indirizzo email e imposta una password
  2. Ricevi un'email di conferma con un link e / o token hash
  3. Fai clic sul link per verificare e / o inserire il token nel sito

Tuttavia, una volta ho letto da qualche parte (e non riesco a trovarlo ora, motivo per cui sto chiedendo) che un processo migliore potrebbe modificare il Passaggio 3 e richiedere all'utente di accedere utilizzando la password fornita nel Passaggio 1. Penso che la logica fosse che questa cautela extra garantisce che la persona che verifica l'indirizzo email sia la stessa persona che ha creato l'account.

Domanda: la spiegazione sopra riportata ha senso e dovrei implementare la verifica della posta elettronica richiedendo l'accesso basato su password?

Per me ha un senso, e almeno non sembra dannoso - a parte rendere l'esperienza dell'utente un po 'più ingombrante. Ma vedo molti servizi online che non richiedono questo, e mi chiedo perché.

Ad esempio, ecco lo scenario di cui mi preoccupo. Che cosa succede se la persona numero 1 inizialmente ha creato l'account ma ha specificato l'indirizzo email errato (maliziosamente o accidentalmente) e l'ha inviato alla persona n. 2. Se la persona n. 2 è ingenua, lui / lei potrebbe verificare quell'indirizzo email semplicemente cliccando sul link ... e poi dimenticarsene. Quindi la persona numero 1 potrebbe ancora accedere utilizzando la password. Supponiamo che la persona numero 1 faccia tutti i tipi di cose cattive su quell'account. La persona n. 2 è responsabile?

Penso che una soluzione alternativa potrebbe essere quella di chiedere ai nuovi utenti di specificare solo un indirizzo email, quindi confermarlo con un token hash e quindi chiedere loro di impostare una password. Ma non vedo molti servizi online che lo fanno in questo modo,

    
posta Anonymous 25.10.2014 - 19:47
fonte

4 risposte

8

Certamente dovresti autenticare l'utente che fa clic sul link. Altrimenti, come dici tu, qualcuno potrebbe inavvertitamente confermare un indirizzo email. Tuttavia, di solito è possibile autenticare l'utente in modo trasparente, quindi non è necessario inserire la password.

Il modo in cui raggiungiamo questo è l'utilizzo di un cookie di sessione. Durante la procedura di registrazione, il nuovo utente riceve un cookie di sessione. Quando fanno clic sul link di conferma nell'e-mail, solitamente usano lo stesso browser, quindi il cookie di sessione verrà allegato. Il sito web può verificare l'identità dell'utente utilizzando quel cookie.

    
risposta data 27.10.2014 - 11:37
fonte
5

I think an alternative solution might be to ask new users to first specify just an email address, then confirm that with a hashed token, and then ask them to set a password. But I don't see very many online services that do it this way, either.

Questo è il modo più sicuro per proteggere gli attacchi enumerazione degli utenti . Se l'indirizzo e-mail è già registrato, l'utente ottiene un link per la reimpostazione della password, altrimenti ottengono un link per continuare la procedura di registrazione. Chiunque non abbia accesso a quell'indirizzo email non può determinare se esiste o meno un account con tale indirizzo email.

Il processo di registrazione richiede all'utente di impostare una password e questo protegge da qualcuno che sta configurando e utilizzando un account associato all'indirizzo email di qualcun altro a cui non hanno accesso.

Non è ampiamente utilizzato poiché richiede più tempo per essere implementato, richiede in primo luogo la consapevolezza del problema di enumerazione degli utenti e in alcuni sistemi l'enumerazione degli utenti è un rischio accettabile in quanto gli account sul servizio sono generalmente considerati pubblici (ad esempio, la webmail, poiché non è possibile inviare a qualcuno un messaggio senza conoscere il proprio ID utente effettivo e spesso è possibile verificare se esiste un account inviandoci un'email).

Un altro modo per farlo è il modo in cui descrivi. Chiedere all'utente di inserire la propria password quando segue il link di conferma dell'email. C'è una scorciatoia disponibile qui però - se l'utente conferma il collegamento dalla stessa sessione utilizzata per iscriversi, è possibile utilizzare questo al posto di una re-immissione della password. Tuttavia, fai molta attenzione in questo caso che ciò non porti a un attacco per la sessione . È necessario invalidare il token di sessione e generarne uno nuovo quando l'utente passa al primo passaggio del processo di registrazione. Ciò assicurerà che se la sessione è stata fissata, l'utente malintenzionato non può quindi utilizzare la sessione di accesso. Se vuoi che la sicurezza aggiuntiva di loro inserisca nuovamente la password, devi aggiornare il token di sessione al primo passaggio e dopo aver seguito il link di conferma.

    
risposta data 27.10.2014 - 11:30
fonte
0

Non vuoi autenticare il link occasionale dall'email:

  • È già autenticato in virtù del fatto che chiunque abbia accesso alla casella di posta "possiede" l'intero account. Ecco come funziona la reimpostazione della password.
  • Il punto su "qualcuno potrebbe inavvertitamente confermare un indirizzo email" è discutibile dal momento che il desiderio del collegamento one time nell'email è verificare che il proprietario della casella di posta sia il proprietario dell'account. Anche se mia madre fa clic sul collegamento mentre il mio laptop è aperto, sbloccato e connesso al mio gmail, va bene. Sta verificando che la casella di posta sia proprietaria dell'account.
  • È una scarsa UX.

L'unico motivo per cui lo scenario Persona n. 1 / Persona n. 2 crea un problema è perché la Persona n. 1 potrebbe utilizzare l'account prima di verificare la proprietà della cassetta postale. Se hai impedito che la persona numero 1 non avrebbe mai ricevuto l'e-mail e quindi non riescono a fare tutte quelle "cose cattive".

    
risposta data 19.10.2016 - 05:22
fonte
0

Questa è una vecchia domanda, ma di recente ho affrontato lo stesso scenario e voglio condividere con il mio pensiero. Quello che ho fatto non è richiesto agli utenti di accedere e verificare direttamente la posta degli utenti. La risposta è la seguente:

  • L'autore menziona un caso in cui un utente inserisce un indirizzo email sbagliato ma il proprietario dell'email lo accetta per qualche motivo. Dopo aver verificato l'e-mail, l'utente originale può fare molti tipi di cose cattive. Dal mio punto di vista, l'indirizzo email degli utenti non deve essere condiviso nella tua applicazione. Devi nascondere l'email degli utenti e non pubblicarla. In secondo luogo, l'e-mail viene solitamente utilizzata per reimpostare la password, verificare la transazione, ecc. Se l'utente digita intenzionalmente un indirizzo e-mail errato, non vedo alcun beneficio che può ottenere da questa azione.

  • Molte applicazioni non consentono agli utenti di accedere senza verificare l'indirizzo email.

  • Dal punto di vista UX, vorremmo fornire una funzione di clic con un solo pulsante. In altre parole, vogliamo ridurre i passaggi che gli utenti devono effettuare per verificare l'indirizzo email. Fare clic sul link su quell'email è probabilmente il modo più semplice per farlo.

  • Esistono molti altri modi di verifica. L'email è solo una di queste. Altri sono messaggi SMS, autenticazione a due fattori, caricamento di documenti di identità ecc. Quindi l'e-mail non è il numero uno importante in un'applicazione.

risposta data 08.01.2018 - 12:00
fonte

Leggi altre domande sui tag