¿Contraseña olvidada o enlace de restablecimiento, que es más seguro enviar por correo electrónico?

22

Originalmente publiqué esto como respuesta aquí en este hilo pero no obtuve mucha información al respecto, y ahora tengo curiosidad por saber lo que otros piensan que es el mejor enfoque, o si hay alguna diferencia entre los dos enfoques.

El punto original era si era más seguro enviar un enlace para restablecer la contraseña cuando un usuario olvida su contraseña a un sitio web, o si enviar la contraseña original sin cifrar en un correo electrónico.

Ahora bien, no es correcto omitir y encriptar una contraseña porque cuando la base de datos finalmente es robada del sitio web, el atacante tendrá todas las contraseñas claras como día. OK bien, entiendo eso.

Pero si ignoramos la posibilidad de que la base de datos sea robada y solo miramos al usuario olvidando su contraseña y siguiendo los "pasos de contraseña olvidados"; ¿Es más, lo mismo o menos seguro enviar un enlace de restablecimiento a través de una contraseña de texto sin formato en un correo electrónico?

Mi pensamiento es que es lo mismo. Porque, si un atacante tiene acceso a su correo electrónico por cualquier medio (conoce los detalles de inicio de sesión de su correo electrónico o está indagando el tráfico en alguna parte), por lo tanto, tiene acceso a la contraseña de texto simple que se envía o al enlace de restablecimiento, incluso si es un tiempo limitado. enlace.

El atacante podría restablecer su contraseña incluso antes de saber que tiene un correo electrónico.

¿Mi pensamiento aquí es defectuoso?

    
pregunta fwgx 23.03.2012 - 22:46
fuente

7 respuestas

39

Es mucho más simple obtener acceso al corpus de correo electrónico existente que obtener acceso a la transmisión entrante. Por ejemplo, obtener un par de minutos de acceso al sistema de alguien permite una búsqueda fácil a través de su correo electrónico. Por lo tanto, para el caso en que un atacante tenga acceso a correo antiguo, pero no a la corriente de correo nuevo entrante:

Confía en que el usuario cambie su contraseña después de recibirla (es poco probable, dado que le ha dicho qué es) o elimina (de forma permanente, no archivar o pasar a una carpeta de 'basura', también es poco probable ) el mensaje recordatorio.

Si esto no sucede, entonces si obtengo acceso a la cuenta de correo electrónico del usuario algún tiempo después, un enlace de restablecimiento (tiempo limitado / uso limitado, tal vez incluso limitado para que el atacante no pueda usarlo) no va a funcionar. para ser de alguna utilidad para mí, pero tener la contraseña (lo más probable es que todavía sea válida) ciertamente lo es.

Además, al enviarme la contraseña de texto sin formato, está demostrando que la tiene almacenada en un lugar accesible. En la mayoría de los casos, esto no es necesario, ya que no es necesario cifrar la contraseña (y sal / pimienta), solo es necesario hacer un hash. Si está encriptado, entonces cualquier persona con acceso a la base de datos y la clave de descifrado (por ejemplo, probablemente la mayoría del personal, o cualquier persona que robe el código junto con la base de datos) puede obtener la contraseña de texto sin formato. Si está hash, deberías obtenerlo antes de que tenga lugar el hash (por ejemplo, durante una sesión de inicio de sesión).

Además, aunque la gente no debería, es muy común usar la misma contraseña (o contraseñas muy similares) en varios sitios. Eso significa que, en lugar de proporcionar una manera de acceder a una sola cuenta, está proporcionando una manera de acceder a muchas.

En el otro caso, donde el atacante tiene acceso a todo el correo entrante (posiblemente incluso la capacidad de eliminar el correo entrante antes de que el usuario lo vea), ninguno de estos es seguro. La cuenta de correo electrónico es high-risk , porque si usted tiene ese tipo de acceso, entonces probablemente pueda ir a cada sitio con el que el usuario tenga una cuenta y generar un restablecimiento de contraseña. Para evitar esto, debe usar algo que no sea (o también) su cuenta de correo electrónico para obtener acceso, como la autenticación de dos factores.

Tenga en cuenta que incluso en este último caso, un enlace de restablecimiento sigue siendo superior: si el atacante cambia la contraseña del usuario mediante un enlace de restablecimiento, cuando el usuario intente iniciar sesión, descubrirá que algo está mal (también tarde, pero al menos lo saben). Si solo está proporcionando la contraseña, el usuario no tiene idea de que el atacante haya obtenido acceso en silencio.

    
respondido por el Tony Meyer 23.03.2012 - 23:10
fuente
22

Ok, ignorando el hecho de que las contraseñas se almacenan en texto sin formato, y sumergiéndose directamente en la pregunta: . La contraseña es una credencial que tiene una validez larga, mientras que un enlace para restablecer la contraseña puede tener un ámbito diferente:

  1. Sólo válido por un corto período de tiempo
  2. Sólo es válido desde una determinada IP
    • Preferiblemente, la misma IP desde la que se envió la solicitud de contraseña.
  3. Sólo válido dentro de la sesión del usuario
    • Cuando el usuario ingresa detalles en el formulario web para solicitar una nueva contraseña, se le entrega una cookie (iniciando una sesión). La validación de la contraseña reset-url depende de algo en esta sesión, por lo tanto, la función de validación fallará si la solicitud se realiza sin la cookie.

También se debe tener en cuenta que una contraseña antigua, que ya puede no ser válida en su sitio, puede ser muy sensible para el cliente, ya que las personas reutilizan las contraseñas en todo tipo de servicios.

Desde ese aspecto, poner contraseñas en las casillas de correo electrónico de las personas podría considerarse un poco grosero.

    
respondido por el mhswende 24.03.2012 - 21:59
fuente
9

Vale la pena agregar que si envía la contraseña de un usuario sin formato, es posible que esté enviando una contraseña que también utilizan en otros sitios, incluso si obliga al usuario a cambiar la contraseña en su sitio en el próximo inicio de sesión, lo ha hecho. No hay favores en absoluto.

    
respondido por el Tom Newton 24.03.2012 - 15:11
fuente
9

No es ético almacenar contraseñas en texto sin formato si tiene la menor preocupación por sus usuarios. Usted debe almacenar hashes seguros salados. El envío de una contraseña de texto simple puede hacer que los usuarios preocupados por la seguridad dejen de usar su servicio (aunque los usuarios preocupados por la seguridad no reutilicen las contraseñas; simplemente no les gusta admitir servicios que son tan descaradamente inconscientes de la seguridad).

En cuanto a cómo implementar un restablecimiento de contraseña; en general, para un sitio moderadamente seguro (por ejemplo, tarjeta de crédito), debe responder algunas preguntas de seguridad básicas (por ejemplo, el apellido de soltera de la madre) y verificar que tienen el control de su cuenta de correo electrónico o número de teléfono, como una forma de autenticación de dos factores. El enlace debe ser válido solo en una ventana de tiempo breve (de horas a días) y solo una vez (por ejemplo, incluye un token creado al azar que caduca después del primer uso y después de un período de tiempo).

También les notifica que la contraseña se ha restablecido (e incluso si su correo electrónico se vio comprometido, encontrarán evidencia de un atacante cuando ya no puedan iniciar sesión con su contraseña anterior). Enviar la contraseña (sin cambiarla) significa que este ataque se puede hacer sigilosamente sin que el usuario lo sepa (por ejemplo, si se eliminaron los correos electrónicos).

    
respondido por el dr jimbob 24.03.2012 - 22:36
fuente
3

Es mejor enviar un enlace para restablecer la contraseña.

Algunos sitios tienen el formulario de contraseña olvidada inmediatamente restablece la contraseña a un valor aleatorio, y se envía por correo electrónico al usuario. Esto tiene un defecto de denegación de servicio: alguien que no es el propietario de la cuenta puede hacer que se restablezca su contraseña. El enlace para restablecer la contraseña evita esto, ya que la contraseña solo se restablece una vez que el usuario hace clic en el enlace, y debe tener acceso a la dirección de correo electrónico para hacer esto.

Si desea un poco de seguridad contra un atacante que tiene acceso al correo electrónico del usuario, el enfoque habitual es tener también preguntas de seguridad. Estas son preguntas como "¿Cuál fue el primer nombre de tu mascota?" Y el momento de preguntar esto es después de que el usuario haya hecho clic en el enlace para restablecer la contraseña en el correo electrónico.

Un buen consejo aquí: enlace

    
respondido por el paj28 13.10.2013 - 16:25
fuente
2

Es mejor enviar un enlace de restablecimiento.

Además de las razones dadas por @Tony Meyer y @mhswende, la página en el enlace de restablecimiento puede requerir autenticación adicional. Muchos sitios requieren que los usuarios respondan "preguntas de seguridad" exactamente para este propósito (el antiguo estándar pre-computador es preguntar el nombre de soltera de su madre). Los sitios que tienen su número de teléfono pueden, en su página de restablecimiento de contraseña, requerir que ingrese un código que enviaron por SMS. Las instituciones financieras pueden hacer preguntas acerca de registros financieros antiguos (morgtages anteriores, etc.).

No es trivial crear un buen mecanismo de autenticación secundario, pero cualquier procedimiento de restablecimiento (o recuperación) de contraseña que no sea lo suficientemente vulnerable como para llamarlo negligente.

    
respondido por el ShadSterling 23.05.2014 - 18:52
fuente
-1

El correo electrónico de las contraseñas olvidadas significa que está almacenando la contraseña en su base de datos, ya sea en forma simple o en cifrado bidireccional. Esa no es una práctica de seguridad sugerida.

Debería almacenar una forma de contraseña críptica de una vía (que no se puede descifrar) al final de la aplicación web. Por lo tanto, incluso si su aplicación web o su servidor web se enfrentan a algún nivel de db in-security, no se filtran contraseñas de usuario en texto sin formato.

Entonces, considerando esta política, el enlace de restablecimiento es la opción adecuada e izquierda desde dos enfoques.

    
respondido por el AbhishekKr 19.04.2012 - 13:20
fuente

Lea otras preguntas en las etiquetas