2011-07-13 3 views
0

scénario légèrement impair. J'ai RequiresQuestionAndAnswer mis à false parce que l'administrateur doit être en mesure de créer des comptes sans remplir de questions et réponses, il veut que l'utilisateur place cette partie. Donc RequiresQuestionAndAnswer est faux, l'utilisateur se connecte et est invité à configurer son propre mot de passe de sécurité et de réponse (que j'ai codé moi-même mais qui utilise des méthodes d'adhésion pour stocker l'information) qui est stocké avec succès dans la base de données. la table aspnet_membership, comme si l'utilisateur était créé avec une question de mot de passe et une réponse initiale.ASP.NET RequiresQuestionAndAnswer fausses interruptions GetPassword

Ensuite, lorsque sur la page ForgotYourPassword, lorsque vous essayez d'utiliser Membership.Provider.GetPassword (nom d'utilisateur, passwordanswer), un mot de passe est généré même si la réponse du mot de passe est incorrecte.

Cela semble être un défaut dans aspnet car la mise RequiresQuestionAndAnswer à faux signifie pour moi:

« Je ne demande pas de créer un utilisateur, mais je peux quand même l'utiliser ».

considérant que, pour asp.net est moyen:

« Je ne demande pas de créer un utilisateur et je ne pourrai jamais l'utiliser et ainsi il sera ignoré partout. »

Quelqu'un sait-il comment contourner ce problème? Je dois être en mesure de confirmer que la réponse de sécurité fournie est correcte et réinitialisée ou obtenir le mot de passe de l'utilisateur. J'utilise des mots de passe cryptés non hachés, donc la récupération devrait être possible.

+0

"J'utilise des mots de passe cryptés non hachés, donc la récupération devrait être possible." - [Veuillez hacher vos mots de passe] (http://stackoverflow.com/questions/325862/what-are-the-most-common-security-mistakes-programmers-make/325870#325870). –

+0

@Chris - le cryptage résout le problème de hachage dans une certaine mesure dans la mesure où les mots de passe ne sont pas stockés en clair. Et c'est la seule option quand il faut pouvoir récupérer le texte du mot de passe. –

Répondre

1

Comme vous pourriez le découvrir ici, le fournisseur intégré est quelque peu limité dans sa flexibilité. La meilleure façon de résoudre ce problème est de faire en sorte que votre application génère la question et la réponse dans les coulisses afin que vous puissiez passer à côté de cela.

+0

Merci, je suis tout simplement arrivé à la même conclusion qui, rétrospectivement, semble évidente. J'ai saisi des valeurs factices pour la question et la réponse, puis je vérifie les valeurs factices où auparavant je vérifiais si la question de mot de passe était vide ou non. Merci encore. – scaryjones