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