La mejor práctica para el formulario de contraseña olvidada, está bien para filtrar que un correo electrónico dado no es válido

6

En nuestro formulario de restablecimiento de contraseña olvidada, ¿está bien filtrar que una dirección de correo electrónico ingresada no es válida? O siempre deberíamos devolver el éxito y revisar su correo electrónico, incluso si el correo electrónico no es válido.

Siento que devolver siempre el éxito puede proporcionar una mala experiencia de usuario, es decir, si un usuario está tratando de recordar qué correo electrónico usó para el servicio.

    
pregunta Justin 22.01.2014 - 20:39
fuente

4 respuestas

8

No diría que es una mala experiencia pedirle al usuario que revise su cuenta de correo electrónico; esa sería la ubicación a la que esperarán ir al siguiente, independientemente. Si no están registrados, puede enviarles un correo electrónico indicando que su dirección de correo electrónico no está asociada a ninguna cuenta. Esto evitaría que cualquier otro usuario verifique si la dirección de correo electrónico está registrada con usted o no ( username enumeration ).

Consulte también mi respuesta aquí: ¿Cómo evitar el descubrimiento de correos electrónicos en formularios? , que podría ser relevante.

    
respondido por el SilverlightFox 24.01.2014 - 19:29
fuente
1

Claramente, la preocupación aquí es la posibilidad de que un atacante enumere las direcciones de correo electrónico de los usuarios existentes al probar cada combinación posible y ver qué funciona, o posiblemente el riesgo de revelar incorrectamente el hecho de que una dirección determinada esté asociada con un usuario.

Hay varias maneras de hacer esto, y el método de "contraseña olvidada" es solo una. Otra es intentar inscribirse usando la dirección de correo electrónico de otra persona y ver si se rechaza. Y dependiendo de la aplicación, puede haber muchas otras técnicas similares.

El riesgo es muy bajo, ya que la información que obtendrías no suele ser muy útil. Como todo lo que recibe es una respuesta de "sí / no" (es decir, no recupera su nombre de usuario o la última IP conocida, por ejemplo), sería difícil aprovechar este conocimiento en otro ataque. Pero quizás no siempre sea imposible.

Aún así, en muchas aplicaciones creo que se consideraría un riesgo aceptable para los usuarios a cambio de un poco de facilidad de uso en su pantalla de contraseña olvidada, suponiendo que tome algunas precauciones razonables.

Por supuesto, límite de velocidad va a ser crítico. Deberías estar haciendo esto ya. Si una persona intenta esto más de unas cuantas veces en poco tiempo, debe hacer que disminuya la velocidad. Y tal vez si persisten, deberías hacer que se detengan y te llamen en su lugar.

Otra posibilidad es captcha : no son perfectos, pero ciertamente dificultan la automatización.

Y otra requiere más información que solo la dirección de correo electrónico. Quizás deban proporcionar su dirección de correo electrónico y su código postal o apellido o pokemon favorito. Por supuesto, esto abre una pequeña posibilidad de abuso, por lo que un atacante podría usar su servicio para vincular las direcciones de correo electrónico a sus pokemons favoritos, pero tal ataque probablemente sea demasiado costoso para que valga la pena su tiempo, especialmente si incluye la mitigación anterior.

    
respondido por el tylerl 24.01.2014 - 20:22
fuente
0

Definitivamente es un problema de divulgación de información. La pregunta es si es un gran problema o no. Aplicaciones internas posiblemente no. Internet puede depender de lo que hace la aplicación. Esto depende de usted o de quien esté protegiendo. Esto también está relacionado con la divulgación del registro. Si intenta registrarse para obtener una cuenta con el mismo correo electrónico, etc.

Mi preferencia personal es mostrar un mensaje en la línea de "Le enviaremos un correo electrónico a [lo que sea] si tenemos la dirección de correo electrónico registrada".

    
respondido por el Steve 22.01.2014 - 21:02
fuente
-1

Creo que deberías decirle al usuario que su correo electrónico no es válido, si siempre dices 'éxito' nunca sabrá si el restablecimiento de la contraseña es correcto o no, y luego, dejarán de intentarlo en el primer intento . Por supuesto, un atacante podría usar esto para descubrir correos electrónicos.

Creo que la mejor solución aquí es hacer una contraseña de restablecimiento con 'Iniciar sesión' y 'Dirección de correo electrónico'.

Si el usuario escribe incorrectamente la dirección de correo electrónico o de inicio de sesión, simplemente muestra un mensaje ' Incorrect Info , check Login/email' .

No digas si el inicio de sesión o el correo electrónico son incorrectos, por lo que no caes en el primer problema de seguridad.

    
respondido por el Stephenloky 22.01.2014 - 20:59
fuente

Lea otras preguntas en las etiquetas