2009-07-13 11 views
3

Je travaille sur des applications Web où - croyez-le ou non - les utilisateurs ne sont pas tenus de fournir leur adresse e-mail pour s'inscrire. Ces exigences ne peuvent pas changer. Les utilisateurs se connecteront au système avec un identifiant et un mot de passe comme n'importe quel site web standard. Le problème auquel je suis confronté concerne les utilisateurs qui ont oublié leur mot de passe. Quand ils veulent en générer un nouveau, comment puis-je vérifier leur identité? Initialement, j'allais demander aux utilisateurs de choisir une question de sécurité (à partir d'une liste de 5) et de fournir une réponse. Si jamais ils sont entrés dans la page Mot de passe oublié, ils devront alors entrer leur identifiant de connexion, ainsi que la réponse à leur question de sécurité. Cela semble peu sûr, car la réponse à ces types de questions (le nom de jeune fille de la mère, la ville de naissance, etc.) n'est généralement pas si difficile à obtenir.Meilleures pratiques pour les questions de sécurité dans les applications Web

Voici quelques-unes de mes questions:

  • sont des questions de sécurité la meilleure approche à ce problème?
  • Si oui, quelles sont les meilleures questions?
  • Pour combien de questions un utilisateur doit-il entrer les réponses?
  • Est-il nécessaire de mettre un CAPTCHA sur la page Mot de passe oublié?
  • Est-il préférable que les utilisateurs génèrent leurs propres questions?

Toute aide, tout commentaire ou toute documentation à ce sujet serait grandement apprécié.

Répondre

2

Les questions de sécurité sont-elles la meilleure approche de ce problème?

Puisque vous ne pouvez pas utiliser d'autres moyens d'authentification (tels que l'adresse e-mail, OpenID, etc.), c'est ce que vous pouvez faire de mieux. Cependant, vous pouvez toujours ajouter un "indice de mot de passe" au processus d'inscription.

  • Si oui, quelles sont les meilleures questions?
  • Est-il préférable que les utilisateurs génèrent leurs propres questions?

Il est beaucoup plus facile si vous laissez l'utilisateur écrire son/sa propre question par opposition au stock « première voiture » ou « premier animal de compagnie ». C'est une bonne sécurité car elle (habituellement) fournit une question/réponse très difficile à deviner au hasard et est probablement aussi secrète qu'un mot de passe.

Pour combien de questions un utilisateur doit-il entrer les réponses?

Autoriser une combinaison de questions/réponses.

Est-il nécessaire de mettre un CAPTCHA sur la page Mot de passe oublié?

Eh bien, il doit y avoir une certaine tentative de se prémunir contre les attaques par force brute, en particulier de la part des robots.Je voudrais utiliser la même technologie que SO utilise: reCAPTCHA

0

Je ne me souviens pas de l'emplacement, mais si vous effectuez une recherche google sur l'authentification basée sur la connaissance, vous aurez Qnde Q & Une authentification est très faible. Un problème important est l'entropie (aléatoire possible) des réponses potentielles et des réponses réelles. Si vous demandez une couleur préférée, il n'y a vraiment qu'une très petite liste de couleurs que la plupart des utilisateurs vont sélectionner. Cela pourrait valoir 1 bit d'entropie. Ensuite, si vous posez une deuxième question, telle que la ville où vous avez grandi, cela pourrait vous donner un peu plus d'entropie (au Mexique, il y a quelque chose comme 30% de chance pour chacune des trois villes).

Une estimation que j'ai vu était que, pour obtenir une force égale à un mot de passe de 8 caractères, vous auriez besoin d'environ 26 questions. Cela dit, vous pourriez être en mesure de faire d'autres choses pour contacter l'utilisateur. Vous pouvez essayer d'envoyer un message texte à l'utilisateur, au lieu d'un e-mail. L'utilisateur enregistre-t-il un numéro de téléphone? Vous pouvez demander à l'utilisateur de stocker un certificat sur son ordinateur, qu'il peut télécharger avec la demande de réinitialisation du mot de passe (vous devrez faire des efforts pour vous assurer que ce certificat est lié à l'ordinateur). Vous pourriez faire une chose post-inscription, où l'utilisateur pourrait soumettre une adresse e-mail.

Bonne chance!