デフォルトの System.Web.Security.SQLMembershipProvider を使用してユーザーとそのパスワードを処理する Web サイトがあります。今日、空白が特殊文字としてカウントされないことに気付きました。これは少し奇妙で、他の特殊文字も無効ではないかと考えさせられました。チェーンの早い段階でパスワードと一致する検証正規表現もあり、それらは空白を有効な特殊文字としてカウントするため、少し問題が発生します。
私の設定は次のようになります:
<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
失敗しますが、私の質問は、その理由と、他にも明らかでないケースがあるかどうかです。