2008-10-07 5 views
3

Je développe un site web d'un client et envoie des newsletters à ses clients (via l'interface d'administration du site) Les newsletters sont personnelles à chacun des destinataires/clients abonnés. Chaque destinataire/client est également un utilisateur avec un nom d'utilisateur/mot de passe qui lui permet de se connecter sur le site Web et de gérer ses abonnements à la newsletter et de participer à la communauté des sites.Comment implémenter l'authentification Querystring

Tout cela fonctionne comme un charme. Maintenant, mon client veut un lien "Gérer mes abonnements" dans l'e-mail de la newsletter qui, lorsqu'il est appuyé, signe automatiquement le destinataire/client sur le site Web sans avoir besoin de mémoriser le nom d'utilisateur et mot de passe.

Cela pourrait être facilement résolu soit faire un lien comme celui-ci:

http://mysite.com/manage.aspx?user=peter&password=hounddog

Des informations sur les cours ne devraient pas être clair mais crypté d'une certaine façon.

Cela pose cependant un problème puisque la seule façon d'authentifier un utilisateur sur le site Web est de fournir un nom d'utilisateur et un mot de passe valides. Au nom de la sécurité, les mots de passe sont stockés en tant que valeurs hachées dans la base de données, ce qui m'empêche d'insérer le mot de passe dans le lien.

Quelle est la meilleure façon d'y parvenir sans compromettre la sécurité?

Répondre

6

devra compromettre votre sécurité, si vous voulez que les gens puissent se connecter sans entrer de mot de passe. Notez que même si vous aviez accès au mot de passe (comme dans votre exemple), vous auriez à l'incorporer dans un mail massage qui serait transmis en clair.

Vous pouvez créer un Guid associé à chaque utilisateur et message, et l'ajouter à l'URL, ce qui vous permet de vous connecter automatiquement.

Vous pouvez peut-être isoler les autorisations afin qu'un login via un lien guid seulement permet à l'utilisateur de gérer les abonnements, mais qu'une véritable connexion par mot de passe est toujours requise pour participer au forum. Dans ce cas, il est assez limité quel chaos peut être détruit si quelqu'un a accès à un guid à partir d'un message électronique. Qu'en est-il de l'utilisation d'un cookie crypté qui contient un jeton d'accès?

+0

C'est ce que j'ai fait par le passé. N'oubliez pas de mapper le GUID et le nom de l'utilisateur dans un tableau distinct –

1

Ce cookie serait livré après une authentification réussie par une page distincte.

Ce type de jeton peut également faire partie de la chaîne de requête d'URL.

Vous pouvez également envisager d'utiliser https sécurisé au lieu de http.

1

N'avez-vous pas pu insérer un nom d'utilisateur chiffré associé à la valeur de hachage du mot de passe? Ce que je veux dire, c'est crypter & coder le nom d'utilisateur pour toujours avoir une longueur particulière ou avoir un caractère de rupture connu, puis ajouter la valeur de hachage des mots de passe. De cette façon, vous pouvez facilement séparer la chaîne de requête tout en conservant le nom d'utilisateur et le mot de passe codés en toute sécurité. Une comparaison directe des valeurs de hachage suffirait, avec le nom d'utilisateur décodé non chiffré pour autoriser l'accès.