如何安全的在服務(wù)端儲存密碼

這幾年來屢屢發(fā)生各大網(wǎng)站用戶數(shù)據(jù)被脫褲的事件,而一些公司對于用戶信息保護(hù)意識的缺失更加加劇了這些事件的影響,那么怎么做才能夠保證用戶數(shù)據(jù)的安全呢.

首先,服務(wù)器端常見的幾種 不安全的密碼儲存方式如下

1 明文儲存

用戶注冊后,直接把用戶的密碼存入數(shù)據(jù)庫的一列中,登錄的時候取出,與用戶輸入進(jìn)行比較.

這種方式基本已經(jīng)銷聲匿跡,用于沒有什么安全要求的小網(wǎng)站,因?yàn)檫@種方式儲存的數(shù)據(jù)一旦被人拿到數(shù)據(jù)庫的權(quán)限,所有密碼都會暴露,毫無安全性可言

2 加密存儲

將用戶注冊時的密碼加密后,存儲在數(shù)據(jù)庫中 ,這種方式相對與明文存儲來說,已經(jīng)較為安全,但是驗(yàn)證的時候需要對密碼進(jìn)行解密.而且,秘鑰一旦暴露,整個數(shù)據(jù)庫密碼也有可能泄露

3 哈希存儲

哈希是一種不可逆的運(yùn)算,因此經(jīng)過哈希的密碼是不能恢復(fù)到明文的,但是仍存在很大的風(fēng)險隱患.原因如下\

很多做黑產(chǎn)的人手中都有大量的"褲子",即用戶信息數(shù)據(jù)庫,而且通常有一些其他的方式來獲取用戶名和密碼,比如中間人攻擊和釣魚.通過本數(shù)據(jù)庫內(nèi)橫向的比對,可以由一個暴露的密碼的哈希值導(dǎo)出所有相同的哈希值,得出一大批的密碼明文.

而且,哈希函數(shù)的種類十分有限,常用的只有md5和幾種sha,攻擊者通過構(gòu)建一張彩虹表(即計算出大量的常用密碼的哈希值并存入一個數(shù)據(jù)庫),來很快的找到一些哈希值的原值,從而破解密碼.

那么,什么才是正確的方式呢?

正確的方法就是:

哈希加鹽

鹽就是加在密碼后面的一段隨機(jī)字符串,加上這段字符串之后再進(jìn)行哈希這一段字符串使可以公開的,(作用與非對稱加密中的公鑰類似),但是必須足夠復(fù)雜,而且對于每個用戶來說不能夠重復(fù),以防范相同密碼進(jìn)行的撞庫等攻擊.
加鹽后也使得彩虹表失效

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容