Password dimenticata o link di reset, che è più sicuro per email?

22

Originariamente ho postato questo come risposta qui in questa discussione ma non ho ricevuto molti commenti su di esso, e ora sono curioso di sapere che cosa pensano gli altri è l'approccio migliore, o se c'è qualche differenza tra i due approcci.

Il punto originale era se fosse più sicuro inviare un link per la reimpostazione della password quando un utente dimentica la password di un sito Web o se inviare la password originale in chiaro in una e-mail.

Ora non salting e crittografare una password è male perché quando il database viene alla fine rubato dal sito web l'utente malintenzionato avrà tutte le password chiare come giorno. OK bene, ho capito.

Ma se ignoriamo la possibilità che il database venga rubato e guardiamo solo l'utente dimenticando la sua password e passando attraverso i "passaggi della password dimenticati"; è più, lo stesso o meno sicuro di inviare un link di ripristino su una password di testo in una e-mail?

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

L'utente malintenzionato potrebbe reimpostare la tua password prima ancora di sapere che hai un'email.

Il mio pensiero qui è imperfetto?

    
posta fwgx 23.03.2012 - 22:46
fonte

7 risposte

39

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

Stai facendo affidamento sull'utente che cambia la password dopo averla ricevuta (improbabile, dato che hai detto loro di cosa si tratta), o eliminando (in modo permanente, non archiviando o spostando in una cartella "cestino", anche improbabile ) il messaggio di promemoria.

Se ciò non accade, allora potrò accedere all'account e-mail dell'utente qualche tempo dopo, quindi (tempo limitato / uso limitato, forse anche limitato in modo che l'aggressore non possa facilmente usarlo) il link di reset non sta andando essere utile a me, ma la password (probabilmente ancora valida) è certamente.

Inoltre, inviandomi la password in testo semplice, stai dimostrando di averlo memorizzato da qualche parte accessibile. Nella maggior parte dei casi, non c'è bisogno di questo, perché non è necessario crittografare la password (e sale / pepe), è sufficiente averlo hash. Se è crittografato, chiunque abbia accesso al database e alla chiave di decrittografia (ad esempio probabilmente la maggior parte del personale o chiunque rubi il codice insieme al database) è in grado di ottenere la password in testo semplice. Se è sottoposto a hashing, dovrai farlo prima dell'hashing (ad esempio durante una sessione di accesso).

Inoltre, anche se la gente non dovrebbe, è molto comune usare la stessa password (o password molto simili) su più siti. Ciò significa che anziché fornire un modo per entrare in 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), nessuno di questi è sicuro. L'account email è ad alto rischio , perché se hai quel tipo di accesso, quindi puoi probabilmente andare in ogni sito con cui l'utente ha un account e generare una reimpostazione della password. Per evitare questo, è necessario utilizzare qualcosa di diverso dal tuo account e-mail per ottenere l'accesso, come l'autenticazione a due fattori.

Si noti che anche in quest'ultimo caso, un link di ripristino è ancora superiore: se l'utente malintenzionato cambia la password dell'utente tramite un link di ripristino, quando l'utente prova ad accedere, scoprirà che qualcosa non va (anche in ritardo, ma almeno lo sanno). Se stai solo fornendo la password, l'utente non ha idea che l'autore dell'attacco abbia silenziosamente ottenuto l'accesso.

    
risposta data 23.03.2012 - 23:10
fonte
22

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

  1. Valido solo per un breve periodo di tempo
  2. Valido solo da un certo ip
    • Preferibilmente lo stesso IP da cui è stata inviata la richiesta di password.
  3. Valido solo all'interno della sessione utente
    • Quando l'utente immette i dettagli nel modulo Web per richiedere una nuova password, all'utente viene rilasciato un cookie (avvio di una sessione). La validazione della password reset-url dipende da qualcosa in questa sessione, quindi la funzione di validazione fallirà se la richiesta viene effettuata senza il cookie.

Va anche notato che una vecchia password, che potrebbe non essere più valida nel tuo sito, potrebbe essere ancora molto sensibile per il cliente, dal momento che le persone riutilizzano le password attraverso tutti i tipi di servizi.

