it-swarm-eu.dev

Password dimenticata o link di ripristino, che è più sicuro per e-mail?

Inizialmente l'ho pubblicato come risposta qui in questa discussione ma non ho ricevuto molti feedback al riguardo, e ora sono curioso di sapere quale sia il miglior approccio degli altri, o se c'è qualche differenza tra i due approcci.

Il punto originale era se era più sicuro inviare un collegamento per reimpostare la password quando un utente dimenticava la propria password a un sito Web o se inviare la password originale non crittografata in un'e-mail.

Ora non salare e crittografare una password è male perché quando il database viene infine rubato dal sito Web, l'attaccante avrà tutte le password libere come giorno. OK bene, ho capito.

Ma se ignoriamo la possibilità che il database venga rubato e guardiamo solo l'utente che dimentica la password e passa attraverso i "passaggi della password dimenticata"; è più, lo stesso o meno sicuro inviare un link di reimpostazione tramite una password di testo semplice in un'e-mail?

Il mio pensiero è che è lo stesso. Perché se un utente malintenzionato ha accesso alla tua e-mail in qualsiasi modo (conosce i dettagli di accesso alla tua e-mail o sta ficcando il traffico da qualche parte) ha quindi accesso alla password in chiaro che viene inviata o al link di reimpostazione, anche se è un tempo limitato collegamento.

L'attaccante potrebbe reimpostare la password prima ancora di sapere di avere un'e-mail.

Il mio pensiero qui è difettoso?

23
fwgx

È molto più semplice ottenere l'accesso al corpus di e-mail esistente che ottenere l'accesso al flusso in entrata. Ad esempio, ottenere un paio di minuti di accesso al sistema di qualcuno consente una facile ricerca tramite e-mail. Quindi, nel caso in cui un utente malintenzionato abbia accesso alla vecchia posta, ma non al flusso di posta nuova, in arrivo:

Stai facendo affidamento sull'utente che modifica la propria password dopo averla ricevuta (improbabile, dato che hai detto loro di cosa si tratta), o elimina (permanentemente, non archiviare o passare a una cartella "cestino", anche improbabile) il promemoria Messaggio.

