2008-10-17 7 views
1

J'ai un site web en envoyant un email de confirmation à quelqu'un.La meilleure façon de confirmer les liens e-mail pour soumettre l'ID

Maintenant dans l'email je voudrais avoir un lien que l'utilisateur doit cliquer pour confirmer qu'il a reçu le courrier. Je souhaite inclure le mot de passe de l'utilisateur (ou un code quelconque) dans l'adresse de confirmation, afin que l'utilisateur n'ait plus besoin de le saisir à la main, mais si je le fais, le mot de passe se retrouvera dans le l'historique du navigateur et les fichiers journaux.

Existe-t-il un autre moyen d'obtenir un lien de confirmation dans un e-mail pour envoyer des informations telles qu'un nom d'utilisateur et un mot de passe, sans que cela se retrouve dans le lien?
Est-il possible, par exemple, d'avoir un formulaire de saisie dans un e-mail et d'envoyer le mot de passe comme POST au lieu de GET?

Répondre

6

La façon dont cela fonctionne habituellement est que l'email de confirmation contient un lien qui inclut un GUID (Globally Unique Identifier) ​​de quelque sorte. Le GUID est associé au compte de l'utilisateur. Lorsque vous cliquez sur le lien, l'application Web définit simplement l'indicateur de confirmation et enregistre l'utilisateur à l'aide du GUID plutôt que de la combinaison habituelle nom d'utilisateur et mot de passe.

+0

Il vaut généralement la peine de s'assurer que le GUID est une "bonne affaire" et qu'une fois la mission accomplie, cela empêchera le GUID de fonctionner une seconde fois. –

+0

Très bon point. –

+0

une raison pour faire le type d'utilisateur taper également son mot de passe ou userrname sur l'écran de retour? – zsharp

2

Vous pouvez transmettre le GUID dans l'e-mail. Ce GUID particulier doit être associé à l'utilisateur. Ensuite, lorsque l'utilisateur clique sur le lien, le GUID est renvoyé à l'application et peut être capturé en tant que QueryString. Extrayez le GUID une mise à jour que l'utilisateur a été approuvé.

5

Calculez un condensé hexadécimal (par exemple, md5) en fonction de l'identifiant de l'utilisateur et de l'heure actuelle. Conservez ce code dans une base de données ou écrivez un fichier avec le nom de fichier et incluez l'ID et l'adresse e-mail de l'utilisateur.

Configurer un gestionnaire http (cgi, php, servlet, etc ...) pour recevoir des requêtes GET basées sur un URI ressemblant à "/ confirm_email/{hexdigest}" ou "/confirm_email.php?code= {hexdigest} "

Lorsqu'un utilisateur a besoin de confirmer son adresse e-mail, envoyez un lien vers la servlet ci-dessus contenant le résumé.

Lorsque quelqu'un établit un lien vers cet URI, récupérez l'enregistrement ou le fichier db avec le résumé correspondant. Si l'un d'eux est trouvé, l'adresse e-mail contenue est maintenant vérifiée.

Si vous voulez le rendre plus robuste: Quand un utilisateur vérifie son email, changez le condensé hexadécimal juste pour être un hachage de l'adresse e-mail elle-même sans sel. Ensuite, vous pouvez tester si l'e-mail de quelqu'un a changé et doit être revérifié.

Questions connexes