Récemment, j'étudiais le nouveau contrôle de connexion dans asp.net 2.0 et j'ai découvert que les exigences de sécurité des mots de passe par défaut du système sont relativement élevées, c'est-à-dire « la longueur minimale du mot de passe est de 7, qui doit contenir les caractères non alphanumériques suivants : 1. ", pour Wang Zhan ordinaire, il n'y a pas de nécessaire (même Windows2003sever ne nécessite pas un mot de passe aussi complexe par défaut). La méthode de modification fournie par certains documents de référence consiste à le modifier dans machine.config. Mais à moins que vous ne disposiez de droits d'administrateur sur l'hôte, vous ne pouvez pas le modifier. Il est donc toujours recommandé de le modifier dans le fichier web.config.
La méthode consiste à ajouter des sous-balises au nœud <system.web> de web.config :
<adhésion>
<fournisseurs>
<remove name="AspNetSqlMembershipProvider"/>
<ajouter un nom="AspNetSqlMembershipProvider"
type=" System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutre, PublicKeyToken=b03f5f7f11d50a3a"
connexionStringName="LocalSqlServer"
activerPasswordRetrieval="false"
activerPasswordReset="true"
nécessiteQuestionAndAnswer="true"
nomapplication="/"
nécessiteUniqueEmail="false"
passwordFormat="Haché"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
mot de passeAttemptWindow="10"
mot de passeStrengthRegularExpression="" />
</fournisseurs>
</adhésion>
Expliquons les attributs clés :
connexion à la base de données connectionStringName. Cela doit être défini dans web.config
EnablePasswordRetrieval Obtient une valeur indiquant si le fournisseur d'appartenances actuel est configuré pour permettre aux utilisateurs de récupérer leurs mots de passe.
EnablePasswordReset Obtient une valeur indiquant si le fournisseur d'appartenances actuel est configuré pour permettre aux utilisateurs de réinitialiser leurs mots de passe.
requireQuestionAndAnswer Obtient une valeur qui indique si le fournisseur d'appartenances par défaut demande aux utilisateurs de répondre à une question sur le mot de passe pour la réinitialisation et la récupération du mot de passe.
applicationName obtient ou définit le nom de l'application.
requireUniqueEmail Indique si l'utilisateur doit fournir une valeur d'adresse e-mail unique lors de la création de l'utilisateur.
passwordFormat indique le format dans lequel les mots de passe sont stockés dans le magasin de données d'adhésion. Instructions détaillées ci-dessous
maxInvalidPasswordAttempts Obtient le nombre de tentatives de réponse à un mot de passe invalide ou à un mot de passe invalide autorisées avant que l'utilisateur ne soit exclu de son adhésion.
minRequiredPasswordLength Obtient la longueur minimale requise pour un mot de passe.
minRequiredNonalphanumericCharacters Obtient le nombre minimum de caractères spéciaux qui doivent être inclus dans un mot de passe valide.
passwordAttemptWindow Obtient le nombre maximum de tentatives de réponse à un mot de passe invalide ou à un mot de passe invalide autorisées avant que l'utilisateur membre ne soit verrouillé, en minutes.
La propriété de description détaillée de PasswordFormat indique le format dans lequel les mots de passe sont stockés. Les mots de passe peuvent être stockés aux formats de mot de passe clair, crypté et haché. Les mots de passe clairs sont stockés en texte clair, ce qui améliore les performances de stockage et de récupération des mots de passe, mais est moins sécurisé et peut être facilement lu lorsque la sécurité de la source de données est compromise. Les mots de passe cryptés sont cryptés lorsqu'ils sont stockés et peuvent être déchiffrés lors de la comparaison ou de la récupération des mots de passe. De tels mots de passe nécessitent un traitement supplémentaire lors du stockage et de la récupération, mais sont plus sécurisés et ne peuvent pas être facilement récupérés lorsque la sécurité de la source de données est compromise. Les mots de passe hachés sont hachés à l'aide d'un algorithme de hachage unidirectionnel et d'une valeur salt générée de manière aléatoire lorsqu'ils sont stockés dans la base de données. Lorsqu'un mot de passe est vérifié, il est haché avec la valeur salt dans la base de données pour vérification. Impossible de récupérer le mot de passe haché.