修改ASP.NET內建驗證機制的密碼規則

在ASP.NET 2.0以後,有了一套的登入驗證與授權機制。(請參考小喵這篇【ASP.NET的驗證與授權機制(動態錄影說明)】)其中預設的密碼必須要英數混合,並且需要一個非英數的特別符號,而且至少要有7位。這樣的密碼才能吃得進去,當然這樣的機制是為了要增加密碼的安全性,避免別人用機器人程式來猜出您的密碼。不過如果內部的系統想要簡單一些,其實也可以透過設定Web.Config的方式來改變他的規則。

在ASP.NET 2.0以後,有了一套的登入驗證與授權機制。(請參考小喵這篇【ASP.NET的驗證與授權機制(動態錄影說明)】)

其中預設的密碼必須要英數混合,並且需要一個非英數的特別符號,而且至少要有7位。這樣的密碼才能吃得進去,當然這樣的機制是為了要增加密碼的安全性,避免別人用機器人程式來猜出您的密碼。不過如果內部的系統想要簡單一些,其實也可以透過設定Web.Config的方式來改變他的規則。

預設,在Machine.Config中,有這樣的一段設定


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

其中的這些屬性,參考以下的內容(或者參考MSDN的說明)

名稱說明
ApplicationName取得或設定應用程式的名稱。
EnablePasswordReset取得值,指出目前成員資格提供者是否設定為允許使用者重設密碼。
EnablePasswordRetrieval取得值,指出目前成員資格提供者是否設定為允許使用者擷取密碼。
HashAlgorithmType演算法的識別項,用於雜湊密碼。
MaxInvalidPasswordAttempts取得鎖定成員資格使用者以前,所允許的無效密碼或密碼解答嘗試次數。
MinRequiredNonAlphanumericCharacters取得有效密碼中必須存在的最小特殊字元數。
MinRequiredPasswordLength取得密碼所需的最小長度。
PasswordAttemptWindow取得鎖定成員資格使用者之前,所允許無效密碼或密碼解答最高嘗試次數的分鐘數。
PasswordStrengthRegularExpression取得用來評估密碼的規則運算式。
Provider取得應用程式預設成員資格提供者的參考。
Providers取得 ASP.NET 應用程式的成員資格提供者集合。
RequiresQuestionAndAnswer取得值,指出預設成員資格提供者是否要求使用者解答密碼問題,以便重設及擷取密碼。
UserIsOnlineTimeWindow指定使用者最後活動日期/時間戳記之後的分鐘數,在其間使用者會視為在線上。

 

如果有需要將該機器上的所有Web專案都修改,可以直接修改這個檔案。不過小喵建議,還是針對個別的來修改比較好。

如果要修改單一站台或者單一Web應用程式,那麼可以在該站台或者該Web應用程式的Web.Config中,加上自己的修改如下:


<membership>
    <providers>
            <remove name="AspNetSqlMembershipProvider" />
        <add name="AspNetSqlMembershipProvider"
            type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
            connectionStringName="LocalSqlServer"
            enablePasswordRetrieval="false"
            enablePasswordReset="true"
            requiresQuestionAndAnswer="true"
            applicationName="/"
            requiresUniqueEmail="false"
            passwordFormat="Hashed"
            maxInvalidPasswordAttempts="5"
            minRequiredPasswordLength="6"
            minRequiredNonalphanumericCharacters="0"
            passwordAttemptWindow="10"
            passwordStrengthRegularExpression="" />
    </providers>
</membership>

(假設要修改為最少6個字,不必輸入特殊字元,只需英數混合)

(請注意,一定要加上<remove name="AspNetSqlMembershipProvider" />,否則會有AspNetSqlMembershipProvider已經添加的錯誤訊息!!)

 

參考:

http://msdn.microsoft.com/zh-tw/library/system.web.security.membership_properties(VS.80).aspx

http://www.zzsky.cn/build/content/693.htm


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat