Este proceso parece estar bien siempre que su código de reinicio no sea adivinable. Estas son las cosas a las que debe prestar atención:
- Use un token aleatorio: cree el token aleatorio que sugiero que use un número aleatorio (por ejemplo, invocando mt_rand () en php) y divídalo con una cadena que mantenga en secreto por si acaso.
- Protege contra CSRF : asegúrate también de que tu formulario esté protegido contra ataques CSRF agregando un token secreto en él.
- Use HTTPS : también recomendaría hacer el restablecimiento a través de HTTPS para evitar escuchas.
Desde el punto de vista de la experiencia del usuario, probablemente sea más fácil hacer clic en un enlace dentro del correo electrónico en lugar de volver a la página que crea fricción.
Si le preocupa que la cuenta de correo electrónico se vea comprometida, hay al menos tres opciones:
- ¿Dónde debo agregar el marcado estructurado de Google para enlaces sociales en mi sitio de WordPress?
- ¿Por qué los desarrolladores web usan TypeScript o CoffeeScript sobre JavaScript nativo?
- ¿Qué conjunto de habilidades se requieren en el desarrollo front-end?
- ¿Puedes ganar más dinero como desarrollador de Ruby on Rails o como ingeniero de software integrado?
- ¿Cuál es la diferencia entre los lenguajes de programación back end y front end?
- Use una pregunta de seguridad junto con el código de reinicio o, si no tiene una pregunta de seguridad, muéstreles un montón de artículos / personas de su sitio y pregúnteles con cuál interactuaron.
- Envíeles un SMS en sus teléfonos.
3. Pregúntele al usuario cuándo se registra para almacenar una cuadrícula de reinicio que contiene un número aleatorio y pregúntele en el momento del reinicio algunos de ellos.
Con respecto a los comentarios posteriores, defiendo firmemente no depender del nombre de usuario como token de seguridad. Las personas reutilizan el mismo nombre de usuario en sitios múltiples, por lo que el atacante probablemente ya lo sabe y un correo electrónico en la bandeja de entrada lo contendrá con seguridad. Es mejor asumir que los nombres de usuario son información pública y no depender de ella.