web-dev-qa-db-fra.com

Comment fonctionne la case à cocher "Mémoriser mon mot de passe"?

Il existe de nombreux formulaires de connexion avec la petite case à cocher "Mémoriser mon mot de passe" afin que, lors de votre prochaine visite sur le site, le navigateur remplisse automatiquement le champ du mot de passe pour vous.

Mais j'ai remarqué un comportement dans les navigateurs modernes, tels que Chrome/Firefox, qui affiche une barre de notification pour enregistrer le nom d'utilisateur/mot de passe même si cette page Web particulière ne comporte pas de case à cocher "mémoriser le mot de passe".

donc mes questions sont:

  1. Si je dois cocher la case "Mémoriser le mot de passe" dans un formulaire de connexion, que dois-je faire lorsque l'utilisateur le vérifie? Je veux dire, dois-je stocker le mot de passe dans les cookies du navigateur (ou le stockage local)? Si tel est le cas, le mot de passe doit-il être crypté ou en texte brut?
  2. La barre de notification "Enregistrer le mot de passe" est une fonctionnalité du navigateur ou existe-t-il un moyen de l'invoquer à partir de la page Web?
25
Veera

La partie "enregistrer le mot de passe" provient du gestionnaire de mots de passe du navigateur chaque fois qu'il voit un <input type="password"> qui ressemble à une demande de mot de passe. Vous pouvez utiliser l'attribut autocomplete pour supprimer cela dans la plupart des navigateurs:

<input type="password" name="password" autocomplete="off">

Cela ne validera pas mais cela n’a généralement pas d’importance.

La partie "Remember me" est complètement séparée du gestionnaire de mots de passe du navigateur. L'indicateur "Remember me" ("souvenez-vous de moi") est l'affaire du serveur. Tout ce qu'il fait, c'est falsifier la date d'expiration du cookie qu'il renvoie. Le serveur renverra toujours un cookie (à moins qu'il n'utilise pas de cookies pour le suivi des sessions, mais c'est rare et ne nécessite pas de «se souvenir de moi» de toute façon) avec quelque chose à l'intérieur pour identifier l'utilisateur client.

Si vous cochez la case "Remember me", vous indiquez au serveur que vous souhaitez une session persistante. Pour ce faire, le serveur inclura une date d'expiration dans le cookie et cette date d'expiration sera dans le futur. Lorsque la date arrive, le navigateur expirera et supprimera le cookie; sans le cookie, le serveur ne saura plus qui vous êtes et vous devrez vous reconnecter.

Si vous ne cochez pas la case "Souvenez-vous de moi", vous obtiendrez un cookie de session. Les cookies de session n'ont pas de date d'expiration, ils expirent donc automatiquement à la fermeture du navigateur. Les cookies de session sont utiles pour les machines partagées.

Résumé:

  • "Enregistrer le mot de passe" provient du gestionnaire de mots de passe du navigateur.
  • "Remember me" concerne le délai d'expiration du cookie de connexion.

Désolé d'être si long, mais il semble y avoir une certaine confusion et un manque de clarté dans les autres réponses.

68
mu is too short

Question 1: 

  1. L'identifiant de session est stocké dans le cookie. Autant que je sache, le mot de passe ou son hachage n'est pas stocké. Une session est créée côté serveur chaque fois que vous vous connectez. Si vous vous êtes connecté avec l'option "Mémoriser mes informations", le serveur transmet un cookie avec l'identifiant de session (ou un identifiant de session chiffré, ou quelque chose qui identifie de manière unique la session de l'utilisateur) et cela. Le cookie est enregistré côté client.
    Lorsque vous vous connectez pour la prochaine fois, le serveur vérifie s'il existe un cookie avec la session, s'il existe (et que la session n'a pas été arrêtée/a expiré - voir le point 2 ci-dessous), puis il vous identifie comme " Veera "et vous laisse sur le site. 

  2. De nombreux sites proposent une option "Déconnexion de toutes les sessions" (comme Gmail: voir le bas de la fenêtre). Cela invaliderait toutes les sessions associées à l'utilisateur.

Question 2:
Le mot de passe mémorisé est une fonctionnalité proposée par le navigateur. Le navigateur voit s'il y a un <input type=password> sur la page et vous invite à enregistrer ce mot de passe pour vous. Tout <input type=password> déclencherait ceci.

La différence entre le serveur qui se souvient de vous et le navigateur qui se souvient de votre mot de passe réside dans le fait que votre mot de passe est enregistré ou non. Et combiné à l'option "Déconnexion de toutes les sessions", c'est bien mieux que de laisser le navigateur enregistrer votre mot de passe.

2
Nivas
  1. Vous aurez besoin d'un moyen de savoir qui est l'utilisateur. Normalement, cela se fait en enregistrant un cookie dans le navigateur de l'utilisateur. Vous ne devez utiliser que quelque chose qui ne soit pas facilement usurpé. Le cryptage doit donc être utilisé. Vous pourriez / utiliser le stockage local, tant que vous êtes sûr que tous les navigateurs qui seront utilisés sur votre site le prennent en charge.

  2. Non, il n'y en a pas. Avoir un champ de mot de passe est normalement ce qui déclenche la barre.

0
Oded
  1. Oui, vous devez utiliser des cookies
  2. C'est une fonctionnalité du navigateur et il n'y a aucun moyen de la déclencher
0
Ergec
  1. La manière habituelle de le faire devrait être un cookie avec le mot de passe crypté côté client
  2. Je ne suis pas tout à fait sûr de ce que je dis, mais d'un point de vue utilisateur, il me semble que le navigateur détermine s'il doit afficher sa boîte de dialogue interne de sauvegarde du mot de passe uniquement sur la base de la présence d'un mot de passe sur la page. . Donc, tant que vous avez un mot de passe standard sur votre page, le navigateur essaiera d’ajouter la combinaison utilisateur/mot de passe à sa base de données.
0
Valentin Rocher