syncs web-applications passwords password-recovery forgot-password

web-applications - syncs - sync sign in



Técnicas efectivas para la recuperación de contraseñas en aplicaciones web modernas (5)

Hemos estado trabajando en aplicaciones web en las que necesitamos implementar la funcionalidad tradicional de aplicaciones web para la recuperación de contraseñas. Según las tendencias hay enfoques como ...

  1. Enviar enlace de restablecimiento de contraseña al correo electrónico del usuario.
  2. Pregunta secreta al usuario para la recuperación de la contraseña.
  3. Restablecer la contraseña existente y crear una nueva contraseña y enviarla al usuario. Esto también puede forzar al usuario a cambiar la contraseña en el próximo inicio de sesión.

¿Tenemos alguna técnica no tradicional para implementar el mecanismo de recuperación de contraseña? ¿Qué otros enfoques has probado para esto?

Gracias.


Depende del nivel de seguridad que esté buscando, los costos de soporte y las inquietudes de usabilidad.

Enviar un enlace de restablecimiento de contraseña es el método preferido por varios motivos:

  • Costos de soporte : este es el factor más importante desde una perspectiva empresarial. Los usuarios a menudo olvidan incluso sus sugerencias de contraseña o utilizan una dirección de correo falsa u olvidan su nombre de usuario. Todas estas son preocupaciones legítimas por las cuales puede recibir solicitudes de soporte. Esto a su vez crea otro problema, tiene que establecer la legitimidad del usuario preguntándole acerca de la actividad reciente de la cuenta y qué no. Si no proporciona ese nivel de soporte, muchos usuarios novatos se sentirán decepcionados. Enviar un enlace de restablecimiento de contraseña mitiga estas preocupaciones porque los usuarios generalmente tienen una o dos direcciones de correo electrónico y pueden recuperar fácilmente su nombre de usuario / contraseña al proporcionar su dirección de correo electrónico.

  • Preocupaciones de seguridad : este es el factor más importante desde una perspectiva técnica. Hay varias preocupaciones aquí que tienes que sopesar. Una cuenta de correo electrónico comprometida significa que el pirata informático puede acceder a todos los servicios de los usuarios, lo que permite enviar un enlace de restablecimiento de contraseña por correo electrónico. Puede conformarse con un término medio, que consiste en enviar por correo electrónico un enlace de restablecimiento de contraseña al usuario, que a su vez le pregunta al usuario una sugerencia de contraseña, después de lo cual le permite restablecer su contraseña. Nuevamente, nunca debe exponer la contraseña del usuario en ningún medio. De hecho, si tiene la capacidad de mostrarles su contraseña, su sistema ya es inseguro porque implica que no los almacena utilizando un hash seguro como SHA-1 y que un desarrollador de su empresa puede obtener la contraseña de todos.

  • Usabilidad - Este es el factor más importante desde la perspectiva del usuario. Enviar un enlace de restablecimiento de contraseña requiere que el usuario vaya y verifique su dirección de correo electrónico, lo que puede significar que el tiempo para realizar la tarea puede llegar hasta 2 o incluso 3 minutos. Sin embargo, creo que esto no es un gran problema. A la mayoría de los usuarios no les importa esto porque sienten que tienen la culpa y esto es una medida de seguridad en su mejor interés. Solo tengo la hipótesis de la experiencia personal y los usuarios en general pueden sentir de manera diferente. Yo pondría la seguridad como una prioridad más alta que la experiencia del usuario porque los usuarios rara vez necesitarán recuperar sus contraseñas (el usuario no ha iniciado sesión durante mucho tiempo y olvidó su contraseña; el usuario guardó su contraseña en el navegador que se reinstaló y algunos otros casos de borde).


En mi opinión, enviar un enlace para restablecer la contraseña al correo electrónico del usuario es la mejor manera. Así es como lo hace Digg, y así es como lo hago yo.

Pero en este método debemos confiar en que el usuario pueda acceder a su correo electrónico.

Respecto al método de la pregunta secreta: la mayoría de las veces, la respuesta de la pregunta secreta no es tan secreta como nos gustaría. Sería en el mejor interés de nuestros usuarios bloquear este método de "pirateo de cuenta".


Otras opciones que vi en la práctica incluirían:

  • permitir una segunda contraseña cuando algo sale mal, algo así como el Super-PIN utilizado con los teléfonos celulares.
  • creando un token de archivo (generalmente una clave PGP) que el usuario descargará en la creación de la cuenta y lo almacenará en una memoria USB, o lo archivará para su uso posterior. Cuando hay un problema, el usuario cargará el token, lo que demostrará que es el "propietario" de la cuenta y la aplicación que permitirá al usuario cambiar la contraseña. Esto puede ser un token constante o un archivo con varios tokens (similar a un TAN de banca en línea): cada vez que se usa un token, también se invalida.

Los métodos anteriores no son tan sencillos de implementar, pero son bastante fáciles de usar (ya que no hay nada nuevo en ellos y están presentes en otras situaciones del día a día).


Un enfoque adicional para el enlace de restablecimiento de contraseña puede ser crear una clave aleatoria que no aparezca en el enlace de correo electrónico que el usuario tendrá que escribir una vez que se haya hecho clic en el enlace. Esto ayudaría a las personas que capturan el correo electrónico.


Un sitio web y sus administradores no deben saber la contraseña de texto simple de sus usuarios. Solo debe haber un hash unidireccional de la contraseña almacenada para comparación en los eventos de autenticación. Por lo tanto, enviar una contraseña de texto no debe ser una opción.

Personalmente me gusta el enlace de restablecimiento de contraseña enviado al usuario. No obstante, recuerda expirar ese enlace. Además, notifique al usuario mediante correo electrónico los intentos de restablecimiento de la contraseña (puede ser el mismo correo electrónico que el enlace de restablecimiento), y también después del restablecimiento exitoso.