在數據庫中存儲密碼的最佳方法我正在開發一個必須具有身份驗證(用戶名和密碼)的項目它還連接到數據庫,所以我想我會在那里存儲用戶名和密碼。但是,將密碼僅僅放在數據庫中的表中的文本字段似乎不是一個好主意。我正在使用C#并連接到2008 Express服務器。任何人都可以(盡可能多的例子)建議存儲此類數據的最佳方法是什么?PS我很樂意這樣的想法,如果可以提供一個很好的理由,這些信息不會存儲在數據庫中
4 回答

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
你是正確的,將密碼存儲在純文本字段是一個可怕的想法。但是,就位置而言,對于您將要遇到的大多數情況(我真的想不出任何反例)在數據庫中存儲密碼的表示是正確的做法。通過表示我的意思是你想要使用salt(對每個用戶應該是不同的)和一個安全的單向算法來存儲密碼并存儲它,丟棄原始密碼。然后,當您要驗證密碼時,您將對該值進行散列(使用相同的散列算法和salt)并將其與數據庫中的散列值進行比較。
所以,雖然你正在思考這個并且這是一個好問題,但這實際上是這些問題的重復(至少):
為了進一步澄清鹽漬位,簡單地對密碼進行哈希處理并存儲的危險是,如果侵入者獲得了數據庫,他們仍然可以使用所謂的彩虹表來“解密”密碼(至少顯示在彩虹表中的那些)。為了解決這個問題,開發人員為密碼添加了一個鹽,如果做得好,使彩虹攻擊變得不可行。請注意,一個常見的誤解是簡單地為所有密碼添加相同的唯一和長字符串; 雖然這并不可怕,但最好為每個密碼添加獨特的鹽。閱讀本文了解更多。
添加回答
舉報
0/150
提交
取消