原創|行業資訊|編輯:龔雪|2014-06-19 09:32:50.000|閱讀 212 次
概述:hash算法在一定程度上對Web用戶的密碼存儲安全非常有效,但還遠遠達不到安全需求。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
大多數的web開發者都會遇到設計用戶賬號系統的需求。賬號系統最重要的一個方面就是如何保護用戶的密碼。
Hash算法是一種單向的函數。它可以把任意數量的數據轉換成固定長度的“指紋”,這個過程是不可逆的。而且只要輸入發生改變,哪怕只有一個bit,輸出 的hash值也會有很大不同。這種特性恰好合適用來用來保存密碼。因為我們希望使用一種不可逆的算法來加密保存的密碼,同時又需要在用戶登陸的時候驗證密碼是否正確。
舉例:
hash("hello")=2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
hash("hbllo")=58756879c05c68dfac9866712fad6a93f8146f337a69afe7dd238f3364946366
hash("waltz")=c0e81794384491161f1777c232bc6bd9ec38f616560b120fda8e90f383853542
在一個使用hash的賬號系統中,用戶注冊和認證的大致流程如下:
在步驟4的時候不要告訴用戶是賬號還是密碼錯了。只需要顯示一個通用的提示,比如賬號或密碼不正確就可以了。這樣可以防止攻擊者枚舉有效的用戶名。
還需要注意的是用來保護密碼的hash函數跟數據結構課上見過的hash函數不完全一樣。比如實現hash表的hash函數設計的目的是快速,但是不夠安 全。只有加密hash函數(cryptographic hash functions)可以用來進行密碼的hash。這樣的函數有SHA256, SHA512, RipeMD, WHIRLPOOL等。
一個常見的觀念就是密碼經過hash之后存儲就安全了。這顯然是不正確的。有很多方式可以快速的從hash恢復明文的密碼。還記得那些md5破解網站吧,只需要提交一個hash,不到一秒鐘就能知道結果。顯然,單純的對密碼進行hash還是遠遠達不到安全需求。慧都提供網絡安全技術資源,或許能助Web開發者一臂之力。
通信安全工具:
IP*Works! Internet Toolkit v9.0
IP*Works! S/MIME v9.0 IP*Works! SSH IP*Works! SSL
代碼混淆工具:
.NET Reactor v4.9 Dotfuscator DashO Pro v7.3
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn