2008-10-31 32 views
0

設計時用戶表這將是必須但從安全/用戶驗證點字段一個基於Web的應用程序(.NET和SQLServer 2005)用戶表應該從安全/認證角度包含哪些字段?

我來到與以下字段:

userID 
username -- preferably email 
passwordHash 
onceUsePassword -- to indicate that the password should be changed after login 
alternativeContactEmail 
userStatusID -- FK to a lookup table with statuses like: active, diabled etc 
dateCreated 
dateUpdated 
lastPasswordUpdate 
lastLogon 
-- and then the rest like :forename, surname etc which are not of the interest in this question 

我錯過了什麼嗎?

標準標識(INT)是否足夠用於用戶標識或者應該使用GUID(用戶標識不會暴露在任何地方)?

編輯:

  • 我有限的使用.NET 1.1 (不要問...)
  • 鹽信息將與passwordHash
  • 賬戶合併將通過向用戶電子郵件地址(因此一次使用密碼字段)發送臨時的單次使用系統生成的密碼來解鎖

回答

3

爲什麼選擇n如果您仍然使用SQL Server,那麼請不要使用內置的SQL成員提供程序?由於經過很多人的測試,它比滾動自己的要好得多。

無論如何,你應該考慮添加一個鹽場你的表。

Salting

更新: .NET 1.1嗎?我想這回答我的問題。您的申請是否爲公衆消費?如果是這樣,您可能想要通過祕密問題爲他們解鎖賬戶添加一種方式。

+0

我僅限於.net 1.1,它看起來像SQL成員提供程序來自.net 2.0,但感謝您指向我 – kristof 2008-10-31 12:12:45

2

onceUsePassword - 以表明 密碼後應 登錄

如果你要那麼多解釋它改變,就應該將其重命名。像「forceChangePasswordOnLogin」。

1

如果您的數據庫受到威脅,您應該添加一個「salt」字段以使用password salting來避免使用rainbow tables的字典攻擊。

我不確定你的意思是「鹽的信息將與passwordHash合併」。這是否意味着相同的鹽被用於所有密碼哈希?爲每個散列生成一個隨機鹽會更有意義,並將其存儲在單獨的字段中。

相關問題