2009-08-20 26 views
11

Un grupo de mi empresa está implementando una API REST de inicio de sesión único para nuestras aplicaciones. Este servicio de autenticación tiene una función de restablecimiento de contraseña. La aplicación envía el nombre de usuario a la función de reinicio. Si ese nombre de usuario está asociado con una dirección de correo electrónico, se envía un correo electrónico a esa dirección con una contraseña temporal.Restablecimiento de contraseña enviando contraseñas temporales por correo electrónico

El otro enfoque parece ser sitios que envían un correo electrónico a un enlace temporal y seguro que presenta una página para que el usuario ingrese una nueva contraseña. Esta página solo existe por un corto período de tiempo.

Sé que el correo electrónico no es un protocolo seguro, por lo que las personas pueden oler el tráfico y recuperar la contraseña temporal o el enlace temporal.

¿Hay razones de seguridad importantes para preferir un método sobre el otro? ¿Hay alguna otra manera más segura de hacer esto?

Respuesta

9

En ambos casos, la información privada (contraseña temporal o enlace de restablecimiento) se transmite por el mismo medio. Desde este punto de vista, no hay diferencia en seguridad. Sin embargo, el enlace de reinicio tiene algunas ventajas: le obliga al usuario a elegir una nueva contraseña. Tan pronto como lo haga, el enlace será nulo y no podrá ser abusado. Las contraseñas temporales, por el contrario, tienden a no ser tan temporales como desee. Incluso si obliga al usuario a elegir una nueva contraseña en el próximo inicio de sesión, es probable que ingrese la temporal otra vez.

Además, puede registrar la dirección IP de quien utiliza el enlace de reinicio, así que tenga algo que entregar a las autoridades si es necesario.

+2

Es bastante trivial detectar a alguien que usa una contraseña temporal y obligarlo a cambiarla antes de continuar. – ceejayoz

4

No hay realmente una mejor manera para el público en general. Si se trata de una aplicación interna, es concebible que envíe correos electrónicos cifrados que los usuarios deben decodificar con PGP, pero que nunca volarán para usuarios externos a menos que tenga un producto nicho de gran valor.

Si el correo electrónico está fuera, tendría que usar algo así como preguntas de seguridad, pero tienen sus propios problemas (más significativos, en mi opinión). Los problemas incluyen:

  • Guessable. Preguntas como "color favorito" son bastante susceptibles de adivinar opciones comunes como "rojo", "azul", "verde", etc.
  • Findable. Muchos son elementos de un perfil de Facebook/MySpace/Twitter/Flickr o de lo contrario Googleable.
  • Forgettable. Seleccioné el "lugar de vacaciones favorito" y luego, uno o dos años después, no pude recordar lo que había elegido.
  • Difícil de analizar. Si escribo "St. Paul" como el nombre de una ciudad, pero luego vuelvo con "Saint Paul", ¿sería aceptado?
+0

¿Podría explicar sus problemas con las preguntas de seguridad? – andrewWinn

+3

preguntas de seguridad o pregunte algo que ya está disponible en el perfil de Facebook de un usuario o pregunte algo que el usuario no recuerde. – Patrick

+0

Patrick lo consigue en uno. A menudo se pueden adivinar (elegir rojo, azul para obtener el "color favorito" para obtener un buen porcentaje de cuentas), encontrar (Google para el perfil de Facebook/Twitter/etc. De alguien) u olvidable (el "lugar de vacaciones favorito" podría cambiar - ¡Ahora tengo * dos * contraseñas olvidadas!). – ceejayoz

0

Existen muchas maneras más seguras de restablecer una contraseña. Todos ellos son muy incómodos para sus usuarios y costosos de mantener. Hacer que cada usuario le envíe una muestra de ADN y las huellas dactilares y luego solicitar que se presenten para ser verificadas debería ayudar con su seguridad. Me sorprende que su organización ultrasecreta le permita obtener consejos de seguridad sobre Stackoverflow. Bromas aparte, ¿qué tan segura debe ser su aplicación? ¿Realmente los atacantes estarán restableciendo las contraseñas de sus usuarios y luego accediendo a sus correos electrónicos?

xkcd siempre dice que es mejor http://xkcd.com/538/

9

¿Hay razones de seguridad importantes para preferir un método sobre el otro?

Sí. Si usa la ruta de contraseña temporal, cualquiera puede molestar a un usuario al presionar constantemente el enlace de restablecimiento y poner la dirección de correo electrónico de ese usuario. Si usa enlaces de restablecimiento de contraseña, el usuario puede ignorarlos y eliminar los correos electrónicos.

+0

¿No puede el usuario simplemente ignorar los correos electrónicos de contraseñas temporales también? ¿O pensabas que la ruta de la contraseña temporal también bloqueaba al usuario? – Patrick

+1

Esperaría que la contraseña válida anterior fuera nula si se enviara una nueva contraseña. – Nifle

+0

Sí, tomé "contraseña temporal" para indicar "su contraseña anterior ahora no es válida, aquí hay una nueva". –

Cuestiones relacionadas