2012-02-12 75 views
-1

我有數據庫與用戶表,其中我有很多列包括密碼和用戶名。asp.net登錄控制在哪裏保存密碼

我決定使用asp.net登錄控件並且沒有什麼問題。

登錄控制在哪裏保存密碼?

我可以檢查用戶是否對我的數據庫有效嗎?在asp.net

回答

5

對不起即時通訊新不管你做什麼,不要保存密碼明文在數據庫中,特別是與認證,不要重新發明輪子 - 這是很難得到正確。

您應該使用ASP.NET內置的表單身份驗證。使用SQL成員資格提供程序的表單身份驗證不會將密碼保存到數據庫,而是生成一個哈希值,以便以後驗證輸入的密碼是否與現有密碼匹配。這使您的DBA或任何其他訪問數據庫的人都無法使用您的用戶密碼運行。

驗證可以使用Membership API(即Membership.ValidateUser()

這裏有ASP.NET 2.0 Membership, Roles, Forms Authentication, and Security Resources(舊的,但好)

在這裏,另一個在成員身份API博客文章系列來完成:How To: Use Membership in ASP.NET 2.0

1

您應該使用ASP.NET的Membership API。您可以通過以下閱讀它:

與成員資格提供

總之,密碼是不是明明白白存儲 - 它被計算成散列(也鹽醃) 。

通常,您可以運行aspnet_regsql來創建相關的成員資格表(例如用戶,角色,成員資格)。您可以在密碼PasswordSalt列下的成員資格表中找到密碼哈希值/鹽值。

1

<asp:Login>控件不直接讀取或寫入用戶數據。相反,它依賴於接口的實現。 ASP.NET附帶一個名爲SqlMembershipProvider的標準提供程序,它在SQL Server中使用它自己的表。該類不是密封的,因此您可以擴展它並覆蓋方法以訪問所需位置的數據等。然後修改web.config以告訴ASP.NET使用您的新提供者。

以下是關於實現自己的MembershipProvider鏈接兩個MSDN文章與細節:

http://msdn.microsoft.com/en-us/library/f1kyba5e%28v=vs.100%29.aspx

FWIW,標準的成員接口有一些顯著的不足,特別是對於大型網站 - 但這是另一個問題的主題。