Copia l'indirizzo email in una pagina di password dimenticata

43

Sono responsabile di un sito web e sto mettendo in discussione la logica di alcune politiche di "standard di settore" che mi è stato chiesto di rispettare.

Quando un utente accede al sito Web, riceve un messaggio per comunicare che i dettagli di accesso non sono corretti, ma non specifichiamo se è il nome utente o la password che sono errati.

Se l'utente si rende conto di aver dimenticato la propria password (dovrebbe aver usato un gestore di password), può fare clic sul link della password dimenticata e inserire il proprio indirizzo email e premere invio. Viene quindi visualizzato un messaggio che informa che se hanno un account, l'account è stato bloccato e che è stata inviata un'email di reimpostazione della password al proprio account di posta elettronica.

Finora, non vi sono perdite di informazioni su quali credenziali sono errate o se esiste un account per l'e-mail fornito.

Per migliorare l'esperienza dell'utente, ho suggerito che se l'utente fa clic sul link della password dimenticata, se è disponibile nel campo di accesso, dovremmo copiare l'indirizzo e-mail nel campo dell'indirizzo e-mail nella pagina della password dimenticata.

Tuttavia, mi è stato detto che questo è contrario agli "Standard di settore", anche se nessuno può mostrarmi nulla che supporti questo backup!

Capisco che aggiungerlo semplicemente all'URL sarebbe un problema, in quanto consentirebbe alle persone di scorrere gli indirizzi e-mail e bloccare i conti delle persone, causando disagi agli utenti.

Quale vulnerabilità alla sicurezza, se esistente, renderebbe questa pratica negativa?

Modifica

Un aggiornamento per eventuali nuovi lettori.

Ci sono state delle ottime risposte qui e sono grato per tutti gli input.

Il processo ha avuto un difetto, nel blocco della password dimenticata e questo sarà modificato. Il messaggio quando un account bloccato restituisce ancora il messaggio email address or password incorrect , quindi l'utente non saprebbe che l'indirizzo email era valido.

    
posta Karl Gjertsen 05.08.2016 - 11:07
fonte

6 risposte

57

Nessuno come tale
Il cambiamento che stai proponendo sembra essere solo un cambiamento di esperienza dell'utente. Sì, qualcuno può dire che renderà l'utente facile per gli utenti malintenzionati bloccare i normali utenti dal sistema, ma questo non è su di te.
Il problema più grande per te è la tua politica di bloccare l'account dell'utente quando fa clic sulla password dimenticata. Rende molto facile per un utente malintenzionato bloccare l'account. Devono solo andare alla password dimenticata - > Inserisci l'ID email valido - > Premi il pulsante di ripristino.

    
risposta data 05.08.2016 - 11:37
fonte
15

Qui non ci sono grossi problemi, anche se assicurerei che il caching sia disabilitato in modo che chiunque visiti la pagina nello stesso browser non ottenga l'accesso all'indirizzo email se carica la pagina Password dimenticata.

Suggerimenti per le intestazioni da qui . Nota che mentre pragma è per specifica un'intestazione di richiesta in HTTP 1.0, molti browser e server proxy potrebbero comunque interpretarlo se fornito in una risposta.

Cache-Control: private, no-cache, no-store, max-age=0, no-transform
Pragma: no-cache
Expires: 0

Dovresti anche mitigare la perdita e l'archiviazione dei riferimenti tra domini nella cronologia del browser eseguendo il POST del reindirizzamento alla pagina Password dimenticata.

Altri commenti sul tuo approccio generale

They are then shown a message telling them that if they have an account, the account has been locked and that a password reset email has been sent to their email account.

Il blocco dell'account può essere eseguito come attacco Denial of Service contro un particolare utente. Se so che [email protected] ha un account sul tuo sistema e voglio negargli il servizio, potrei richiedere più volte una reimpostazione della password per quell'account per poterlo bloccare.

When a user logs into the website, they get a message to tell them the login details are incorrect, but we do not specify if it is the username or the password that is incorrect.

Che cosa visualizzi se l'account è bloccato?

Se dici che il loro nome utente e password non sono corretti, l'utente potrebbe essere confuso se è effettivamente bloccato (come da mia spiegazione DoS sopra).

Tuttavia, se dici che il loro account è bloccato, lo fai anche per account inesistenti? Chiedo perché altrimenti, come utente malintenzionato, potrei provare a reimpostare la password, quindi provare immediatamente ad accedere come lo stesso utente. Se poi ottengo un messaggio che dice che l'account è bloccato, ho quindi scoperto un account valido (questo è classificato come Eser Enumeration ).

