close



作為軟件開發者,其中最重要的一個責任就是保護用戶的個人信息,如果用戶沒有相關技術知識,他們在使用我們服務的時候,別無選擇隻能信任我們。可惜的是,當我們調查關於密碼處理的時候,我們發現有各種不同的處理方式,而這些方式有很多都不安全。雖然不可能構建一個完全安全的系統,但我們可以通過一些簡單的步驟讓我們的密碼存儲足夠安全。



別辜負信任 如何讓密碼存儲足夠安全



不應該:



首先讓我們看看當我們構建一個需要用戶認證的系統的時候不應該怎麼做。



●在不得已的時候不要自己存儲用戶的認證信息。我們可以考慮使用OAuth的提供者例如Google、Facebook。如果構建企業內部的應用,可以考慮使用已有的內部認證服務,例如企業LDAP或者Kerberos服務。無論是面向公眾的還是面向內部的應用程序,用戶會喜歡這個應用,因為他不需要多記住一個ID和密碼,同時也少瞭受黑客攻擊的危險。



●如果你必須存儲認證信息,不要存儲明文密碼。這句話就不解釋瞭。



●不要使用可逆的加密方式,除非你在某種狀況下真的需要查出來明文密碼。因為在進行用戶身份驗證的時候並不需要明文密碼去比對。



●不要使用過時的哈希算法,例如md5,在現在這個社會,有人可以通過構建一個超大的md5庫來反向的查詢出明文。換句話說md5哈希基本上沒什麼用,你要是不相信可以拿這個密文(569a70c2ccd0ac41c9d1637afe8cd932)去md5hacker上看看,幾秒內就可以查出明文瞭。



應該:



說完瞭不應該做的,就說說應該做的:



●選擇一個單向(不可逆)的加密算法。就像我上面說的一樣,僅僅存儲加密後的用戶密碼,用戶每次認證就使用相同的算法加密後比對就可以瞭。



●選擇一個你的應用可以承受的最慢的加密算法。任何現代的加密算法都支持在加密的時候接受參數從而使加密時間延長,而解密也自然就更難。(例如PBKDF2,可以通過制定迭代的次數來實現)。為什麼慢瞭好呢?因為用戶幾乎不會關心他為瞭認證自己的賬戶額外的花銷瞭100ms。但是黑客就不同瞭,當他進行上10億次的嘗試計算的時候,就有他喝一壺的瞭。



●選擇一個流行的算法。美國國傢標準與技術研究院推薦使用PBKDF2加密密碼。




Orignal From: 別辜負信任 如何讓密碼存儲足夠安全

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 x0z7blog01 的頭像
    x0z7blog01

    x0z7blog01的部落格

    x0z7blog01 發表在 痞客邦 留言(0) 人氣()