Autenticazione del codice di posta elettronica

2

Vorrei sostituire le password con un codice temporaneo che viene inviato via email all'utente. Il flusso di login andrebbe in questo modo:

  1. L'utente inserisce il suo indirizzo email. "Se quell'e-mail appartiene a un utente, verrà inviato un messaggio" per impedire la divulgazione di e-mail valide.
  2. L'utente riceve per e-mail un codice alfanumerico (diciamo 8 cifre a lungo e valido per 1 ora).
  3. L'utente inserisce quel codice come "password".

Il buono:

  1. Nessuna password è memorizzata nel database.
  2. Non è necessario reimpostare la password.
  3. Gran parte del carico di sicurezza viene trasferito al provider di posta elettronica.

Il cattivo:

  1. È richiesto un indirizzo email. Se perdi l'accesso, perdi l'accesso al tuo account.
  2. Se dimentichi il tuo indirizzo email perdi l'accesso al tuo account.
  3. È scomodo controllare la tua posta ogni volta che accedi. Questo non sarebbe un problema per i dispositivi mobili, in cui un token API può essere memorizzato dopo il primo accesso.

Ci sono altri problemi, in particolare legati alla sicurezza? Per quanto posso dire, questo dovrebbe essere sicuro come una reimpostazione della password. In entrambe le situazioni ti viene inviata un'email con qualcosa che consente l'accesso completo all'account.

Qui ci sono domande simili ma con maggiore attenzione ai cookie o senza risposte solide. Sono più interessato agli aspetti positivi e negativi, specialmente a eventuali problemi di sicurezza.

Modifica chiarezza / obiettivi: Gli obiettivi sono limitare la quantità di dati sensibili memorizzati nel database (anche se i dati sono sottoposti a hash), essere accessibili agli utenti medi (in remoto con una connessione Internet) e non dipendere da un dispositivo diverso per l'autenticazione. Inoltre, sii il più semplice possibile (UX) e sicuro possibile dato quei vincoli.

    
posta emeraldgreen 16.04.2016 - 20:54
fonte

1 risposta

2

tl; dr: tutto si riduce a quanto gli utenti siano bravi a mantenere i loro messaggi sicuri. Ma queste sono cartoline piuttosto che lettere. Non esclusivamente offri questa opzione. Inoltre, sembra un problema xy .

Ecco alcune cose da considerare al riguardo:

  • Hai detto

    User is emailed an alpha numeric code (lets say 8 digits long and valid for 1 hour).

    Diciamo piuttosto 20 byte, validi per 10 minuti. La forza bruta di una password di 8 cifre è assolutamente fattibile.

    Può essere passato all'applicazione / web app tramite una richiesta di ottenimento da un link nell'email per rendere più semplice la vita dell'utente.

    Questo è ciò che Slack sta facendo con la sua funzione "link magico", tra l'altro.

  • Sei elencato come negativo

    An email address is required. If you lose access to it you lose access to your account.

    e

    If you forget your email address you lose access to your account.

    Questo di solito è il caso, almeno con la reimpostazione della password.

  • È possibile continuare a utilizzare i cookie di sessione nell'app Web per mantenere l'accesso dell'utente più a lungo, come se fosse archiviato con quel token in un'applicazione mobile.

    Quindi questo problema

    It's inconvenient to check your email each time you log in.

    è sparito.

  • Elenco come positivo

    Much of the security burden is shifted to the email provider.

    mentre in realtà gran parte del carico di sicurezza è trasferito anche all'utente.

    Come sei sicuro che i tuoi utenti controllino la posta solo attraverso connessioni sicure, senza possibilità di intercettazioni? (Pensa: Open WiFi, normale POP su dispositivo mobile. Succede ogni giorno .)

    Questo rende la casella di posta dell'utente un singolo punto di errore.

    Inoltre, mentre sono stato pwnato è conosciuto dalla maggior parte delle persone affini all'IT, ci sono molti di persone che non sanno che la loro email è già stata violata a causa del riutilizzo della password .

    Tuttavia, l'ultimo punto vale anche per le e-mail di reimpostazione della password, solo che si verificano meno spesso e in genere attivano ulteriori misure di sicurezza.

Per qualsiasi ragione tu stia cercando di usare mail e password di breve durata, ci sono modi migliori - ad esempio i token di sicurezza UBS che fanno aggiungi a "a volte solo tu hai" parte all'equazione, non rimuovendo un "qualcosa che conosci solo" parte.

Ti consiglierei anche di pensare se questa potrebbe essere un'istanza di un xy problema e fare una nuova domanda con il problema attuale stai cercando di risolvere.

Aggiornamento per la domanda modificata:

Se le password sono hash correttamente , non c'è niente di sbagliato nell'archiviazione li nel tuo database.

Tuttavia, se accettiamo come decreto UX di avere l'utente che non ha password, utilizzando l'e-mail e richiedendo la chiave GPG dell'utente e / o il certificato S / MIME e inviando link di password di breve durata all'utente utilizzando la posta su richiesta andrebbe bene.

    
risposta data 16.04.2016 - 21:44
fonte

Leggi altre domande sui tag