web-dev-qa-db-fra.com

La manière la plus sûre de gérer quelqu'un oubliant de vérifier son compte?

Supposons que nous envoyions une vérification par e-mail aux nouveaux abonnés où ils doivent cliquer sur un lien pour vérifier leur compte.

Supposons qu'ils oublient de le vérifier et essaient plus tard de se connecter.

Le message d'erreur doit-il indiquer "Votre nom d'utilisateur ou votre mot de passe est incorrect?", Au lieu de leur faire savoir qu'ils ont oublié de vérifier le compte.

Je suppose que c'est le moyen le plus sûr de le gérer, car si nous leur disons qu'ils doivent vérifier le compte, nous leur faisons savoir qu'un compte avec cet ID utilisateur existe ...

Pensées?

Peut-être que la meilleure façon de le gérer est de leur permettre d'accéder au compte, mais ne les laissez rien y faire tant qu'ils ne sont pas vérifiés?

30
Ole

Ce que je vois le plus souvent, c'est d'autoriser et de connecter l'utilisateur, mais de verrouiller les fonctionnalités significatives jusqu'à ce que l'e-mail soit vérifié. Vous devriez faire apparaître une erreur rappelant à l'utilisateur de renvoyer un e-mail d'activation s'il essaie d'accéder à l'une des fonctionnalités restreintes.

C'est une mauvaise conception de mentir à un utilisateur - s'il soumet le nom d'utilisateur et le mot de passe corrects, vous ne devriez jamais afficher une erreur affirmant que l'un ou l'autre est incorrect.

80
Buffalo5ix

Je suis d'accord avec Buffalo5ix, mais la vérification par e-mail ne doit pas être considérée comme faisant partie de la sécurité du compte. Vérification de l'E-mail:

  • prouve la propriété de l'adresse, juste pour savoir que l'utilisateur a entré la bonne adresse à envoyer spam e-mails de récupération de mot de passe.
  • sert de moyen de dissuasion très léger pour l'enregistrement de plusieurs faux comptes. Il est assez facile d'automatiser la création d'adresses e-mail (en utilisant tempmail/héberger votre propre serveur de messagerie) et de cliquer automatiquement sur les liens de validation, donc CAPTCHA serait un meilleur système pour se protéger contre l'enregistrement automatisé de faux comptes.

Je ne vois aucune raison liée à la sécurité pour laquelle vous devriez verrouiller les comptes non vérifiés de quelque manière que ce soit. [CLARIFICATION: je pas faisant valoir que vous devez envoyer des messages à des comptes de messagerie non vérifiés, ce serait au moins du spam et au pire donnerait à une personne aléatoire la possibilité de réinitialiser le mot de passe du compte si l'utilisateur a mal tapé son e-mail. Je dis que la connexion au compte ne doit pas être désactivée, l'envoi d'un e-mail à une adresse non vérifiée devrait évidemment l'être.]

Je préfère la petite bannière en haut de l'écran me rappelant de vérifier le compte et invitant à renvoyer l'e-mail de vérification. Traiter un utilisateur comme un criminel présumé ou le harceler juste après son inscription n'est pas poli, faites-lui le bienvenu.

8
Andrew Morozko

Vous ne voulez pas divulguer les informations selon lesquelles le nom d'utilisateur existe en réponse à une tentative de connexion non authentifiée. Cela permettrait aux attaquants de déterminer quelles adresses e-mail de leur liste existent avec votre service.

Mais si l'utilisateur se connecte avec le mot de passe qu'il a fourni lors de l'inscription, ce n'est pas la situation dans laquelle vous vous trouvez. Vous savez (autant que vous le faites avec les mots de passe) que la personne qui se connecte est la même personne qui a enregistré ce mot de passe. Il n'y a donc aucun mal à leur dire que leur nom d'utilisateur existe; ils le savent, depuis qu'ils l'ont enregistré!

