¿Por qué no enviar una contraseña de recuperación de texto simple? [duplicar]

4

Parece que plaintextoffenders.com ve el envío de una contraseña de recuperación de texto sin formato como incorrecta. En su lugar, un enlace para establecer una contraseña es mejor. Pero ¿cuál es la diferencia? Si un usuario sigue un enlace y establece una contraseña, o si obtiene una contraseña, inicia sesión y la cambia, el peligro parece ser el mismo. Si alguien intercepta el correo electrónico entre seguir el enlace o iniciar sesión y cambiar la contraseña, ambos pueden hacerse pasar por el usuario.

Para ser claros, me refiero a una nueva contraseña temporal. Solo los hashes de contraseña (PBKDF2, scrypt, ...) se almacenan en el servidor.

EDIT

Ya que me preguntan por qué creo que los usuarios de texto sin formato incluyen nuevas contraseñas, eche un vistazo. Actualmente, 5th , 6th , 7th , y 8th son contraseñas explícitamente nuevas.

    
pregunta ispiro 16.07.2018 - 20:15
fuente

2 respuestas

4
  

Si un usuario sigue un enlace y establece una contraseña, o si obtiene una contraseña, inicia sesión y la cambia, el peligro parece ser el mismo.

Basándome en todas las publicaciones que he visto, creo que el problema es "y lo cambia". Ninguno de los correos electrónicos que he visto dan ninguna indicación de que la contraseña sea temporal y deba cambiarse. Sin querer molestarme en crear un montón de cuentas, sería conservador y asumiría que, si el correo electrónico no dice que necesitará cambiar la contraseña, el sitio no lo obligará a cambiarla después de iniciar sesión.

Tienes razón en que no hay una diferencia real entre una contraseña temporal y un enlace de restablecimiento siempre que la contraseña tenga suficiente entropía . Como se mencionó en los comentarios, si la contraseña es demasiado corta y el usuario espera un tiempo antes de iniciar sesión, podría ser susceptible de fuerza bruta. Como los campos de contraseña deberían permitir el pegado de todos modos, una contraseña temporal alfanumérica de 20 caracteres sería perfectamente adecuada. Tanto el enlace de restablecimiento como la contraseña temporal podrían implementarse de manera casi idéntica, en realidad es solo la diferencia entre un POST y un GET.

    
respondido por el AndrolGenhald 16.07.2018 - 21:05
fuente
2

La razón por la que enviar a los usuarios sus actuales contraseñas de texto sin formato es mala se reduce a "las contraseñas deben almacenarse de tal manera que nadie en el lado del servidor deba ser capaz de recuperar la contraseña de texto simple de un usuario una vez que la haya ingresado "(eso también significa root). La razón por la que las contraseñas están encriptadas en primer lugar es precisamente para que la única persona que pueda saber la contraseña sea el usuario que la ingresó. Esta es la única forma de garantizar que el usuario no pueda repudiar ninguna acción tomada por el hecho de que otra persona conozca su contraseña.

(Para obtener un poco más de información histórica sobre cómo funciona el hashing de contraseñas y por qué es importante, vea mi respuesta a ¿Por qué el hash MD5 comienza desde $ 1 $ y SHA-512 desde $ 6 $? Isn ' ¿Es la debilidad en sí misma? )

El envío a los usuarios de una nueva contraseñas temporales de contraseñas que se emiten correctamente, pero eso crea al menos otros dos problemas mencionados por Troy Hunt en su blog enlace (mencionado en el ítem 9 de las Preguntas Frecuentes del Desarrollador en el sitio de plaintextoffenders: enlace , que se mencionó en los comentarios sobre la pregunta en sí):

  1. el usuario queda bloqueado instantáneamente de su cuenta con su contraseña normal, que si no fuera la que esperaba restablecer su contraseña crea un ataque inmediato de Denegación de Servicio (DOS), y
  2. la página de inicio de sesión donde el sitio espera recibir la contraseña temporal no tiene forma de saber que es temporal, y si no se implementa correctamente, esto puede hacer que la contraseña temporal persista más de lo aceptable en este contexto.

Para evitar estos problemas, la página de inicio para restablecer la contraseña es independiente del proceso de inicio de sesión normal, tiene un valor secreto que se puede aplicar con una URL https: y no invalida la contraseña olvidada hasta que se haya identificado la propiedad de la cuenta. restablecido por el intercambio de este valor con el usuario por correo electrónico.

    
respondido por el Mike McManus 16.07.2018 - 22:58
fuente

Lea otras preguntas en las etiquetas