Se ciò non accade, se avrò accesso all'account e-mail dell'utente qualche tempo dopo, un collegamento di ripristino (tempo limitato/uso limitato, forse anche limitato in modo tale che l'attaccante non possa facilmente usarlo) non sarà alcun usami, ma avere la password (molto probabilmente ancora valida) lo è sicuramente.

Inoltre, inviandomi la password in chiaro, stai dimostrando di averlo memorizzato in un luogo accessibile. Nella maggior parte dei casi, non è necessario, poiché non è necessario crittografare la password (e sale/pepe), è necessario solo l'hash. Se è crittografato, chiunque abbia accesso al database e alla chiave di decrittazione (ad es. Probabilmente la maggior parte del personale o chiunque rubi il codice insieme al database) è in grado di ottenere la password in chiaro. Se è hash, allora dovresti ottenerlo prima che abbia luogo l'hash (ad es. Durante una sessione di login).

Inoltre, sebbene le persone non dovrebbero, è molto comune usare la stessa password (o password molto simili) su più siti. Ciò significa che anziché fornire un modo per accedere a un solo account, stai fornendo un modo per entrare in molti.

Per l'altro caso, in cui l'attaccante ha accesso a tutta la posta in arrivo (potenzialmente anche la possibilità di rimuovere la posta in arrivo prima che l'utente la veda), nessuna di queste è sicura. L'account e-mail è ad alto rischio , perché se si dispone di quel tipo di accesso, è possibile accedere a tutti i siti con cui l'utente ha un account e generare una reimpostazione della password. Per evitare ciò, è necessario utilizzare qualcosa di diverso (o anche) dal proprio account e-mail per ottenere l'accesso, come l'autenticazione a due fattori.

Si noti che anche in quest'ultimo caso, un collegamento di ripristino è ancora superiore: se l'attaccante cambia la password dell'utente tramite un collegamento di ripristino, quindi quando l'utente tenta di accedere, scopriranno che qualcosa non va (troppo tardi, ma almeno lo sanno). Se stai solo fornendo la password, l'utente non ha idea che l'attaccante abbia ottenuto l'accesso in silenzio.

40
Tony Meyer

Ok, ignorando il fatto che le password sono memorizzate in testo semplice e si immerge direttamente nella domanda:. La password è una credenziale che ha una lunga validità, mentre un collegamento per reimpostare la password può essere definito in diversi modi:

  1. Valido solo per un breve periodo di tempo
  2. Valido solo da un determinato ip
    • Preferibilmente lo stesso IP da cui è stata inviata la richiesta di password.
  3. Valido solo nella sessione utente
    • Quando l'utente inserisce i dettagli nel modulo Web per richiedere una nuova password, all'utente viene inviato un cookie (avvio di una sessione). La convalida dell'URL di reimpostazione della password dipende da qualcosa in questa sessione, pertanto la funzione di convalida fallirà se la richiesta viene effettuata senza il cookie.

Va inoltre notato che una vecchia password, che potrebbe non essere più valida nel sito tuo, potrebbe essere comunque altamente sensibile per il cliente, poiché le persone riutilizzano le password per tutti i tipi di servizi.

Da questo aspetto, inserire le password nelle caselle di posta elettronica delle persone potrebbe essere considerato un po 'maleducato.

22
mhswende

Vale la pena aggiungere che se si invia la password di un utente in chiaro, è possibile che si stia inviando una password che usano anche su altri siti - anche se si forza l'utente a cambiare la password sul proprio sito al prossimo accesso, non è stato fatto loro alcun favore affatto.

9
Tom Newton

Non è etico archiviare le password in chiaro se hai il minimo problema per i tuoi utenti. Dovresti conservare gli hash salati sicuri. L'invio di una password in chiaro può causare l'interruzione dell'utilizzo del servizio da parte degli utenti attenti alla sicurezza (anche se gli utenti attenti alla sicurezza non riutilizzano le password; semplicemente non amano supportare servizi palesemente non attenti alla sicurezza).

Come implementare un ripristino della password; generalmente per un sito moderatamente sicuro (ad esempio carta di credito), è necessario che rispondano ad alcune domande di sicurezza di base (ad esempio, il nome da nubile della madre) e che si verifichino il controllo del proprio account di posta elettronica o numero di telefono, come forma di autenticazione a due fattori. Il collegamento dovrebbe essere valido solo in una breve finestra temporale (da ore a giorni) e valido una sola volta (ad esempio, include un token creato casualmente che scade dopo il primo utilizzo e dopo un periodo di tempo).

Notificherai inoltre che la password è stata ripristinata (e anche se la loro e-mail è stata compromessa; troveranno la prova di un utente malintenzionato quando non potranno più accedere con la loro vecchia password). L'invio della password (senza modificarla) significa che questo attacco può essere fatto di nascosto senza che l'utente lo sappia (se si dice che le e-mail sono state cancellate).

9
dr jimbob

È meglio inviare un collegamento per reimpostare la password.

Alcuni siti hanno il modulo della password dimenticata e reimpostano immediatamente la password su un valore casuale, che viene inviato per e-mail all'utente. Questo ha un difetto di negazione del servizio: qualcuno che non è il proprietario dell'account può reimpostare la password. Il collegamento per reimpostare la password evita questo, perché la password viene reimpostata solo quando un utente fa clic sul collegamento e per farlo devono avere accesso all'indirizzo e-mail.

Se vuoi un po 'di sicurezza contro un utente malintenzionato che ha accesso alla posta elettronica dell'utente, l'approccio abituale è quello di avere anche domande di sicurezza. Queste sono domande come "Qual era il nome del tuo animale domestico". E il tempo per chiedere questi è dopo che l'utente ha fatto clic sul collegamento reimposta password nell'e-mail.

Alcuni buoni consigli qui: https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet

3
paj28

È meglio inviare un collegamento di ripristino.

Oltre alle ragioni fornite da @Tony Meyer e @mhswende, la pagina sul link di reset può richiedere un'ulteriore autenticazione. Molti siti richiedono agli utenti di rispondere a "domande di sicurezza" proprio per questo scopo (il vecchio standard pre-computer richiede il nome da nubile di tua madre). I siti che hanno il tuo numero di telefono potrebbero richiedere, nella loro pagina di reimpostazione della password, di inserire un codice inviato tramite SMS. Le istituzioni finanziarie possono porre domande sui vecchi registri finanziari (passate amministrazioni, ecc.).

Non è banale trovare un buon meccanismo di autenticazione secondaria, ma qualsiasi procedura di reimpostazione (o ripristino) della password che non sia abbastanza vulnerabile da definirla negligente.

2
ShadSterling