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