2010-01-11 4 views
1

Directement au point:MembershipPasswordFormat.Hashed? Comment cela marche-t-il?

Où puis-je placer l'algoritm pour le cryptage de hachage de mot de passe dans le fournisseur d'adhésion? ou: Où l'équipe Microsoft a-t-elle placé la méthode de chiffrement? Parce que: J'ai choisi de l'avoir Hash mais le mot de passe a fini dans ma base de données sont clairs.

Merci beaucoup :)

Mise à jour -----

Désolé pour ne pas mentionner, im en utilisant mon propre fournisseur personnalisé.

Répondre

2

Ceci est spécifié dans le Membership Provider configuration de votre webconfig, en utilisant la add element:

<!-- SqlMembershipProvider syntax --> 
<add name="string" 
    type="string" 
    connectionStringName="string" 
    applicationName="MyApplication" 
    commandTimeout 
    description 
    enablePasswordRetrieval="false" 
    enablePasswordReset="true" 
    passwordFormat="Hashed" 
    minRequiredPasswordLength 
    minRequiredNonalphanumericCharacters 
    passwordStrengthRegularExpression 
/> 

L'algorithme par défaut est SHA1, tel que défini dans le fournisseur d'appartenances, mais vous pouvez remplacer si vous voulez d'utiliser le hashAlgorithmType attribut:

<membership 
    defaultProvider="provider name" 
    userIsOnlineTimeWindow="number of minutes" 
    hashAlgorithmType="SHA1"> 
    <providers>...</providers> 
</membership> 

Pour plus de détails sur la fourniture de votre propre algorithme, consultez "Mapping Algorithm Names to Cryptography Classes". Notez que le format remplace des éléments tels que la récupération de mot de passe - les mots de passe hachés ne peuvent pas être récupérés et un fournisseur doit renvoyer une exception si GetPassword est appelé lorsque le mot de passe est haché (voir propriété EnablePasswordRetrieval). Si vous avez écrit votre propre MembershipProvider, je vous suggère de regarder le "How to: Sample Membership Provider Implementation", en particulier les méthodes EncodePassword et UnencodePassword.

+1

Oui, j'ai travaillé pour inclure la génération de hashcode à CreateUser et ValidateUser, ChangePassword Ces 3 méthode utilisée mot de passe il est donc nessaire de tous les hachage – DucDigital

+0

Oui - chacun d'entre eux devra appeler la méthode EncodePassword. –

1

Je ne suis pas sûr, mais je pense que les mots de passe sont sauvegardés en texte brut parce que la récupération de mot de passe est activée. Vous pouvez le désactiver en définissant l'appartenance < ... enablePasswordRetrieval = "False" /> dans Web.config.

+0

Même si j'ai essayé de faire passer cette option à false, le hachage n'a pas pu atteindre la base de données ... Je ne sais pas où est le problème. – DucDigital

1

C'est une option sur le fournisseur dans la configuration XML. Le docs montre que vous venez de définir "passwordFormat = 'hashed'".

+0

MembershipPasswordFormat.Hashed -> Je vais tout droit dans ma config – DucDigital

+0

Et ça ne marche pas? Quel fournisseur utilisez-vous actuellement? Le SqlMembershipProvider? Vérifiez le code source et voyez comment il utilise ce champ. –

+0

En fait, en utilisant mon propre fournisseur, j'ai oublié de mentionner ci-dessus, pouvez-vous m'envoyer une source pour la méthode CreateUser? – DucDigital