Le migliori pratiche per le password durante la registrazione?

6

Ho un sito web che gli utenti registrano un account. Nel campo di registrazione, i campi del modulo sono:

  • Nome
  • E-mail
  • Conferma email
  • Nome utente

Ma non esiste un campo password. Quando inviano l'invio, ricevono via email una password molto complessa, come LHJVjhwnv% uu5 o RbWM9! JeDZUQb .

Ho chiesto al mio sviluppatore di farlo in modo che gli utenti possano impostare la propria password nel modulo di registrazione. Per confermare quella password nel modulo, quindi inviare un link di conferma alla loro e-mail specificata. Quindi in questo modo possono almeno accedere al proprio account e verificare la propria email tramite il link di conferma. Oppure, se non lo facessero, ogni volta che si collegano al sito potrebbe ricordare loro di verificare la propria posta elettronica ecc. Altrimenti non possono fare molto sul sito (esempio). In questo modo anche se non ottieni il link di conferma, possono ancora aggiornare l'e-mail del tuo account a un'altra email e farla risentire . Almeno in questa fase, possono accedere al loro account, invece di per niente .

La risposta che ho ricevuto dallo sviluppatore è la seguente

"The problem with providing the password on registration is that you'll have loads of fake accounts. So people that just register with a non-existent email address. At least with the email validation you're proving the user exists, to a certain extent. If they register with the wrong email, they can just re-register."

Vorrei chiederti a tutti se l'approccio attuale utilizzato dallo sviluppatore è accettabile?

In caso negativo, quali sono alcune buone ragioni che potrei usare per convincere lo sviluppatore a cambiare? "

Ho cercato di spiegare quanto segue

  • Ogni giorno ci sono 9-10 persone che registrano e quindi utilizzano direttamente il modulo "reimpostazione password" subito dopo . Questo modulo li coinvolge inserendo il loro indirizzo e-mail con cui si sono registrati, quindi li invia tramite e-mail con un collegamento a SET una nuova password. Quindi, se impostano una nuova password in ogni caso , perché non li hanno appena impostati sul modulo di registrazione? Perché ci dovrebbero essere 9-10 persone ogni giorno utilizzando il campo di reimpostazione della password, direttamente dopo la registrazione? Sono piuttosto sicuro perché sono apparentemente alle prese con queste password complesse (che non sono contro) che vengono inviate via email a loro e mancano una chiave o un personaggio, o non sembrano essere a conoscenza di copia / incolla o qualcosa di simile quello. Se potevano semplicemente impostare la propria password la prima volta , non avrebbero bisogno di eseguire il campo di reimpostazione della password subito dopo a causa della loro password non funzionante. Ho pensato che fosse strano come ogni giorno ci siano sempre le e-mail di reimpostazione della password. Non per tutti, ma ben 9-10 persone al giorno da quando ho iniziato a utilizzare Mandrillapp per tenere traccia delle e-mail in uscita. Questo viene eseguito il backup dal punto successivo.

  • Ogni giorno ci sono almeno 2-3 persone che compilano il modulo di contatto indicando che la password ricevuta non funziona. Potrebbero essere tutti evitati se potessero semplicemente impostarlo da soli. Potrebbero esserci anche altri che non si preoccupano di contattare.

  • Su quasi 8000 account, il 50% non ha mai effettuato l'accesso. Il mio strong sospetto è che l'e-mail di registrazione contenente la loro password vada alla loro cartella di posta indesiderata / cartella spam. Questo nonostante abbia una corretta configurazione SPF, DKIM, ecc. 2 mesi fa, ho deciso di iniziare a utilizzare Mandrill per inviare posta per assicurarmi che arrivasse alla posta in arrivo, ma comunque ci sono almeno 1-2 persone / giorno che affermano di aver non ottenere la loro e-mail .. che mi lascia perplesso. Se potessero definire la propria password, non dovrebbero preoccuparsi di aspettare la loro password via e-mail, o di non ottenerla interamente. Questo evidenzia ulteriormente la mia preoccupazione iniziale.

Grazie per il tuo tempo!

    
posta user3609978 18.02.2015 - 10:36
fonte

2 risposte

9

Il tuo sviluppatore sta cercando di combinare tre diversi processi in uno: registrazione della password, convalida e-mail e rilevamento robot. Sfortunatamente, questo rende l'intera installazione meno sicura e meno resistente di quanto dovrebbe essere.

  • L'e-mail è un testo chiaro e, al giorno d'oggi, è praticamente garantito per vivere per sempre ed essere incluso in diversi indici e spesso mantenuto a lungo in più server lungo il percorso. Se hai inviato a qualcuno una password via email, sei sicuro di renderla molto vulnerabile. L'email non è sicura a meno che non la proteggi esplicitamente (S / MIME o PGP).
  • L'e-mail non è un processo sincrono: non c'è un tempo minimo per un email per raggiungere il suo obiettivo. In effetti, spesso è possibile che siano necessari diversi minuti per ricevere un'e-mail attraverso il server di posta finale. Ciò rende l'intero processo lento e ostile all'utente finale.
  • L'email non è molto affidabile: come hai scoperto, l'email può essere persa per una serie di motivi senza che nessuno venga informato. In quanto tale, lo rende un mezzo davvero scarso per la trasmissione di informazioni importanti e time-critical come le informazioni iniziali sulla connessione.
  • Per il rilevamento di robot, questo processo è terribilmente inefficiente: ci sono molti servizi e-mail usa e getta che possono facilmente utilizzabile per aggirare questo processo (o domini di posta elettronica catch-all ).