Da questo punto di vista, mettere le password nelle caselle di posta delle persone potrebbe essere considerato un po 'rude.

    
risposta data 24.03.2012 - 21:59
fonte
9

Vale la pena aggiungere che se si invia la password di un utente in chiaro, è possibile che si stia inviando una password che utilizza anche su altri siti - anche se si costringe l'utente a modificare la password sul proprio sito al prossimo accesso, l'utente ha fatto loro non favoriscono affatto.

    
risposta data 24.03.2012 - 15:11
fonte
9

Non è etico archiviare le password in testo semplice se si ha la minima preoccupazione per i propri utenti. Dovresti conservare degli hash salati sicuri. L'invio di una password in testo non crittografato può indurre gli utenti alla sicurezza a smettere di utilizzare il servizio (anche se gli utenti attenti alla sicurezza non riutilizzano le password, semplicemente non amano i servizi che sono chiaramente consapevoli di non sicurezza).

su come implementare una reimpostazione della password; generalmente per un sito moderatamente sicuro (ad esempio la carta di credito), è necessario che rispondano ad alcune domande di sicurezza di base (ad esempio, il nome da nubile della madre) e verificano che abbiano il controllo del proprio account e-mail o numero di telefono, come forma di autenticazione a due fattori. Il link dovrebbe essere valido solo in una finestra temporale breve (da ore a giorni) e valido solo una volta (ad es. Include un token creato a caso che scade dopo il primo utilizzo e dopo un periodo di tempo).

Informi anche che la password è stata ripristinata (e anche se la loro e-mail è stata compromessa, troveranno la prova di un aggressore quando non potranno più accedere con la vecchia password). L'invio della password (senza modificarlo) 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).

    
risposta data 24.03.2012 - 22:36
fonte
3

È meglio inviare un link per la reimpostazione della password.

Alcuni siti hanno il modulo della password dimenticata che ripristina immediatamente la password su un valore casuale e che viene inviata via email all'utente. Questo ha un difetto denial-of-service - qualcuno che non è il proprietario dell'account può causare il reset della password. Il link per la reimpostazione della password evita questo, perché la password viene reimpostata solo dopo che un utente ha fatto clic sul link e devono avere accesso all'indirizzo email per farlo.

Se si desidera un po 'di sicurezza contro un utente malintenzionato che ha accesso alla posta elettronica dell'utente, l'approccio abituale è di avere anche domande di sicurezza. Queste sono domande come "Qual era il nome del tuo animale domestico". E il momento di chiederlo è dopo che l'utente ha fatto clic sul link per reimpostare la password nell'email.

Alcuni buoni consigli qui: link

    
risposta data 13.10.2013 - 16:25
fonte
2

È meglio inviare un link di ripristino.

Oltre ai motivi forniti da @Tony Meyer e @mhswende, la pagina al link di ripristino può richiedere un'autenticazione aggiuntiva. Molti siti richiedono agli utenti di rispondere a "domande di sicurezza" esattamente 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, nella loro pagina di reimpostazione della password, richiedere di inserire un codice che hanno inviato via SMS. Le istituzioni finanziarie possono porre domande su vecchi documenti finanziari (morgages precedenti, ecc.).

Non è banale trovare un buon meccanismo di autenticazione secondario, ma qualsiasi procedura di reimpostazione della password (o ripristino) che non sia sufficientemente vulnerabile che io chiamerei negligente.

    
risposta data 23.05.2014 - 18:52
fonte
-1

L'e-mail delle password dimenticate significa che stai memorizzando la password nel tuo database sia in forma semplice che crittografata a 2 vie. Questa non è una pratica di sicurezza suggerita.

Dovresti memorizzare una forma di password criptica a 1 via (che non può essere decifrata) alla fine della web-app. Quindi, anche se la tua web-app o server web si trova di fronte a qualsiasi livello di titoli in db, nessuna password utente viene fatta trapelare in chiaro.

Quindi, considerando questo criterio, il link di reset è l'opzione adatta e lasciata da due approcci.

    
risposta data 19.04.2012 - 13:20
fonte

Leggi altre domande sui tag