Quindi potresti anche voler far apparire la tua logica per bloccare account inesistenti se è stato tentato un reset della password. Potresti voler apparire per sbloccarli dopo un periodo di tempo casuale, altrimenti un utente malintenzionato potrebbe dedurre che un account bloccato in modo permanente è un account che non esiste perché non è mai stato sbloccato.

    
risposta data 05.08.2016 - 13:15
fonte
11

Non riesco a vedere nessuno "standard del settore" che hai infranto quando copi i nomi utente nella pagina della password dimenticata.

Per quanto vedo, purché tu visualizzi lo stesso messaggio per un nome utente valido e non valido (indirizzo e-mail), quando questo viene inviato alla funzione password dimenticata, dovresti stare bene.

vale a dire. Indipendentemente dall'indirizzo e-mail valido o non valido, all'utente verrà mostrato un messaggio simile a: "Grazie! Se è stato creato un account con l'indirizzo e-mail fornito, verrà inviata un'e-mail a tale indirizzo indirizzo, con le istruzioni per reimpostare la password. "

L'unico modo in cui posso vedere un problema sarebbe, se il campo del nome utente è abilitato con Completamento automatico. Ovviamente se l'utente si trova su un computer condiviso, corrono il rischio che il proprio nome utente (indirizzo e-mail) venga potenzialmente divulgato a un utente malintenzionato, ma tutto dipende dal tipo di sito Web di cui si discute qui.

    
risposta data 05.08.2016 - 13:02
fonte
4

Potenziale difetto di sicurezza a parte, questo si basa sul presupposto che il cliente avesse ragione nel ritenere che avesse l'indirizzo email giusto e che fosse solo la password sbagliata.

Un cliente che digita erroneamente il proprio indirizzo e-mail e non nota immediatamente questo fatto, attiverà la password di reimpostazione, l'indirizzo e-mail verrà compilato automaticamente e farà clic su "reimposta password" senza controllare due volte l'indirizzo e-mail che era stato riempito automaticamente. Un errore di battitura nel campo dell'email potrebbe non essere notato e l'utente probabilmente presume che la password sia la cosa sbagliata se l'indirizzo email sembra corretto a una breve occhiata.

Quindi attenderanno un po 'di tempo per reimpostare la password che non arriverà mai, perché è andata a [email protected]

Il prossimo passo sarà, a seconda della natura della tua attività, chiamare l'assistenza clienti, trovare un concorrente con lo stesso prodotto, ecc. Nessuno degli spazi vuoti qui va bene per te.

    
risposta data 08.08.2016 - 08:43
fonte
2

La copia dell'indirizzo email già inserita nella pagina di accesso alla pagina di reimpostazione della password è non un difetto di sicurezza.

L'unica differenza è se l'utente deve ridigitare l'indirizzo che conosce (o ha rubato) nella casella della password dimenticata per resettare. Hanno già queste informazioni. Nessun dato sconosciuto all'utente viene divulgato copiando i dati forniti dall'utente dal login alla schermata di ripristino. L'email non è visibilmente confermata e nulla nel processo di reset è cambiato. Letteralmente l'unica differenza è che l'utente non ha bisogno di digitare l'indirizzo email due volte.

Dato che conoscono la propria email o l'e-mail rubata, questo non rivela nulla. È l'equivalente di copiare e incollare o ridigitare.

    
risposta data 05.08.2016 - 21:37
fonte
2

Attivando l'opzione Password dimenticata e assumendo che l'ID di accesso sia un indirizzo e-mail (piuttosto che un nome utente come alcuni siti), penso che sia una buona idea inserire l'indirizzo e-mail nel campo Indirizzo e-mail.

Questa non è una preoccupazione per la sicurezza a mio avviso. Dovrebbe essere necessario effettuare una richiesta lato server quando l'utente seleziona il link della password dimenticata. Allora perché non hai il componente della UI della password dimenticata già precaricato in qualche modo come una singola app? Quindi, seleziona il link della password dimenticata e poi mostra la visualizzazione della password dimenticata?

Non sono a conoscenza di uno standard di settore che hai violato.

In generale stai seguendo la procedura corretta Sei corretto se un utente inserisce le credenziali con le quali rispondi "Credenziali non valide" e non fornire ulteriori informazioni.

Sulla selezione della password dimenticata cambia "views", compila l'indirizzo email e consenti all'utente di selezionare send, la risposta del server è "Password dimenticata Email è stata emessa".

Se devi fare una richiesta lato sever per ottenere la pagina Password dimenticata, hai identificato correttamente i parametri non dovrebbero essere contenuti nella richiesta GET, il motivo per questo è che i log lato server memorizzeranno i parametri della stringa di query, e in base alla tua infrastruttura e agli utenti amministratori, puoi consentire o meno agli utenti amministratori di conoscere questi account.

    
risposta data 05.08.2016 - 12:05
fonte

Leggi altre domande sui tag