none
Comment faire pour sécuriser le mot de passe dans une application ASP.NET RRS feed

  • Discussion générale

  • Normalement, dans Forms Authentication, le mot de passe sera envoyé sous forme de texte brut du côté client, il n'est pas sécurisé apparemment.

    Le mot de passe peut être chiffré ou haché par JavaScript avant de l'envoyer vers le côté serveur. Cependant, toute personne qui capture le nom d'utilisateur et de mot de passe chiffré peut contrefaçon vos informations d'identification. Ainsi, crypter un mot de passe dans le côté client n'est pas sécurisé.

     

    Deux suggestions pour conserver votre mot de passe sécurisé lors de la connexion :

    1. Afin d'assurer la sécurité du mot de passe dans la transmission, on vous recommande d'utiliser SSL (Secure Sockets calques).

    Pour assurer la sécurité du mot de passe dans le côté serveur, il faut hacher votre mot de passe avant de le stocker dans la base de données.

    Si vous utilisez des membres fournies par asp.net,  après avoir spécifié le passwordFormat = "Hashed" comme ceci, le mot de passe est stocké dans la base de données sous forme de code de hachage automatiquement.

     

    <membership>
     <providers>
      <add
       name="AspNetSqlMembershipProvider"
       type="System.Web.Security.SqlMembershipProvider, ..."
       connectionStringName="LocalSqlServer"
       enablePasswordRetrieval="false"
       enablePasswordReset="true"
       requiresQuestionAndAnswer="true"
       applicationName="/"
       requiresUniqueEmail="false"
       passwordFormat="Hashed"
       maxInvalidPasswordAttempts="5"
       minRequiredPasswordLength="7"
       minRequiredNonalphanumericCharacters="1"
       passwordAttemptWindow="10"
       passwordStrengthRegularExpression=""
      />
     </providers>
    </membership>

     

     

     

    2. Pour hacher un mot de passe et le stocker dans la base de données manuellement (par programmation).

    Vérifiez ce lien pour savoir comment générer un hachage :

    http://msdn.Microsoft.com/en-us/library/w1t5hx6k.aspx

     

    Suivez ce lien pour un exemple de mise en œuvre du fournisseur de membres :

    http://msdn.Microsoft.com/en-us/library/6tc47t75.aspx

     

    Pour plusieurs informations, visitez la page Foire aux Questions – ASP.NET

     

     
    Appel à contribution ! http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/bd974e0e-5519-4122-b8fc-3b998207c34f
    mardi 20 avril 2010 14:08
    Modérateur

Toutes les réponses

  • Il existe un moyen de sécuriser le mot de passe même sans utiliser HTTPS.

    Le protocole s'utilise de la façon suivante :

    Le serveur envoie un salage aléatoire qu'il transmet en clair au client et qu'il conserve en session.

    L'utilisateur tape son mot de passe qui est hashé par le javascript puis on produit une opération entre le hash et le salage et on hash le résultat. Le hash final est envoyé au serveur qui vérifie que ce hash correspond à ce qu'il attend.

    Ni le mot de passe ni le has ne sont transmis sur le réseau. Comme le salage est aléatoire, il est impossible à un attaquant du milieu de reproduire l'authentification.

    Ceci dit, en javascript, c'est un peu lourd...


    Olivier MARTY
    mardi 20 avril 2010 14:40