¿Debe seguir la verificación del correo electrónico con un inicio de sesión basado en contraseña? ¿Por qué?

10

[Este es un duplicado, considerado fuera de tema en enlace

Un proceso típico de creación de cuentas parece ser:

  1. Proporcione la dirección de correo electrónico y establezca una contraseña
  2. Reciba un correo electrónico de confirmación con un enlace y / o un token con hash
  3. Haga clic en el enlace para verificar y / o ingresar el token en el sitio

Sin embargo, una vez leí en algún lugar (y no puedo encontrar esto ahora, razón por la cual pido) que un proceso mejor modificaría el Paso 3 para que el usuario también inicie sesión con la contraseña proporcionada en el Paso 1. Creo que la razón fue que esta precaución adicional garantiza que la persona que verifica la dirección de correo electrónico sea la misma que creó la cuenta.

Pregunta: ¿Tiene sentido la explicación anterior, y debo implementar la verificación de correo electrónico al solicitar un inicio de sesión basado en contraseña?

Para mí tiene sentido, y al menos no parece perjudicial, aparte de hacer que la experiencia del usuario sea un poco más incómoda. Pero veo muchos servicios en línea que no requieren esto, y me pregunto por qué.

Por ejemplo, aquí está el escenario que me preocupa. ¿Qué pasaría si la persona # 1 creara inicialmente la cuenta pero especificara la dirección de correo electrónico incorrecta (de forma maliciosa o accidental) y se la enviara a la persona # 2? Si la persona # 2 es ingenua, puede verificar esa dirección de correo electrónico simplemente haciendo clic en el enlace ... y luego olvidarlo. Entonces la persona # 1 todavía podría iniciar sesión con la contraseña. Supongamos que la persona # 1 hace todo tipo de cosas malas en esa cuenta. ¿La persona # 2 sería responsable?

Creo que una solución alternativa podría ser pedirle a los nuevos usuarios que primero especifiquen solo una dirección de correo electrónico, luego confirmar que con un token hash y luego pedirles que establezcan una contraseña. Pero tampoco veo muchos servicios en línea que lo hagan de esta manera.

    
pregunta Anonymous 25.10.2014 - 19:47
fuente

4 respuestas

7

Sin duda, debe autenticar al usuario que hace clic en el enlace. De lo contrario, como usted dice, alguien podría confirmar inadvertidamente una dirección de correo electrónico. Sin embargo, generalmente es posible autenticar al usuario de forma transparente, por lo que no es necesario que ingresen su contraseña.

La forma en que lo logramos es mediante una cookie de sesión. Durante el proceso de registro, el nuevo usuario recibe una cookie de sesión. Cuando hacen clic en el enlace de confirmación en el correo electrónico, normalmente usarán el mismo navegador, por lo que se adjuntará la cookie de sesión. El sitio web puede verificar la identidad del usuario utilizando esa cookie.

    
respondido por el paj28 27.10.2014 - 11:37
fuente
5
  

Creo que una solución alternativa podría ser pedirle a los nuevos usuarios que primero especifiquen solo una dirección de correo electrónico, luego confirmar que con un token hash y luego pedirles que establezcan una contraseña. Pero tampoco veo muchos servicios en línea que lo hagan de esta manera.

Esta es la manera más segura, ya que protege contra enumeración de usuarios . Si la dirección de correo electrónico ya está registrada, el usuario obtiene un enlace para restablecer la contraseña, de lo contrario, obtendrá un enlace para continuar con el proceso de registro. Cualquiera que no tenga acceso a esa dirección de correo electrónico no puede determinar si existe una cuenta con esa dirección de correo electrónico o no.

El proceso de registro luego le pide al usuario que establezca una contraseña y esto protege contra alguien que configura y usa una cuenta asociada a la dirección de correo electrónico de otra persona a la que no tiene acceso.

En primer lugar, no se usa mucho ya que requiere más tiempo para implementarse, requiere conocer el problema de la enumeración de usuarios y, en algunos sistemas, la enumeración de usuarios es un riesgo aceptable, ya que las cuentas en el servicio se consideran, en general, públicas. (p. ej., correo web, ya que no puede enviar un mensaje a alguien sin conocer su ID de usuario efectiva, y con frecuencia puede verificar si existe una cuenta enviándole un correo electrónico).

Otra forma de hacer esto es la forma en que estás describiendo. es decir, solicite al usuario que ingrese su contraseña cuando siga el enlace de confirmación del correo electrónico. Sin embargo, hay un acceso directo disponible aquí: si el usuario confirma el enlace de la misma sesión que se usó para registrarse, puede usar esto en lugar de volver a ingresar la contraseña. Sin embargo, tenga mucho cuidado en este caso, ya que esto no conduce a un fijación de sesión . Debe invalidar el token de sesión y generar uno nuevo cuando el usuario vaya al primer paso de su proceso de registro. Esto asegurará que si la sesión se fijó, el atacante no podrá conducir la sesión iniciada. Si desea la seguridad adicional de que vuelvan a ingresar su contraseña, debe actualizar el token de la sesión en el primer paso y una vez que se siga el enlace de confirmación.

    
respondido por el SilverlightFox 27.10.2014 - 11:30
fuente
0

No desea autenticar el enlace de una sola vez del correo electrónico:

  • Ya está autenticado en virtud de que quien tenga acceso al buzón "posee" la cuenta completa. Así es como funciona el restablecimiento de contraseña.
  • El punto sobre "alguien podría confirmar inadvertidamente una dirección de correo electrónico" es discutible ya que el deseo del enlace de una sola vez en el correo electrónico es verificar que el propietario del buzón es el propietario de la cuenta. Incluso si mi madre hace clic en el enlace mientras mi computadora portátil está abierta, desbloqueada e iniciada sesión en mi gmail, está bien. Es verificar que el buzón es el propietario de la cuenta.
  • Es un pobre UX.

La única razón por la que su escenario Persona # 1 / Persona # 2 crea un problema es porque la Persona # 1 podría usar la cuenta antes de verificar la propiedad del buzón. Si impidió eso, la Persona # 1 nunca recibiría el correo electrónico y, por lo tanto, no haría todas esas "cosas malas".

    
respondido por el cottsak 19.10.2016 - 05:22
fuente
0

Esta es una pregunta antigua, pero recientemente enfrenté el mismo escenario y quiero compartir con mi pensamiento. Lo que hice no es que los usuarios inicien sesión y verifiquen directamente el correo electrónico de los usuarios. La respuesta es la siguiente:

  • El autor mencionó un caso en el que un usuario ingresa una dirección de correo electrónico incorrecta, pero el propietario del correo electrónico acepta esto por alguna razón. Después de verificar el correo electrónico, el usuario original puede hacer muchos tipos de cosas malas. Desde mi punto de vista, la dirección de correo electrónico de los usuarios no debe compartirse en su aplicación. Necesitas ocultar el correo electrónico de los usuarios y no publicarlo. En segundo lugar, el correo electrónico generalmente se usa para restablecer la contraseña, verificar la transacción, etc. Si ese usuario escribe intencionalmente una dirección de correo electrónico incorrecta, no veo ningún beneficio que pueda obtener de esta acción.

  • Muchas aplicaciones no permiten a los usuarios iniciar sesión sin verificar la dirección de correo electrónico.

  • Desde el punto de vista de UX, nos gustaría proporcionar una función de clic con un solo botón. En otras palabras, queremos reducir los pasos que deben realizar los usuarios para verificar la dirección de correo electrónico. Hacer clic en el enlace de ese correo electrónico es probablemente la forma más fácil de hacerlo.

  • Hay muchas otras formas de verificación. El correo electrónico es sólo uno de ellos. Otros son mensajes SMS, autenticación de dos factores, carga de documentos de identidad, etc. Por lo tanto, el correo electrónico no es lo más importante en una aplicación.

respondido por el Zhao Yi 08.01.2018 - 12:00
fuente

Lea otras preguntas en las etiquetas