2009-07-23 10 views
0

Je crée un formulaire d'activation pour les utilisateurs nouvellement créés dans le système d'adhésion d'ASP.NET. Lorsque l'utilisateur est créé, j'envoie un email avec un lien vers une page d'activation. Toutefois, avant que l'utilisateur ne soit activé, je souhaite vérifier son nom d'utilisateur et son mot de passe. Je lui demande donc d'entrer ses informations d'identification dans des zones de texte. Cependant, en fonction de ce que j'ai lu et du comportement que je vois, il semble que je dois activer l'utilisateur avant de pouvoir tester le mot de passe, soit avec FormsAuthentication.Authenticate, soit avec Membership.ValidateUser. Je pense que c'est une faiblesse potentielle de la sécurité - y a-t-il un moyen de contourner le problème?Pouvez-vous valider le mot de passe d'un utilisateur inactif dans le système d'adhésion d'ASP.NET?

Merci,

Graham

Répondre

0

Le lien d'activation dans leur e-mail doit contenir un long (32 caractères par exemple) ID unique et aléatoire, comme un GUID, qui arrive à échéance une fois activé (expire également dans un période courte si non activée). Cet identifiant pourrait être deviné, mais si vous croyez que cela pourrait être deviné, le nom d'utilisateur et le mot de passe choisis par l'utilisateur auraient été devinés des années avant le GUID. D'un autre côté, si vous voulez vraiment faire autrement, envoyez-leur un "code" d'activation, redirigez-les vers une page d'activation sur votre site, demandez le nom d'utilisateur, le mot de passe et le code d'activation. Sur le backend, activez le compte, puis vérifiez la validité de l'utilisateur/passe, s'il n'est pas valide, désactivez le compte. Sinon, redirigez-les pour leur faire savoir que leur compte a été activé. Tout est fait dans un processus "atomique".

+0

C'est en fait comme ça que je le fais maintenant (activate-> test-> if_fail-> deactivate) mais j'espérais qu'il y avait un meilleur moyen! Merci de votre aide. –

Questions connexes