¿Olvidó la contraseña y revela si la cuenta existe?

15

Entonces, cuando llegas al enlace de contraseña olvidada e ingresas tu dirección de correo electrónico, parece que los sitios (y otros programadores con los que he hablado) son uno de los dos modos de pensar;

  • Notifique al usuario si la dirección de correo electrónico coincidió con una de la base de datos y, de acuerdo con este aviso, si se configuró un correo electrónico para restablecer la contraseña o:
  • Responda de inmediato con un "Correo electrónico enviado" o "Si este usuario existe, le hemos enviado un correo electrónico de restablecimiento de contraseña" independientemente de si se produjo una coincidencia que resultó en un correo electrónico enviado. Esto se hace (aparentemente) por razones de seguridad.

He implementado este último yo mismo y, en general, descubrí que generaba molestias con los usuarios debido a;

  1. Si un usuario escribe incorrectamente su dirección de correo electrónico, se le informa que se envía un correo electrónico, pero nunca recibirá una.
  2. Si han escrito una dirección de correo electrónico diferente a la que se registraron, tampoco recibirán un correo electrónico.
  3. Una combinación de lo anterior puede resultar en múltiples intentos, pero no se recibe un correo electrónico para restablecer la contraseña, lo que da como resultado la renuncia.

Finalmente, tras la investigación de sitios web populares que utilizan el segundo escenario, descubrí que al intentar registrar una cuenta en estos sitios donde la dirección de correo electrónico ingresada coincide con una cuenta existente, "esta dirección de correo electrónico ya está en uso, o el mensaje de tipo "no disponible" se muestra de todos modos.

Como tales, ¿cuáles son los beneficios que no revelan si un correo electrónico de restablecimiento de contraseña ha coincidido con una cuenta, y cómo son estos beneficios cuando el registro requiere que se revelen coincidencias de correo electrónico?

    
pregunta Stafford Williams 30.08.2015 - 00:48
fuente

3 respuestas

8

A veces hay un equilibrio entre la seguridad y la facilidad de uso.

Si es importante para usted o para sus usuarios que otras personas no sepan que están usando el sitio, entonces su segunda opción es la mejor.

Siempre puede enviar un correo electrónico a una dirección que no existe en su sistema, como "Alguien solicitó un restablecimiento de contraseña para esta dirección, pero no está en nuestro sistema". Eso maneja tu segunda queja.

Agregue un enlace para volver a realizar el restablecimiento de la contraseña en la página de confirmación. Con suerte, escribirán el correo electrónico correctamente la próxima vez.

Por lo tanto, decida si evitar la enumeración de usuarios es más importante que la dirección de correo electrónico mal escrita ocasional.

  

¿Cuáles son los beneficios que no revelan si un correo electrónico de restablecimiento de contraseña ha coincidido con una cuenta?

No le da ni confirma una lista de las direcciones de correo electrónico de los usuarios a un atacante y no le dice a otras personas que un usuario determinado está usando su sitio. Si es un sitio sobre gatitos, ¿a quién le importa? Si se trata de un banco o sitio de relaciones extra matrimoniales, entonces esto es importante.

  

¿De qué manera son beneficiosas cuando el registro requiere que se revelen coincidencias de correo electrónico?

¿Quién dice que el registro requiere esto? Haz lo mismo para registrarte. Solicite la dirección de correo electrónico, envíe el enlace "paso 2" o "alguien solicitó un registro en nuestro sitio, pero esta dirección ya está registrada".

    
respondido por el Neil McGuigan 30.08.2015 - 02:27
fuente
2

Así que supongo que, como punto de partida, debemos considerar qué puede hacer realmente un atacante si confirma / niega la existencia de un correo electrónico en su sistema de una manera fácilmente accesible. Este es un escenario posible:

  • Un atacante ha obtenido acceso a una base de datos de direcciones de correo electrónico comprometidas + contraseñas. (es decir, pueden iniciar sesión en cualquiera de los correos electrónicos de estos usuarios)
  • Quieren obtener acceso a algunas de las cuentas de sus usuarios en su servicio.
  • Su servicio confirmará o negará si existe una cuenta con una dirección de correo electrónico.

En este caso, pueden probar todos los correos electrónicos que tienen en su base de datos con su función de restablecimiento de contraseña, recopilar los resultados devueltos y, si confirmó que alguno de ellos existe, inicie sesión en esos correos electrónicos y siga el restablecimiento de contraseña. enlace.

Si es lo suficientemente fácil como para seguir el proceso de registro, entonces tiene razón al suponer que el restablecimiento de la contraseña es opaco y no ofrece seguridad adicional. Simplemente pueden realizar el ataque mencionado anteriormente en la página de registro en lugar de la página de restablecimiento de contraseña.

Algunas formas en las que puedo pensar para mitigar esto son:

  • Forzar a los usuarios a registrarse con un nombre de usuario o asignarles un nombre de usuario cuando se registran, y hacer que los utilicen desde ese momento en lugar de su dirección de correo electrónico.
  • No les permita iniciar sesión hasta que hayan hecho clic en la confirmación del correo electrónico. De esa manera, si alguien intenta registrarse con un correo electrónico que ya ha sido registrado, simplemente diga "hemos enviado un correo electrónico de confirmación a su dirección de correo electrónico, haga clic para iniciar sesión"
  • Intente implementar algún tipo de métodos contra la fuerza bruta en páginas que puedan confirmar / denegar la existencia de una dirección de correo electrónico, como un CAPTCHA.

Sin embargo, como se indicó anteriormente, ambos tienen un impacto relativamente significativo en la usabilidad. Como siempre, la seguridad es siempre un intercambio entre practicidad y paranoia.

    
respondido por el Nic Barker 30.08.2015 - 02:32
fuente
2

Las respuestas son buenas hasta ahora, pero es importante tener en cuenta que, desde el punto de vista de los perfiles, no me importa si no accedo a su cuenta, pero el conocimiento de que están usando un servicio es suficiente para diseñar una situación / controlar sus feeds sociales para posibles contraseñas (mascotas, niños, coches, etc.).

Dicho esto, durante la suscripción del usuario sería un movimiento de UX incorrecto (o al menos un campo minado) explicar al usuario que la dirección de correo electrónico puede o no estar en uso. Podría idear un poco de lógica funky que les permita recrear una cuenta y enviarlos por correo electrónico diciendo "hey, parece que ya tiene una cuenta", pero eso es un desorden y, francamente, una pérdida de tiempo para el usuario. Lo mismo ocurre con una página de inicio de sesión: "usuario / pase no válido", ya sea con cuenta o sin cuenta, es un buen hábito ... pero cuando la página de registro proporciona esa información libremente Y corre el riesgo de que los usuarios se molesten si piensan que Me he registrado pero no lo he hecho.

Personalmente, trato de buscar OpenID tanto como sea posible para que los servicios basados en la web eviten que este escenario ocurra. Todos tenemos una cuenta de Google / Facebook / Twitter en estos días ...

    
respondido por el ScottMcGready 30.08.2015 - 05:58
fuente

Lea otras preguntas en las etiquetas