Actualmente tenemos lo que creo que es un esquema bastante estándar para tratar con restablecimientos de contraseñas. Nuestros enlaces de restablecimiento son enlaces de un solo uso: caducan inmediatamente después de haberlos visitado, incluso si el usuario no restablece su contraseña.
Sin embargo, nuestros clientes son predominantemente (99%) empresas con un filtro de spam agresivo. En particular, algunos de nuestros principales clientes (distritos escolares) tienen filtros de correo no deseado que realizan el escaneo de enlaces. Visitan [hasta N] enlaces en un correo electrónico como parte de sus algoritmos. Cuando los usuarios solicitan un restablecimiento de la contraseña, la visita del filtro de correo no deseado "caduca" antes de que el usuario los vea.
¿Existen alternativas al enlace de un solo uso que sean igualmente seguras? ¿O son lo suficientemente seguros como para que caigan dentro del ámbito de las prácticas aceptables?
También tenemos que considerar la usabilidad. Nuestros clientes generalmente son tan poco técnicos como usted puede obtener. Así que, idealmente, el procedimiento de restablecimiento de la contraseña no será mucho más complicado para el usuario.
Esto es lo que hemos pensado hasta ahora:
- Almacene el token de restablecimiento en la sesión. El enlace permanecerá activo mientras la sesión original del navegador esté abierta o la contraseña no haya sido realmente restablecida. Puede complicar el proceso para los usuarios que usan dos dispositivos diferentes para su correo electrónico y navegación (por ejemplo, correo electrónico en el teléfono + computadora portátil para la navegación).
- Caduca el enlace después de N minutos. Creo que he visto esto. Pero, no sé qué límite de tiempo es un equilibrio aceptable entre utilizable y seguro.
- Vence el enlace solo después de que se haya enviado el formulario. Algunos usuarios pueden visitar el enlace, ponerlo en el historial del navegador, pero nunca enviar el formulario. ¿Es ese un nivel de riesgo aceptable?