Las aplicaciones envían correos electrónicos para verificar cuentas de usuario o restablecer una contraseña. Creo que la siguiente es la forma en que debería ser y estoy pidiendo referencias e implementaciones.¿Cuáles son las mejores prácticas para los enlaces de activación/registro/restablecimiento de contraseña en los correos electrónicos con nonce
Si una aplicación tiene que enviar un enlace en un correo electrónico para verificar la dirección del usuario, de acuerdo con mi punto de vista, el vínculo y el procesamiento de la aplicación de la relación deben tener las siguientes características:
- El enlace contiene un nonce en el URI de solicitud (
http://host/path?nonce
). - Al seguir el enlace (GET), se le presenta al usuario un formulario, opcionalmente con el nonce.
- El usuario confirma la entrada (POST).
- El servidor recibe la solicitud y
- parámetros de entrada cheques,
- realiza el cambio,
- e invalida el nonce.
Ésta debe ser correcta por HTTP RFC on Safe and Idempotent Methods.
El problema es que este proceso implica una página adicional o acción del usuario (elemento 3), que muchas personas consideran superflua (si no inútil). Tuve problemas para presentar este enfoque a mis compañeros y clientes, por lo que solicito la opinión de un grupo técnico más amplio. El único argumento que tuve para evitar el paso POST fue una posible precarga del enlace desde el navegador.
- ¿Existen referencias sobre este tema que podrían explicar mejor la idea y convencer incluso a una persona no técnica (mejores prácticas de diarios, blogs, ...)?
- ¿Existen sitios de referencia (preferiblemente populares y con muchos usuarios) que implementan este enfoque?
- En caso negativo, ¿existen razones documentadas o alternativas equivalentes?
Gracias,
Kariem
detalles salvó
he guardado la parte principal corto, pero para reducir el exceso de discusión en torno a los detalles que he tenido intencionalmente omitido, añadiré algunas suposiciones:
- El contenido del correo electrónico no forma parte de esta discusión. El usuario sabe que tiene que hacer clic en el enlace para realizar la acción. Si el usuario no reacciona, no pasará nada, que también es conocido.
- No tenemos que indicar por qué estamos enviando el correo al usuario, ni la política de comunicación. Suponemos que el usuario espera recibir el correo electrónico.
- El nonce tiene una marca de tiempo de vencimiento y está directamente asociado con la dirección de correo electrónico de los destinatarios para reducir los duplicados.
Notas
Con similares, aplicaciones web normales OpenID y están exentos de la aplicación de gestión de cuenta de usuario estándar (contraseña, correo electrónico ...), pero todavía algunos clientes quieren 'su propios usuarios '
Curiosamente, todavía no he encontrado una pregunta satisfactoria ni una respuesta. Lo que he encontrado hasta ahora:
- 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?
relacionada [de seguridad] (http://security.stackexchange.com/q/40512/61220) y [UX] (http://ux.stackexchange.com/q/33014/33282) preguntas sobre El tema. –