Eu li muitos, muitos, muitos posts sobre como "você provavelmente está armazenando senhas erradas". Eles estão sempre se referindo ao armazenamento de senhas em um servidor no qual um usuário está efetuando login; eles basicamente reformulam conselhos onipresentes como trocadilhos, etc. etc. No entanto, nunca vi um artigo sobre práticas recomendadas para armazenar senhas em um cliente, para que ele não precise fazer login manualmente toda vez que quiserem fazer login; o recurso "lembre-se de mim".
Muitos softwares possuem esse recurso, de navegadores a programas como o Dropbox.
Li recentemente um artigo antigo sobre como o Dropbox estava armazenando um ID no seu computador, que você poderia simplesmente copiar / colar em outro computador, iniciar o Dropbox e fazer login como o dispositivo do qual o ID foi obtido; sem login, sem nada e acesso total à conta do Dropbox. Parece um design realmente estúpido, mas não consigo pensar em nenhuma maneira melhor de fazê-lo.
Não tenho certeza de como evitar o armazenamento de algo como um cookie em texto sem formatação. Se você criptografá-lo, onde você armazena a chave para descriptografá-lo?
A única maneira que vejo para não introduzir vulnerabilidades de segurança é remover o recurso de login automático e fazer com que o usuário digite sua senha toda vez que quiser usar um serviço, mas isso é um esforço de usabilidade e os usuários ficam estragados ao esperar que não precisem fazer isso.
O que posso ler sobre o armazenamento local de credenciais com segurança para implementar o recurso de login automático? Se os princípios são simples demais para um artigo inteiro, quais são eles? O software em questão não deve depender de recursos não presentes em todas as plataformas (como o "chaveiro" que algumas distribuições Linux têm).