He leído muchas, muchas, muchas publicaciones sobre cómo "probablemente estás almacenando contraseñas mal". Siempre se refieren al almacenamiento de contraseñas en un servidor en el que un usuario inicia sesión; básicamente repiten (juegos de palabras) consejos omnipresentes como asegurarse de saltear las contraseñas, etc. Sin embargo, nunca he visto un artículo sobre las mejores prácticas para almacenar contraseñas en un cliente para que el cliente no tenga que iniciar sesión manualmente cada vez que desean iniciar sesión; la función "recordarme".
Muchas piezas de software tienen esta característica, desde navegadores hasta programas como Dropbox.
Hace poco leí un artículo antiguo sobre cómo Dropbox estaba almacenando una ID en su computadora que podía copiar / pegar en otra computadora e iniciar Dropbox e iniciar sesión como el dispositivo del que obtuvo la ID; sin inicio de sesión, nada y acceso completo a la cuenta de Dropbox. Esto parece un diseño realmente estúpido, pero no puedo pensar en una mejor manera de hacerlo.
Ni siquiera estoy seguro de cómo evitar almacenar algo como una cookie en texto sin formato. Si lo encriptas, ¿dónde guardas la clave para descifrarlo?
La única forma en que veo que no se introducen vulnerabilidades de seguridad es eliminar la función de inicio de sesión automático y hacer que el usuario escriba su contraseña cada vez que quiera usar un servicio, pero eso es una lucha de usabilidad y los usuarios se ven obligados a esperar que no tengan que hacerlo.
¿Qué puedo leer sobre el almacenamiento local de credenciales de forma segura para implementar la función de inicio de sesión automático? Si los principios son demasiado simples para un artículo completo, ¿cuáles son? El software en cuestión no debe depender de características que no están presentes en todas las plataformas (como el "llavero" que tienen algunas distribuciones de Linux).