Ce que vous ne savez pas, c'est que cette personne contrôle réellement l'adresse e-mail que vous avez pour elle. Cela n'est en fait pas lié à la vérification de l'identité de la personne qui se connecte avec un mot de passe. Vous voudrez peut-être l'utiliser comme moyen alternatif de prouver leur identité (afin qu'ils puissent récupérer après avoir perdu leur mot de passe). Ne pas avoir vérifié son e-mail signifie que vous ne pouvez pas le faire en toute sécurité (puisque vous ne pas savez que la personne qui s'est inscrite contrôle cette adresse e-mail), de sorte que son contrôle sur son propre compte n'est pas établi en toute sécurité. Mais cela ne signifie pas que vous avez plus de raisons que d'habitude de douter que le mot de passe prouve qui il était et de le traiter comme un utilisateur non authentifié.

Si vous décidez qu'il est important de ne pas autoriser les utilisateurs à se connecter et à utiliser votre service sans vérifier leur e-mail, une fois que vous avez établi l'identité de la personne avec laquelle vous communiquez, vous devez simplement leur dire que c'est le problème et les laisser y répondre.

7
Ben

Je voudrais souligner quelque chose qui est peut-être ignoré

Le message d'erreur doit-il indiquer "Votre nom d'utilisateur ou votre mot de passe est incorrect?", Au lieu de leur faire savoir qu'ils ont oublié de vérifier le compte.

Je suppose que c'est le moyen le plus sûr de le gérer, car si nous leur disons qu'ils doivent vérifier le compte, nous leur faisons savoir qu'un compte avec cet ID utilisateur existe ...

S'ils doivent entrer leurs informations d'authentification, vous pouvez toujours leur faire savoir qu'ils doivent vérifier leur compte pour y accéder ... tant que vous n'envoyez ce message que si l'authentification est correcte. Vous ne divulguez aucune information de cette façon, car ils devraient entrer un mot de passe valide pour accéder à ce message sur un compte donné, auquel cas ils seraient autrement dans le compte de toute façon.

Si vous pensez vraiment qu'un compte non vérifié doit être verrouillé jusqu'à ce qu'il soit vérifié, c'est une manière parfaitement adaptée de le gérer (donnez également une option pour renvoyer l'e-mail de vérification pour cet écran, car les choses se perdent dans le spam/etc.).

1
taswyn

En supposant que vous disposez d'un formulaire d'inscription qui n'autorise pas les noms d'utilisateur en double, il est trivial de vérifier si le nom d'utilisateur existe.

0
Solomon Ucko

Gardez à l'esprit qu'une personne s'est peut-être inscrite avec une adresse e-mail ne lui appartenant pas. Sachant que si un e-mail est requis , vous devez soit:

  • Supprimer automatiquement les comptes qui ne sont pas vérifiés après X jours. Ou, mieux, ne créez jamais de comptes complets en premier lieu et placez-les à la place sur une liste en attente jusqu'à ce que la vérification soit terminée (et autorisez plusieurs entrées de la même adresse dans cette liste). Vous devez noter cette suppression automatique dans le texte de l'e-mail et également sur la page d'inscription.

  • Ou, si vous ne supprimez pas automatiquement les comptes, vous devez fournir au propriétaire du courrier électronique légitime un moyen de créer ultérieurement son propre compte (auquel cas vous devez à nouveau invalider/supprimer le compte précédent).

Bien sûr, vous ne devez autoriser aucun accès tant que l'e-mail n'est pas vérifié. Et vous ne devez jamais envoyer d'autres e-mails (y compris marketing, etc.) à l'adresse tant qu'elle n'est pas vérifiée.

Si le courrier électronique est facultatif pour le service, soyez explicite à ce sujet et ne faites pas du tout du courrier électronique un champ obligatoire. Dans ce cas, si quelqu'un entre un e-mail mais ne le vérifie jamais, vous pouvez continuer sans fonctionnalité liée à l'e-mail - mais, encore une fois, assurez-vous que la même adresse e-mail peut être réutilisée ultérieurement par le propriétaire légitime.


Je ne saurais trop insister sur le fait que cela peut être incroyablement frustrant lorsque quelqu'un d'autre enregistre un compte avec votre adresse e-mail, vous empêchant d'enregistrer votre propre compte sur le service car cette adresse e-mail est unique dans la base de données et a été "revendiquée" par le autre compte. Même si le propriétaire de l'e-mail peut facilement réinitialiser le mot de passe du compte, cela n'aide pas le fait que le compte a été personnalisé par quelqu'un d'autre. Ne mettez pas les utilisateurs dans cette position.

0
Bob