J'ai lu de très nombreux articles sur la façon dont "vous stockez probablement des mots de passe incorrects". Ils font toujours référence au stockage de mots de passe sur un serveur auquel un utilisateur se connecte; ils refont essentiellement (jeu de mots) des conseils omniprésents comme assurez-vous de saler les mots de passe, etc. etc. Cependant, je n'ai jamais vu un article sur les meilleures pratiques pour stocker les mots de passe sur un client afin que le client n'ait pas à se connecter manuellement chaque fois qu'ils veulent se connecter; la fonction "se souvenir de moi".
De nombreux logiciels ont cette fonctionnalité, des navigateurs aux programmes comme Dropbox.
J'ai lu récemment un ancien article sur la façon dont Dropbox stockait un ID sur votre ordinateur que vous pouviez simplement copier / coller sur un autre ordinateur et démarrer Dropbox et être connecté en tant que périphérique pour lequel vous avez obtenu l'ID; pas de connexion, rien, et un accès complet au compte Dropbox. Cela semble être une conception vraiment stupide, mais je ne peux pas penser à une meilleure façon de le faire.
Je ne sais même pas comment éviter de stocker quelque chose comme un cookie en texte brut. Si vous le cryptez, où stockez-vous la clé pour la décrypter?
La seule façon que je vois de ne pas introduire de vulnérabilités de sécurité consiste à supprimer la fonctionnalité de connexion automatique et à obliger l'utilisateur à taper son mot de passe chaque fois qu'il souhaite utiliser un service, mais c'est une difficulté d'utilisation et les utilisateurs sont gâtés de s'attendre à ne pas avoir à le faire.
Que puis-je lire sur le stockage local des informations d'identification en toute sécurité pour implémenter la fonction de connexion automatique? Si les principes sont trop simples pour un article entier, quels sont-ils? Le logiciel en question ne devrait pas dépendre de fonctionnalités qui ne sont pas présentes sur toutes les plateformes (comme le "trousseau" de certaines distributions Linux).