給你的網(wǎng)站“加把鎖” 動態(tài)口令輕松實(shí)現(xiàn) |
發(fā)布時間: 2012/8/24 11:13:18 |
隨著網(wǎng)絡(luò)的全面普及,網(wǎng)絡(luò)安全問題也日趨嚴(yán)峻。暨著名的技術(shù)交流社區(qū)CSDN爆出600余萬用戶明文密碼暴露事件之后,天涯社區(qū)4000萬用戶明文密碼也泄漏于世,緊跟著人人網(wǎng)、開心網(wǎng)、貓撲等,甚至京東商城、當(dāng)當(dāng)網(wǎng)、支付寶這樣的電商網(wǎng)站都相繼爆出密碼泄露問題,幾百萬上千萬的用戶資料赤裸裸的暴露在公開的網(wǎng)絡(luò)平臺之上,讓我們不由的擔(dān)心起網(wǎng)絡(luò)日益嚴(yán)峻的安全問題。
現(xiàn)如今,很多電商及銀行的網(wǎng)站都采用了動態(tài)密碼服務(wù),大大的保障了用戶的信息和資金安全,主要方式有: 1、動態(tài)口令卡:類似于刮刮卡形式,通過橫豎兩個指標(biāo)來確定當(dāng)前密碼。 常見:銀行口令卡等; 缺點(diǎn):需要隨身攜帶,且容易被復(fù)制或拍照記下,安全性相對不高,并且有限次使用。 2、硬件令牌:根據(jù)專門的算法(一般為時間算法)生成一個不可預(yù)測的隨機(jī)數(shù)字組合,每個密碼只能使用一次,或類似于U盾一類的需插入硬件進(jìn)行數(shù)據(jù)比對。 常見:U盾、QQ令牌等; 缺點(diǎn):需要隨身攜帶,使用較為繁瑣,并且要花費(fèi)不少硬件成本; 3、手機(jī)口令:一種是通過軟件來實(shí)現(xiàn)動態(tài)口令的生成,另一種較為簡單,通過短信獲取驗(yàn)證碼來確認(rèn)身份; 常見:QQ手機(jī)令牌,支付寶付款手機(jī)驗(yàn)證碼等; 缺點(diǎn):需要和手機(jī)綁定,如遇更換手機(jī)號則較為麻煩,有時還會遇到延時或無法接收,網(wǎng)站需部署短信平臺,大量短信需要不少成本; 以上各種方式各有其優(yōu)點(diǎn),但都有一個很大的問題,就是不適合中小網(wǎng)站部署,都需要耗費(fèi)大量的時間成本和資金成本,且給用戶增加了很多負(fù)擔(dān);那么有沒有一種更為方便快捷并且無需成本的安全口令解決方案呢? 筆者通過多年的網(wǎng)絡(luò)建設(shè)經(jīng)驗(yàn),總結(jié)并發(fā)明了一種簡單并行之有效的動態(tài)口令實(shí)施方案,且適用各類語言編寫的網(wǎng)站,中小網(wǎng)站均可快速部署。 中小網(wǎng)站用戶登錄常用的方式為:“用戶名+密碼” 或 “用戶名+密碼+驗(yàn)證碼”;即便采用了MD5加密,也無法保證客戶密碼不會泄露,因?yàn)槊艽a的輸入過程有可能被旁邊的人看到,或者電腦后臺的木馬記錄,如果要解決這個問題,那只有一個辦法,讓看到的人或監(jiān)聽密碼的木馬上當(dāng),也就是說,他們看到或者記錄到的密碼并不是真正的密碼,因?yàn)槊艽a隨時都在變化! 具體解決方法:原有的“用戶名+密碼”的選項(xiàng)可以繼續(xù)保留(驗(yàn)證碼完全可以取消),增加一欄動態(tài)密碼框,驗(yàn)證需要三項(xiàng)結(jié)果匹配才能登陸。 下面就來重點(diǎn)解釋一下如何設(shè)計(jì)動態(tài)密碼框:筆者采用的方式是利用“時間算法”來生成動態(tài)口令,因?yàn)闀r間是每分每秒都在變化的,用時間來做算法,可以確保動態(tài)口令的時效性,即:上一秒的密碼在下一秒就失效了。舉例,現(xiàn)在時間是“14:28分54秒”,則動態(tài)密碼可以設(shè)定為“142854”,后臺獲取當(dāng)前時間設(shè)為“A”,輸入框的值為“B”,當(dāng)輸入“142854”時,則“B=A” 驗(yàn)證通過!為了避免輸入的時間差,可以在前臺把時間直接賦值給“A”,然后在后臺進(jìn)行比對。 當(dāng)然,在實(shí)際運(yùn)用中,我們不可能直接把時間作為動態(tài)口令,這樣不但太過簡單,而且無法多人共用這個體系,因此,我們要在“時間”的基礎(chǔ)上來做文章,即設(shè)定每個人特定的算法。還是以上面的時間“14:28分54秒”為例,我們現(xiàn)在進(jìn)行拆分,并加強(qiáng)算法,為了便于記憶,我將時間分為三個部分“14、28、54”,并以數(shù)字“365”作為附加口令,算式如下:“14×3、28+6、54+5”,即最終動態(tài)密碼實(shí)際為“423459”,除了你之外,別人根本無法得知“423459”是從何而來,如果被別人不小心看到或者木馬記錄下了這個數(shù)字,那也無需擔(dān)心,因?yàn),這個密碼下一秒便失效了,別人沒有你的算法,也就無法得知當(dāng)前的動態(tài)密碼是什么。如果希望更加的安全,我們設(shè)置可以在此基礎(chǔ)上不斷的變化,比如引入“+-×÷”,附加口令也可以是任意自己易記的數(shù)字,如生日、身份證號等,“時間+附加碼”通過特定算法隨意組合。 OK,大功告成!這樣的密碼除了設(shè)定者本人以外,任誰也想不到是如何得來的,而且每秒都在變化,最關(guān)鍵的是,對于程序員來說,只需短短10分鐘便可部署完畢! 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |