Agregar un nuevo usuario: contraseña temporal de correo electrónico vs enlace con token

3

Soy un desarrollador que estoy trabajando en un sitio web por primera vez y tengo una pregunta sobre la activación de un nuevo usuario.

La forma en que nuestro sitio está configurado ahora es cuando un usuario crea una nueva cuenta y recibe una contraseña temporal por correo electrónico. La contraseña temporal se hash y luego se guarda en nuestra base de datos. El usuario inicia sesión y se les dice que restablezcan su contraseña (si mantenemos este método forzaremos un restablecimiento de la contraseña).

Mi preocupación es que nunca he visto un sitio que haga esto. Para los sitios nuevos siempre recibo correos electrónicos con enlaces que verifican mi cuenta y luego puedo iniciar sesión.

Mi pregunta es cuál de estos métodos es más seguro y por qué?

    
pregunta Sentient 21.01.2015 - 20:57
fuente

2 respuestas

3

No es terriblemente común, pero tampoco es terriblemente raro. Es simplemente una forma de validar el correo electrónico sin tener que almacenar información de estado adicional.

Entonces, es simple, lo que tiene algunos beneficios, ya que la complejidad es el enemigo de la seguridad, por lo que las soluciones simples suelen ser mejores para la seguridad que las alternativas más complejas que hacen lo mismo.

SIN EMBARGO ... sugeriría que, en este caso, no solo es mejor, sino que de hecho es menos seguro y menos que ideal.

La razón principal es que siempre es una mala práctica enviar contraseñas por correo electrónico. Incluso los temporales. Es mucho mejor enviar un enlace que permita al usuario establecer una contraseña siguiendo el enlace. Esto funciona para la validación de correo electrónico, para cuentas creadas de forma asíncrona (por un administrador, o un trabajo por lotes, por ejemplo) y restablece la contraseña cuando un usuario ha olvidado su contraseña. Esto requiere un poco de estado adicional como lo mencioné anteriormente (el enlace debe ser único, y debe recordar el valor para cuando el usuario haga clic en el enlace y regrese), pero esto no es todo. No solo significa que la contraseña nunca debe enviarse al éter en texto sin formato, sino que también le da un solo punto (el token) para que caduque si no se ha utilizado en un tiempo razonable, y para verificar que no se use. -utilizar. (Un solo token debería funcionar solo una vez.)

Entonces, el enlace es decididamente más seguro. Los tokens son más fáciles de proteger con controles de seguridad que las contraseñas, y nunca debe enviar contraseñas en texto sin formato, lo que implica abuso y mal uso.

    
respondido por el Xander 21.01.2015 - 22:06
fuente
3

Si el usuario final es el que inicia la configuración de la cuenta y proporciona una contraseña, el uso de una contraseña temporal que tendrán que cambiar la primera vez que inicie sesión no ofrece beneficios. Y solo servirá para molestar al usuario.

Las contraseñas temporales son útiles cuando alguien más inicia la configuración de la cuenta. Como ejemplo, un nuevo empleado que ingresa a una empresa generalmente recibe una cuenta de dominio. No querrá permitir que los usuarios se registren automáticamente y creen cualquier cuenta de dominio que quieran. Por lo general, les proporcionaría una contraseña temporal para poder controlar las cuentas que se crean y para asegurarse de que solo ellas podrían configurar esa cuenta. Con una contraseña temporal, el usuario final y el administrador saben que nadie ha usado esa cuenta si, al autenticarse, deben cambiar la contraseña la primera vez. Si el usuario prueba su contraseña y es incorrecta, tiene la sospecha de que la persona que adquirió la contraseña temporal pudo haberla comprometido o utilizado y puede investigar si es necesario.

La opción de contraseña no temporal es la más segura. Porque lleva a cualquier persona que no sea el usuario final que conoce la contraseña fuera de la ecuación.

    
respondido por el JasonS 21.01.2015 - 21:44
fuente

Lea otras preguntas en las etiquetas