Password Reimposta l'inoltro URL

1

Se un utente registrato in precedenza fa clic sul pulsante di reimpostazione della password durante l'accesso, desidero inviare loro un'email con un link per la reimpostazione della password.

Ho tre domande:

  1. Come aggiungere una data di scadenza al link URL?

  2. Come strutturare l'URL? In precedenza non avevo le password hash e ho inviato un link "fai clic qui" con

    https://www.example.com/?login&EMAIL=website&PASSWORD=text-password&LOGIN=1&PATH=2

    Ora ho cancellato tutte le password come faccio a strutturare l'URL? Continuo a includere email&hashedpassword come sopra o hash l'intero URL?

  3. Ho notato con un noto sito nel Regno Unito che quando mia moglie ha richiesto il ripristino della mia password, desidero inviare l'URL di reset, ma perché uno dei miei indirizzi email viene inoltrata automaticamente all'e-mail di mia moglie, è stata in grado di reimpostare la mia password e accedere al mio account. Ovviamente non sono troppo preoccupato in questo caso, comunque Conosco molte persone che inoltrano automaticamente le loro e-mail personali per lavorare su indirizzi di posta elettronica, quindi tecnicamente qualcuno potrebbe utilizzare un URL per reimpostare la password per hackerare un account.

C'è un modo per aggirare questo ... per esempio quando invii l'URL di reimpostazione della password, funziona solo se cliccato dal client di posta con quell'indirizzo email?

    
posta Jason 19.11.2015 - 11:52
fonte

2 risposte

6
  1. Non farlo. Aggiungi la scadenza al database e controlla se il token è ancora valido. Se lo aggiungi all'URL, stai invitando le persone a modificarlo.
  2. Perché stai inviando una password? La migliore pratica del settore è quella di inviare un token a vita breve, monouso che porta gli utenti a una pagina che consente l'immissione di una password e una conferma della password, quindi li invia alla pagina di accesso dell'applicazione per utilizzare la nuova password inserita per accedere. In questo modo eviterai di inviare password dal tuo server, il che significa che solo una compromissione del server di qualche tipo rivelerà qualsiasi password, generata dall'utente o dal sistema.
  3. Non c'è davvero un concetto di "client di posta con quell'indirizzo email" - ad esempio, ho un account di posta elettronica a cui accedo dai browser web su vari computer, un client di posta elettronica sul mio personal computer e un client di posta elettronica sul mio telefono. Accedo anche ad altri indirizzi con quegli stessi clienti. Il modo generale per garantire che solo l'utente previsto possa utilizzare tali collegamenti è di mantenere il periodo di validità il più breve possibile - un'ora al massimo. Potrebbero esserci alcuni utenti la cui e-mail impiega più tempo per arrivare, ma ricorda che stanno tentando attivamente di accedere a quel punto. Se gli dici che hai inviato un'email, probabilmente andranno a cercarlo.
risposta data 19.11.2015 - 12:15
fonte
1

Non scrivere sul db se puoi evitarlo. Il bug tracker di Mozilla è stato violato con una password resettata scrivendo al db in modo errato.

Utilizza un HMAC. Metti il tempo di scadenza in HMAC. Inserisci l'HMAC e il tempo di scadenza nell'URL. Controlla l'HMAC su richiesta.

Ecco una guida, inclusa la protezione di riproduzione . link

    
risposta data 20.11.2015 - 07:10
fonte

Leggi altre domande sui tag