Enviando la contraseña generada por el servidor por correo electrónico

4

Estoy implementando un sistema donde nuestros usuarios necesitan ingresar una contraseña especial (permanente) para autorizar una transacción.

La contraseña es independiente de sus credenciales de inicio de sesión, y solo pueden ingresar esta contraseña de autenticación si están registradas.

Queremos que el servidor genere y les envíe la contraseña por correo electrónico, y almacenaremos un hash de la contraseña en el servidor. A petición del usuario, podremos actualizar esta contraseña.

He mirado otras preguntas, como Está enviando la contraseña ¿Es seguro el correo electrónico del usuario? , y parece que el problema no es el envío de contraseñas, sino el almacenamiento de contraseñas de texto sin formato.

¿Hay algo de lo que deba preocuparme con este proceso?

    
pregunta Stuart Kemp 21.04.2016 - 13:20
fuente

4 respuestas

4

Sí, varias cosas. Aunque desafortunadamente este es un procedimiento estándar, es una mala idea:

  • Esas contraseñas deben ser invalidadas después de un corto período de tiempo (y especialmente si los correos electrónicos no están cifrados de extremo a extremo).

    Hay muchas posibilidades de que otra persona tenga esas contraseñas también, porque Los correos electrónicos son postales en lugar de cartas .

    Si las contraseñas se invalidan tan rápido, es posible que la mayoría de los usuarios no sean lo suficientemente rápidos para ingresarlas.

  • Si su sitio web no es TLS (o algo va hacia el sur, a través de XSS o malware), también es muy probable que un evesdropper pueda secuestrar la sesión y también acceder a la contraseña (si se envía sin descifrar).

    Esto es especialmente cierto en el caso de WiFi gratuito, sin cifrar, ya que muchos usuarios verifican sus correos electrónicos sin cifrar, exponiendo la contraseña de inmediato. Un enfoque automatizado siempre sería más rápido que el usuario.

Un mejor enfoque sería utilizar un TOTP con un segundo factor (como una aplicación de teléfono inteligente) o un token de seguridad. Existen aplicaciones para todos los teléfonos inteligentes principales ( Google Authenticator es una aplicación importante, pero otras aplicaciones también se pueden usar) y tokens de seguridad están a punto de comprarse.

Si esa no es una opción, intente recurrir a otro canal de comunicación fuera de banda como SMS o llamadas de voz automáticas leyendo la contraseña en voz alta e invalidándola 10 segundos después.

Nota al margen:

  

y parece que el problema no es el envío de contraseñas, sino el almacenamiento de contraseñas de texto sin formato.

Eso no es correcto, hay diferentes problemas y riesgos con ambos.

    
respondido por el Tobi Nary 21.04.2016 - 13:34
fuente
1
  

parece que el problema no es con el envío de contraseñas, sino con el almacenamiento de contraseñas de texto simple.

No, el problema es de hecho con el envío de contraseñas.

Almacenarlos en texto simple es un problema diferente (los dos pueden ocurrir al mismo tiempo, por supuesto).

Si envía contraseñas por correo electrónico, el acceso al correo electrónico de los usuarios significa acceso a la contraseña (por ejemplo, se obtiene a través de la fuerza bruta, si un usuario no se desconectó, etc.). También significa que cualquier persona entre el cliente de correo electrónico de los usuarios y su servidor de correo podrán acceder a la contraseña.

Es por eso que el enfoque recomendado es un token de una sola vez. El acceso al correo electrónico aún implica el acceso al token, pero es algo que se puede registrar y el usuario puede ser informado al respecto, lo que mitiga los riesgos.

Dependiendo de su situación específica, debe decidir si los riesgos de exponer una contraseña secundaria son lo suficientemente altos como para repensar su enfoque, o si está dispuesto a asumir este riesgo.

    
respondido por el tim 21.04.2016 - 13:33
fuente
0

¿Se trata de una contraseña de uso único conectada solo con una transacción en particular? Si es así, entonces la solución es bastante segura (y es similar a la solución utilizada por muchos bancos: el uso de código PIN de un solo uso enviado a través de un mensaje de texto (SMS) para autorizar transacciones).

    
respondido por el Jakub 21.04.2016 - 13:28
fuente
0

Enviar una contraseña por correo electrónico es no considerado como seguro.

Hay varios problemas con el envío de contraseñas por correo electrónico:

  • El correo electrónico viaja en texto sin formato a través de Internet. Como resultado, un hombre en el medio podría interceptar el correo electrónico que contiene la contraseña. (Un ataque MitM es un hilo muy real, aún más con la amplia prevalencia de puntos wifi públicos).
  • Es probable que el correo electrónico esté almacenado (durante mucho tiempo) en la bandeja de entrada del usuario. Por lo tanto, hay una copia de texto simple de la contraseña, que se puede recuperar, que se puede ver para cualquier persona que pueda tener acceso a la bandeja de entrada de los usuarios (por ejemplo, un compañero de trabajo que se encuentra en una estación de trabajo desatendida)

Si solo les envías una contraseña de "una sola vez" por correo electrónico, la práctica se considera lo suficientemente segura.

(Aparte de este problema, debería, por supuesto, nunca almacenar la contraseña en texto sin formato)

    
respondido por el Jacco 21.04.2016 - 13:32
fuente

Lea otras preguntas en las etiquetas