我们有一个网站使用默认的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
,则会失败,我的问题是为什么以及是否还有其他非明显的案例?