¿Es razonablemente seguro el siguiente proceso como recuperación de ‘contraseña olvidada’?

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:

  1. 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.
  2. 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.

More Interesting

¿Dónde está el lugar más barato para alojar un sitio web HTML simple?

¿Cómo me enseñaría a diseñar sitios web?

Cualquier ingeniero de software mira a ciertos compañeros de trabajo y se pregunta "¿cómo se convirtió este tipo en un SWE?"

¿Cuál es el alcance del free lance en el diseño web de la India?

¿Cuál es el mejor complemento de WordPress para una cuenta de miembro (registro, inicio de sesión, perfil, cierre de sesión)?

Con JQUERY, ¿cómo selecciono una de las opciones de una etiqueta de selección para realizar un evento cuando hago clic?

Cuando desarrolla un modelo para el aprendizaje automático, ¿este modelo permanece en el lado del cliente o del servidor? ¿Cuál es la mejor manera de crear un modelo? ¿Dónde debería quedarse?

¿Es posible construir un motor de búsqueda sigiloso (rastreo web no raspado web) para apuntar a un solo sitio web en línea, sin que ellos lo sepan, y qué habilidades de codificación o anonimato serían necesarias?

¿Cuáles son algunos componentes buenos y gratuitos de Angular 2 que todo desarrollador debería tener?

¿Qué papel desempeña cada uno de los siguientes lenguajes en la programación de un sitio web (CSS, HTML, PHP, jQuery, Bootstrap, Javascript, WordPress, C ++, Perl, Python, Ruby, MySQL)?

¿Qué es Node.js? Quiero una comprensión clara al respecto.

¿Qué esperas de un proveedor de alojamiento web profesional específico de WordPress?

¿Cómo implementan las startups la autenticación y autorización del cliente?

Cómo determinar qué 4 puntos de interrupción son la mejor opción para mi sitio web

¿Qué opinas de todos los marcos de JavaScript? ¿Es una forma de 'hacer trampa' cuando no estás usando JavaScript nativo?