Diseñando un nuevo flujo para una característica de "olvidé tu contraseña" que estamos desarrollando, encontré una pregunta difícil con respecto a la URL y el compromiso que se debe hacer entre los desarrolladores frontend y backend.
Aunque ese no es el punto de la pregunta, aplico el flujo para una mejor comprensión del lector.
- solicitud de restablecimiento de un correo electrónico (frontend)
- Si el correo electrónico dado está presente o no envía respuesta OK (backend)
- Generar un hash de reinicio aleatorio (si no hay uno & no caducado, para evitar el spam) (backend)
- Enviar el enlace de restablecimiento @ correo electrónico del usuario (backend)
- Redirigir a una URL con el formulario de restablecimiento de contraseña (interfaz)
Y está el punto en el que se inicia la pregunta.
¿Qué información debe enviarse (con la URL) a la interfaz para que la interfaz sepa qué identificador de usuario debe enviarse de vuelta?
Mi primer pensamiento es que el frontend necesita devolver la contraseña del nuevo usuario junto con el hash del correo electrónico, para que el servidor obtenga la información del usuario del hash correspondiente con la solicitud de restablecimiento. Incluso si alguien fuerza de forma forzada los hashes y encuentra una página de restablecimiento de contraseña, nunca sabrá para qué usuario está cambiando la contraseña.
¿Falta algo aquí o es la forma más segura de manejar la URL de restablecimiento, dado que la funcionalidad de autenticación de 2 factores no está presente?
¿Es así como los cuerpos grandes manejan la funcionalidad de enlace de restablecimiento?
Gracias de antemano!