1

我们有一个网站使用默认的 System.Web.Security.SQLMembershipProvider 来处理用户及其密码。今天我注意到空格不算作一个有点奇怪的特殊字符,这让我想到其他特殊字符是否也无效?它产生了一个小问题,因为我们还有验证正则表达式来匹配链中较早的密码,并且那些将空格视为有效的特殊字符。

我的配置如下所示:

<add connectionStringName="MyConnectionString" 
  enablePasswordRetrieval="false" 
  enablePasswordReset="true" 
  requiresQuestionAndAnswer="false" 
  applicationName="Payson 2.0" 
  requiresUniqueEmail="true" 
  passwordFormat="Hashed" 
  maxInvalidPasswordAttempts="20" 
  minRequiredPasswordLength="8" 
  minRequiredNonalphanumericCharacters="0" 
  passwordStrengthRegularExpression="(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})" 
  passwordAttemptWindow="10" 
  name="AspNetSqlMembershipProvider" 
  type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

你会认为这.*\W会匹配空格,但它不会。如果我尝试将密码从更改为abcdefg!1失败abcdefg 1,我的问题是为什么以及是否还有其他不明显的情况?

4

0 回答 0