Password dimenticata: che cosa è il metodo migliore per l'implementazione di una funzione password dimenticato?

StackOverflow https://stackoverflow.com/questions/522967

Domanda

Mi chiedo che cosa il metodo migliore è per la creazione di una funzione password dimenticato su un sito web. Ho visto un bel po 'là fuori, qui sono alcuni o una combinazione di:

  • domanda passphrase / risposta (1 o più)
  • inviare e-mail con una nuova password
  • sullo schermo dare nuova password
  • di conferma tramite e-mail: deve cliccare sul link per ottenere una nuova password
  • pagina che richiede all'utente di inserire una nuova password

Quale combinazione o passaggi aggiuntivi vorresti aggiungere a una funzione Password dimenticata? Mi chiedo su come essi chiedono la nuova password e il modo in cui finiscono per ottenerlo.

Sono operano sul principio che la password non può essere recuperata; una nuova password deve essere data / generato.

Modifica Mi piace quello che ha detto Cory di non mostrare se esiste il nome utente, ma mi chiedo cosa visualizzare invece. Sto pensando metà del problema è che l'utente ha dimenticato quale indirizzo email hanno usato, che la visualizzazione di una sorta di "non esiste" il messaggio è utile. Eventuali soluzioni?

È stato utile?

Soluzione

  1. Personalmente mi invia una mail con un link ad una pagina di breve termine che consente loro di impostare una nuova password. Fare il nome della pagina una sorta di UID.
  2. Se questo non vi attira, poi inviando loro una nuova password e costringendoli a cambiarla al primo accesso farebbe pure.

L'opzione 1 è molto più facile.

Altri suggerimenti

Alcuni problemi importanti di sicurezza:

  • Una passphrase domanda / risposta riduce effettivamente la sicurezza dal momento che diventa in genere l'anello più debole nel processo. Spesso è più facile indovinare la risposta di qualcuno che si tratta di una parola -. In particolare se le domande non sono scelti con cura
  • Assumendo email funzionano come nome utente nel sistema (che è generalmente consigliato per una serie di motivi), la risposta ad una richiesta di reimpostazione della password non dovrebbe indicare se è stato trovato un account valido. Dovrebbe semplicemente affermare che un'email di richiesta di password è stata inviata all'indirizzo indicato. Perché? Una risposta che indica che una e-mail non / non esiste consente a un hacker di raccogliere un elenco di account utente presentando molteplici richieste di password (in genere tramite un proxy HTTP come suite di burp) e notando se l'email viene trovato. Per proteggere da login raccolta è necessario assicurare nessun login / auth funzioni correlate forniscono alcuna indicazione di quando e-mail una valida dell'utente è stato inserito su un login / pass azzerare forma.

Per ulteriori sfondo, check-out il Web Application hacker Handbook . E 'una lettura eccellente sulla creazione di modelli di autenticazione sicuri.

Modifica : Per quanto riguarda la domanda nella tua modifica - io suggerirei:

  

"Una richiesta password di posta elettronica è stato   inviata all'indirizzo che hai fornito. Se   una e-mail non arriva a breve,   si prega di controllare la cartella spam. Se no   email arriva, quindi non esiste un conto   con l'indirizzo email che hai fornito ".

C'è un trade-off compiuti qui tra facilità d'uso e la sicurezza. Bisogna bilanciare questo in base al contesto - è la sicurezza abbastanza importante per voi ei vostri utenti per giustificare questo inconveniente?

Invia e-mail con la nuova password.

forzare un cambio di password quando arrivano e digitare la nuova password.

In questo modo, la persona che ha voluto la password sarà l'unico ottenendo soltanto con l'account.

Se l'email viene sniffata, qualcuno potrebbe ottenere con l'account (ovviamente), ma la vera festa sarà scoprire questo immediatamente (come password che hai appena inviato loro non funziona).

Anche inviare conferme di modifiche delle password per gli utenti.

Se qualcuno ottenere la nuova password, e poi una e-mail che dice "grazie per la modifica della password", che stanno andando a essere piuttosto perplesso e parleranno di un admin se non lo fanno.

Uso della verifica / password link di reimpostazione e-mail vi darà una maggiore sicurezza. Se si guarda intorno a questo è come la maggior parte siti web lo fanno e le persone sono abbastanza utilizzate per questa verifica, quindi mi consiglia di utilizzare questo tipo di autenticazione.

Vorrei pensare (del gbrandt) L'opzione 2 sarebbe un ottimo metodo se è combinato con alcune informazioni personali si dispone già di per l'utente. Data cioè di nascita.

Quando l'utente richiede una nuova password (reset) tramite inserendo il suo indirizzo email, ha anche per inserire una data di nascita corretta (o qualcos'altro) prima che la password viene ripristinato e uno nuovo viene inviato via email per l'utente.

Solo coloro che lo conoscono bene lo può forse fastidio reimpostando la sua password! Non può essere un estraneo o un bot

Al momento 5 o 7 cattiva indirizzo e-mail e data di nascita combinazioni all'utente viene inviato via email che la sua parola d'ordine è stato richiesto di essere ripristinato e non è riuscito a causa di una credenziale non corretta. Poi il reset della password per l'account viene sospeso per 24 ore o di qualsiasi periodo desiderato.

(se troppi utenti di rivolgersi al webadmin riguardo a questa e-mail che sarà lui a sapere che qualcuno sta cercando di raggiungere maliziosamente informazioni dal tuo sito / app)

Che ne pensate?

Opzione 1. è non una buona idea, come in genere il suo diventa facilmente indovinare da altri. e-mail personale di Sarah Palin (Yahoo credo) è stato violato in questo modo da parte di terzi.

Le altre opzioni sono migliori e post precedenti hanno delineato dettaglio.

L'idea stavo pensando era quello di firmare i dati nel link che viene inviato all'utente. Poi, quando l'utente fa clic sul collegamento e il server riceve la chiamata, il server ottiene anche la parte crittografata e può convalidare che i dati era intatto.

Ho implementato un progetto Java per questo caso d'uso. E 'su GitHub, open source. Esso risponde alla tua domanda ... perfettamente implementato in Java.

Per quanto riguarda il link nell'e-mail -. Genera il collegamento, oltre a convalida su di utilizzo

Non ci sono spiegazioni per ogni cosa (e se manca qualcosa - me lo faccia sapere ...)

Date un'occhiata: https://github.com/OhadR/Authentication-Flows

Demo qui .

Questo è il web-app client che utilizza i Auth-flussi, con il README con tutte le spiegazioni. esso si indirizza l'attuazione: https://github.com/OhadR/ OAuth2-campione / albero / master / autenticazione flussi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top