最近正在研究asp.net 2.0 新增的login控件,發現系統預設的密碼安全性要求較高,即“密碼最短長度為7,其中必須包含以下非字母數字字元: 1。”,對於一般王展來說沒有必要(連windows2003sever都沒有預設要求這樣複雜的密碼)。一些參考資料提供的修改方法是在machine.config裡面修改。但除非你有主機的管理權,否則是不能修改的。所以還是建議到web.config檔裡面修改。
方法是在web.config的<system.web>節點裡加入子標籤:
<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>
對關鍵的屬性做一下說明:
connectionStringName 資料庫連線。這個要在web.config設定
enablePasswordRetrieval 取得一個值,指示目前成員資格提供者是否配置為允許使用者檢索其密碼。
enablePasswordReset 取得一個值,指示目前成員資格提供者是否配置為允許使用者重設其密碼。
requiresQuestionAndAnswer 取得一個值,指示預設成員資格提供者是否要求使用者在進行密碼重設和擷取時回答密碼提示問題。
applicationName 取得或設定應用程式的名稱。
requiresUniqueEmail 指示使用者在建立使用者時是否必須提供唯一的電子郵件地址值。
passwordFormat 指示在成員資格資料儲存區中儲存密碼的格式。下面有詳細說明
maxInvalidPasswordAttempts 取得鎖定成員資格使用者前允許的無效密碼或無效密碼提示問題答案嘗試次數。
minRequiredPasswordLength 取得密碼所要求的最小長度。
minRequiredNonalphanumericCharacters 取得有效密碼中必須包含的最少特殊字元數。
passwordAttemptWindow 取得在鎖定成員資格使用者之前允許的最大無效密碼或無效密碼提示問題答案嘗試次數的分鐘數。
對PasswordFormat 的詳細說明屬性指示儲存密碼的格式。密碼可以採用Clear、Encrypted 和Hashed 密碼格式儲存。 Clear 密碼以明文形式存儲,這可以提高儲存和檢索密碼的效能,但安全性較差,當資料來源安全性受到威脅時此類密碼很容易被讀取。 Encrypted 密碼在儲存時進行了加密,可以在比較或檢索密碼時進行解密。此類密碼在儲存和檢索時需要額外的處理,但較安全,在資料來源的安全性受到威脅時不容易被取得。 Hashed 密碼在儲存到資料庫時使用單向雜湊演算法和隨機產生的salt 值進行雜湊處理。在驗證某一密碼時,將以資料庫中的salt 值對該密碼進行雜湊計算以進行驗證。無法檢索哈希密碼。