2009-09-20 15 views

Respuesta

1

Es más seguro restablecer la contraseña, ya que un tercero podría interceptar la contraseña enviada.

Editar: Por reinicio, supongo que te refieres al patrón común de enviar al usuario un token que permite al usuario definir una nueva contraseña. Obviamente, si solo genera una nueva contraseña y la envía por correo, es tan insegura como simplemente enviar la contraseña original. El token solo debe poder usarse una vez, de lo contrario será tan bueno como una contraseña.

único riesgo es que un tercero intercepta el token y el cambio de la contraseña antes de el usuario lo hace. Este es un riesgo menor que enviar la contraseña, ya que una contraseña interceptada será útil siempre que la contraseña esté en uso, mientras que el token solo será útil una vez, y que descubrirá si alguien ha usado el token.

Tenga en cuenta que el riesgo más alto probablemente no sea que la gente escuche el tráfico de correo electrónico, sino que alguien revise su correo más tarde o piratee su cuenta de correo web, por lo que es realmente malo tener contraseñas válidas en su buzón.

+2

Entonces, ¿cómo obtendrá el usuario la contraseña de reinicio, dado que el correo es inseguro? :) – Zed

+0

@Zed: envíe un enlace al usuario que contenga un valor aleatorio de un solo uso (que recuerde) para que cuando hagan clic en él pueda restablecer su contraseña y enviarles una nueva (a través de https). –

+1

@Greg: ese es el punto. No hay diferencia entre enviar por correo una "contraseña aleatoria" o un "valor aleatorio que el usuario puede usar para ...". Los usa para identificar _temporariamente_ al usuario. Un tercero puede manipular cualquiera de ellos. – Zed

40

Enviarles la contraseña perdida implica que los mantiene en texto plano o encriptados en un cifrado bidireccional que no es seguro.

me gustaría sugerir siguiente mecanismo de Wordpress para resetear la contraseña:

  1. enviar un enlace con la confirmación de restablecimiento de contraseñas
  2. seguir el enlace de confirmación a la página lo que generaría contraseña aleatoria y enviarlo para el usuario
  3. Deje que el usuario inicie sesión con la nueva contraseña y cambie a algo mejor recordando.
+0

Estaba pensando en enviar una contraseña de reinicio, aunque parece más fácil para el usuario enviarles allí la contraseña anterior. –

+2

En todo caso, es una cuestión de confianza: ¿realmente desea que los administradores de cada sitio que use conozcan las contraseñas que elija? Claro, idealmente las personas usarían contraseñas diferentes para cada sitio, pero pocas lo hacen, es demasiado complicado. – Amber

+6

Solo agregue un poco a la respuesta de Eimantas. Por seguridad, el servidor nunca debe guardar la contraseña de un usuario en texto plano. Debería guardar la contraseña cifrada de una vía. Cuando un usuario inicia sesión, el cliente debe cifrar la contraseña con javescript y enviar la cadena cifrada al servidor. Esto es un poco como funciona el inicio de sesión de Unix. Con frecuencia, un usuario usa la misma contraseña para diferentes sitios web. Si lo mantiene en texto plano, obtendrá acceso a todos ellos. Como usuario, me preocuparía mucho por eso. – user172818

17

No debe poder devolver la contraseña en primer lugar. Su mejor oportunidad es generar una contraseña aleatoria de uso único y enviarla a la dirección de correo electrónico registrada del usuario.

Puede implementar preguntas de seguridad (como "el nombre de su primer perro") y otro misticismo, pero creo que los usuarios tienden a olvidar las respuestas a estas incluso más que sus contraseñas, volviendo al punto de partida.

+1

Si utiliza (en) preguntas de seguridad, NO DEBEN ser tratadas como una contraseña de respaldo, sino solo como guardianes de acceso a un mecanismo de restablecimiento de contraseña.De lo contrario, se rompe su cuenta de correo electrónico cuando alguien busca la escuela secundaria a la que asistió y la prueba como una respuesta para "¿Dónde conoció a su cónyuge?" (como le pasó a Sarah Palin el año pasado). –

+0

Pero es importante enviar una contraseña aleatoria solo después de un correo electrónico de confirmación inicial. Si no ve esto, una persona malintencionada puede hacer clic en el botón Solicitar contraseña, ingrese su dirección de correo electrónico y deje su cuenta inaccesible. Si desea iniciar sesión con su contraseña original sin consultar primero el correo electrónico, se produce un error de inicio de sesión. Esta es una mala experiencia de usuario y molesta. Esta técnica utilizada por un script de bot puede realizar una denegación de servicio para cada dirección de correo electrónico conocida utilizando el servicio. – DEAD10CC

7

Muchos usuarios usan la misma contraseña en muchos sitios web. Para respetar la privacidad de las personas, se recomienda almacenar siempre las contraseñas unidireccionales cifradas con funciones hash como SHA-256 o MD5. Pero no debe usarlos sin sal adicional, ya que los ataques de diccionario se pueden realizar simplemente con esas contraseñas. El cuidado de la privacidad de los usuarios forma la base de una relación de confianza entre usted y sus clientes.

También recomiendo el mecanismo de restablecimiento de contraseña mencionado por Eimantes. El mensaje de correo electrónico de confirmación es la tarea principal en este proceso. Siempre permita que el usuario confirme su solicitud de restablecimiento de contraseña para evitar que las solicitudes falsas conduzcan a una cuenta inaccesible.

En lugar de calcular una contraseña aleatoria, puede reenviar al usuario a una página donde puede ingresar una nueva contraseña.

Además, tenga en cuenta que el envío de contraseñas a través de http sin ssl es muy inseguro, especialmente en redes públicas como los puntos de acceso de wlan. Eche un vistazo a los métodos de autenticación de mensajes como HMAC en combinación con Diffie-Hellman-Key-Exchange. O al menos use una función hash + salt adicional durante el inicio de sesión.

+2

SHA-256 y MD5 son demasiado rápidos para considerarse seguros. Mira BCrypt o PBKDF2. –

Cuestiones relacionadas