Ora, non esiste un modo "corretto" per farlo: ciò che funzionerà meglio dipenderà molto dal livello di sicurezza di cui hai bisogno e dal modo in cui lo apprezzi dalla facilità d'uso: non è lo stesso progettare la sicurezza per un sito web bancario che per un deposito di ricette di cucina.

Tuttavia, è importante ricordare queste cose durante la progettazione del sistema (e rimanere coerenti, che è, secondo me, il problema che si ha con il tuo):

  • Qual è il tuo pubblico di destinazione. Questo ti permetterà di sapere quanto è complesso per l'utente che puoi fare il processo di registrazione.
  • Qual è il valore della registrazione sul tuo sito web per i tuoi utenti. Questo dovrebbe dirti quanto sforzo puoi aspettarti da loro.
  • Qual è il valore della registrazione per te. Dovrebbe dirvi quanto impegno dovresti dedicare alla verifica dei dettagli della registrazione.
  • Qual è il valore della registrazione per una terza parte potenzialmente ostile. Dovrebbe dirvi quanto impegno dovresti fare per assicurarti che le informazioni dell'utente siano al sicuro.

OWASP ha un foglio cheat che descrive gli elementi di un processo di autenticazione sicuro. La loro guida all'autenticazione è un po 'di luce sull'argomento, ma offre alcuni elementi positivi su come fallo bene (o non farlo male).

    
risposta data 18.02.2015 - 11:20
fonte
1

Questa è una materia complessa se me lo chiedi.

Se permetti a qualcuno di digitare la password e il nome utente in anticipo nel modulo di registrazione della procedura di iscrizione e farli lavorare immediatamente, allora hai un problema quando si tratta di avvisare l'utente per qualsiasi motivo, se non lo sono notificato dai tuoi messaggi nella e-mail fornita. Ci sono molte ragioni per cui potrebbe accadere, tra cui:

  • l'utente ha informato l'e-mail errata (errore di battitura o qualsiasi altro motivo);
  • il messaggio sta andando nella cartella SPAM;
  • il tuo sistema non è autorizzato dall'utente a inviarle messaggi: alcuni provider di posta elettronica dispongono di un sistema in cui rispondono automaticamente con un messaggio di posta elettronica che fornisce istruzioni su come procedere per ricevere i messaggi, al fine di proteggere contro la maggior parte dello spam. Forse l'utente dovrebbe impostare qualche eccezione per non richiedere quei passaggi da alcuni mittenti;
  • la casella di posta è piena;

Qualunque sia la ragione, se l'applicazione richiede la convalida dell'e-mail per consentire all'utente di accedervi, è meno probabile che il tuo sistema non sia in grado di recapitare messaggi ai tuoi utenti. L'invio di più e-mail a utenti non validi può aumentare le probabilità che il tuo sistema di consegna e-mail venga automaticamente contrassegnato come SPAM e non lo desideri.

C'è un altro problema da considerare. Cosa succede se l'utente ha fornito un'altra e-mail valida a causa di un errore di battitura? Poi ci sarebbe un altro utente che riceve tutti quei messaggi fastidiosi. O che l'altro utente potrebbe persino prendere in consegna quell'account se lo desiderasse. Questi sono alcuni dei motivi per cui è richiesta la verifica della posta elettronica.

Quindi, un approccio all'autenticazione dell'utente consiste nel richiedere semplicemente l'indirizzo e-mail dell'utente nel primo passaggio della procedura di registrazione. Non chiedere altro per non disturbare l'utente che si registra alla tua applicazione. Solo l'indirizzo e-mail. Quindi otterrebbero un collegamento con un token casuale generato valido per alcuni minuti. Una volta che l'utente fa clic sul collegamento, verrà portata al passaggio successivo della registrazione e tale e-mail verrà contrassegnata come confermata.

Qualcosa da considerare in questo approccio è che qualcuno potrebbe usare questo, intenzionalmente o meno, per SPAM un altro utente con messaggi fastidiosi che chiedono all'utente di procedere con la registrazione che non hanno richiesto. Non sono sicuro su come prevenirlo, ma probabilmente è una buona idea valutare il limite di tali messaggi. Ad esempio, un token potrebbe essere valido per 10 minuti e mentre è valido il sistema non invierà un altro token via e-mail. Questi utenti potrebbero essere ancora infastiditi dai messaggi ogni 10 minuti, ma forse vorrai gestire tali casi una volta accaduti.

Non ci sono assolutamente motivi per inviare password alle e-mail a scopo di recupero. Dovrebbero essere usati i token e poi l'applicazione potrebbe richiedere una password. Basta essere consapevoli che non è realmente necessaria una password per autenticare un utente se il suo indirizzo e-mail è valido. Potrebbero sempre richiedere un token quando vogliono accedere, senza mai fornire una password.

Se continui a preferire che il modulo completo di iscrizione sia visualizzato in anticipo, c'è anche la possibilità di richiedere all'utente di confermare il proprio indirizzo e-mail per poter ricevere tutti i messaggi recapitati. In questo modo, il sistema non tenterebbe mai di inviare messaggi a indirizzi e-mail non verificati. Ogni volta che usano l'applicazione, può essere visualizzata un'icona di notifica per ricordare all'utente che il suo indirizzo e-mail non è ancora stato verificato, il che significa che non sarebbe in grado di recuperare da una password persa o ricevere notifiche dall'applicazione tramite e-mail.

Inoltre, tieni presente che i nomi utente non sono realmente necessari se imposti un vincolo univoco sull'indirizzo e-mail in modo che sia possibile fornire l'e-mail al posto di un nome utente a fini di autenticazione. Potresti voler mantenere gli indirizzi e-mail in una tabella separata per supportare più e-mail per account.

    
risposta data 06.01.2018 - 22:34
fonte

Leggi altre domande sui tag