Le applicazioni inviano e-mail per verificare gli account utente o reimpostare una password. Credo che quanto segue sia il modo in cui dovrebbe essere e chiedo riferimenti e implementazioni.Quali sono le migliori pratiche per i link di attivazione/registrazione/reimpostazione password nelle e-mail con nonce
Se un'applicazione deve inviare un link in una e-mail per verificare l'indirizzo dell'utente, secondo il mio punto di vista, il collegamento e l'elaborazione dell'applicazione del collegamento dovrebbe avere le seguenti caratteristiche:
- Il link contiene un nonce nell'URI della richiesta (
http://host/path?nonce
). - Seguendo il collegamento (GET), all'utente viene presentato un modulo, facoltativamente con il nonce.
- L'utente conferma l'input (POST).
- Il server riceve la richiesta e
- parametri di controlli di input,
- esegue il cambiamento,
- e invalida la nonce.
Questo dovrebbe essere corretto per HTTP RFC on Safe and Idempotent Methods.
Il problema è che questo processo comporta una pagina aggiuntiva o un'azione utente (elemento 3), che è considerata superflua (se non inutile) da molte persone. Ho avuto problemi a presentare questo approccio a colleghi e clienti, quindi chiedo un input su questo da un gruppo tecnico più ampio. L'unico argomento che ho avuto contro saltare il passaggio POST era un possibile precaricamento del collegamento dal browser.
- Ci sono riferimenti su questo argomento che potrebbero spiegare meglio l'idea e convincere anche una persona non tecnica (best practice da riviste, blog, ...)?
- Ci sono siti di riferimento (preferibilmente popolari e con molti utenti) che implementano questo approccio?
- In caso negativo, esistono motivi documentati o alternative equivalenti?
Grazie,
Kariem
dettagli risparmiato
ho conservato la parte principale breve, ma per ridurre troppo la discussione attorno ai dettagli che ho avuto lasciato intenzionalmente, aggiungerò alcune ipotesi:
- Il contenuto dell'e-mail non è parte di questa discussione. L'utente sa che deve fare clic sul collegamento per eseguire l'azione. Se l'utente non reagisce, non accadrà nulla, che è anche noto.
- Non è necessario indicare perché stiamo inviando messaggi all'utente, né la politica di comunicazione. Supponiamo che l'utente si aspetti di ricevere l'email.
- Il nonce ha una data/ora di scadenza ed è direttamente associato all'indirizzo e-mail del destinatario per ridurre i duplicati.
Note
Con OpenID e simili, normali applicazioni web sono sollevati da attuare standard di gestione account utente (password, e-mail ...), ma ancora alcuni clienti vogliono 'loro propri utenti '
Stranamente non ho trovato una domanda soddisfacente né risposta ancora qui. Quello che ho trovato finora:
- Answer by Don in HTTP POST with URL query parameters — good idea or not?
- Question from Thomas -- When do you use POST and when do you use GET?
correlati [di sicurezza] (http://security.stackexchange.com/q/40512/61220) e [UX] (http://ux.stackexchange.com/q/33014/33282) domande su il tema. –