表單驗證認證
更新:2007 年 11 月
在登入時用來驗證使用者的表單驗證認證,可以儲存在外部資料來源或應用程式組態檔中。
注意事項: |
---|
ASP.NET 成員資格是儲存和管理表單驗證應用程式中使用者認證的慣用方法。如需詳細資訊,請參閱使用成員資格管理使用者。 |
在應用程式組態檔中儲存使用者
當使用表單驗證時,可以使用網站組態檔之認證區段中的使用者/密碼組驗證使用者。您可以使用 Authenticate 方法,將使用者提供的認證與認證區段中的使用者/密碼組清單做比較,以決定是否要授與存取權。在下列範例中,如果使用者 Kim 和 John 提供正確的密碼即可登入:
<credentials passwordFormat="SHA1" >
<user name="Kim"
password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
<user name="John"
password="BA56E5E0366D003E98EA1C7F04ABF8FCB3753889"/>
</credentials>
範例中的認證組是以 Secure Hash Algorithm-1 (SHA1) 密碼雜湊格式進行加密。PasswordFormat 屬性 (Attribute) 是必要項。下表列出此屬性的值。
值 |
說明 |
---|---|
密碼是儲存為清除文字。使用者密碼不需進一步轉換即可直接和這個值比較。 |
|
密碼是使用訊息摘要式 5 (Message Digest 5,MD5) 雜湊摘要式來儲存。為了驗證認證,會使用 MD5 演算法雜湊使用者密碼,並與儲存值做比較。使用這個值時,將永不儲存或比較清除文字式密碼。這個演算法和 SHA1 相比可以產生較佳的效能。 |
|
密碼是使用 SHA1 雜湊摘要式來儲存。為了驗證認證,會使用 SHA1 演算法雜湊使用者密碼,並與儲存值做比較。絕不儲存純文字式密碼。使用這個演算法可以改善 MD5 演算法的安全性。 |
.NET Framework 所包含的類別和方法,可使您更容易以程式的方式建立雜湊值,以便長久儲存。有助於設計這個工作程式的類別是 FormsAuthentication。它的 HashPasswordForStoringInConfigFile 方法可以執行雜湊。若要更精確的控制,也可以使用 System.Security.Cryptography 類別。
儲存在文字檔中的雜湊密碼無法用於重新產生原始密碼,但它們可能容易受到字典攻擊。在這類型的攻擊中,攻擊者在取得密碼檔案的存取權之後,試圖使用軟體反覆雜湊大字典內的所有字,並比較產生的雜湊與已儲存的雜湊,以猜出密碼。如果您是以任何方式儲存雜湊密碼,就應要求使用者選擇非常用字的密碼,而且其中包含一些數字和非字母與數字的字元,以避免字典攻擊。此外,您也可以使用 ASP.NET 成員資格儲存認證,使其更方便管理。如需詳細資訊,請參閱使用成員資格管理使用者。