18

Hemos estado trabajando en la aplicación web donde necesitamos implementar la funcionalidad tradicional de aplicaciones web de recuperación de contraseñas. De acuerdo con las tendencias, hay enfoques como ...Técnicas efectivas para la recuperación de contraseñas en aplicaciones web modernas

  1. Envío de enlace de restablecimiento de contraseña a la dirección de 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 obligar al usuario a cambiar la contraseña el próximo inicio de sesión.

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

Gracias.

+1

Por "no tradicional" Supongo que quiere decir "¿peor?" Las tradiciones existen por una razón. – mquander

+5

Rechazo firmemente el sentimiento de mquander, pero tampoco conozco nada mejor que los métodos tradicionales enumerados, todos – annakata

+0

razonablemente fuertes enviar una nueva contraseña (opción 3) es equivalente a enviar un enlace de descanso (opción 1) porque el usuario probablemente cambiar su contraseña – jrharshath

Respuesta

18

Depende del nivel de seguridad que pretenda, los costos de soporte y las preocupaciones de usabilidad.

enviar por correo electrónico un enlace de restablecimiento de contraseña es el método preferido para un número de razones:

  • los gastos de apoyo - Este es el mayor factor desde una perspectiva empresarial. Los usuarios a menudo olvidan incluso sus sugerencias de contraseña o usan una dirección postal falsa u olvidan su nombre de usuario. Todas estas son preocupaciones legítimas para las cuales podría recibir solicitudes de soporte. Esto, a su vez, crea otro problema; debe establecer la legitimidad del usuario preguntándole sobre la actividad reciente de la cuenta y qué no. Si no proporciona ese nivel de soporte, muchos usuarios novatos se sentirán decepcionados. Enviar por correo electrónico un enlace de restablecimiento de contraseña mitiga estas preocupaciones porque los usuarios suelen tener 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 el punto de vista técnico. Aquí hay varias preocupaciones que debes sopesar. Una cuenta de correo electrónico comprometida significa que el pirata informático puede acceder a todos los servicios de los usuarios que permiten el envío de un enlace de restablecimiento de contraseña. 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 pregunta sobre la contraseña después de lo cual le permite restablecer su contraseña. De nuevo, 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 está almacenando utilizando un hash seguro como SHA-1 y un desarrollador en su empresa puede obtener la contraseña de todos.

  • Usabilidad - Este es el factor más importante desde el punto de vista del usuario. Enviar por correo electrónico un enlace para restablecer la 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 ser de hasta 2 o incluso 3 minutos. Sin embargo, creo que esto no es gran cosa.A la mayoría de los usuarios no parece importarles esto porque sienten que tienen la culpa y esta es una medida de seguridad en su mejor interés. Solo estoy planteando la hipótesis a partir de la experiencia personal y los usuarios en general pueden sentirse de manera diferente. Pondría la seguridad como una prioridad más alta que la experiencia del usuario, ya que los usuarios raramente necesitarán recuperar sus contraseñas (el usuario no ha iniciado sesión durante mucho tiempo y olvidó su contraseña; el usuario había guardado su contraseña en el navegador que fue reinstalado y algunos otros casos extremos).

+0

Desde el punto de vista de la usabilidad, ¿qué técnicas podemos imaginar? Ese es realmente el criterio. Para nosotros, nada más importa tanto como la experiencia del usuario. –

+0

en algunos casos, la seguridad y la privacidad importan más que la experiencia del usuario. – jrharshath

+0

@s_ruchit, si la experiencia del usuario es una gran preocupación, entonces también puede proporcionar ambas opciones, ir con un sistema de sugerencias de contraseñas como hotmail.com y también proporcionar un enlace para enviarles un formulario de restablecimiento de contraseña. De esta forma pueden elegir, pero desde una perspectiva de seguridad abre nuevos vectores de ataque. – aleemb

6

En mi opinión, enviar un enlace de restablecimiento de contraseña al correo electrónico del usuario es la mejor manera. Esta es la forma en que Digg lo hace, y esta es la forma en que lo hago.

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

En cuanto al método de pregunta secreta: la mayoría de las veces, la respuesta a 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 "hack de cuenta".

4

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

Personalmente, me gusta el enlace de restablecimiento de contraseña enviado al usuario. Recuerde caducar ese enlace sin embargo. Además, notifique al usuario por correo electrónico de los intentos de restablecimiento de contraseña (puede ser el mismo correo electrónico que el enlace de restablecimiento), así como después del restablecimiento exitoso.

7

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

  • permitiendo una segunda contraseña cuando algo va mal - algo así como el Super-PIN utilizado con 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 usarlo más adelante. Cuando hay un problema, el usuario cargará el token, demostrando así que él es el "propietario" de la cuenta y la aplicación que permitirá al usuario cambiar la contraseña. 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 simples de implementar, pero son bastante fáciles de usar (ya que no hay nada nuevo sobre ellos y están presentes otros en situaciones cotidianas).

0

Un enfoque adicional para el enlace de restablecimiento de contraseña puede ser crear una clave aleatoria que no salga 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.

Cuestiones relacionadas