摘 要:依照軟件工程中軟件開發(fā)的相關(guān)理論對(duì)系統(tǒng)進(jìn)行了分析和設(shè)計(jì),建立了系統(tǒng)的層次框架模型,分析了個(gè)人密碼線上存取網(wǎng)站的流程圖,綜合利用PHP、MYSQL、HTML的相關(guān)技術(shù)開發(fā)了存取網(wǎng)站,在保障密碼安全性和存儲(chǔ)密碼實(shí)用性起著重要的作用。
關(guān)鍵詞:個(gè)人密碼;線上存取網(wǎng)站;密碼管理
前言
隨著互聯(lián)網(wǎng)絡(luò)的飛速發(fā)展,各種網(wǎng)站正以驚人的速度在增長(zhǎng)。相對(duì)應(yīng)需要記憶的賬號(hào)和對(duì)應(yīng)的密碼數(shù)量也成倍的增長(zhǎng),這就使得密碼的存儲(chǔ)和記憶成了一個(gè)難題。個(gè)人密碼線上存取網(wǎng)站是計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫(kù)技術(shù)相結(jié)合的現(xiàn)代網(wǎng)絡(luò)在線的個(gè)人密碼加密存儲(chǔ)和提取的平臺(tái)??梢允箯V大用戶改變以往使用單一密碼出現(xiàn)安全性的問(wèn)題,又可以避免賬號(hào)密碼繁多記不住的情況。
1 網(wǎng)站的模塊劃分
個(gè)人密碼線上存取網(wǎng)站的總體設(shè)計(jì)思想是提供便捷和安全的密碼存取服務(wù)。把網(wǎng)站按照功能劃分為用戶管理模塊、密碼管理模塊、操作記錄模塊、在線客服模塊和加密模塊。為了能使得各模塊功能在數(shù)據(jù)傳遞和信息處理上得到最大的效率及功能擴(kuò)展的方便性,所以要使各模塊之間的關(guān)系符合“高內(nèi)聚,低耦合”的原則,并且該原則是模塊化軟件設(shè)計(jì)中必須遵循的基礎(chǔ)線。在該系統(tǒng)中,為了合理的管理與操作,把系統(tǒng)劃分為以下個(gè)模塊:
1.1 用戶管理模塊
用戶的注冊(cè)和登錄頁(yè)面為同一個(gè)頁(yè)面。當(dāng)用戶名不存在的時(shí)候,則會(huì)自動(dòng)創(chuàng)建用戶,并彈出“注冊(cè)確認(rèn)框”,此時(shí)只要點(diǎn)擊“確認(rèn)注冊(cè)”,即可完成注冊(cè)。用戶名和密碼則為在“注冊(cè)/登錄”頁(yè)面所填寫的用戶名和密碼。當(dāng)用戶存在而所填寫的密碼錯(cuò)誤,則會(huì)提示密碼錯(cuò)誤,并要求重新輸入。當(dāng)用戶名存在而且密碼填寫正確,則會(huì)顯示“用戶中心”頁(yè)面。此時(shí),就可以通過(guò)本網(wǎng)站實(shí)現(xiàn)密碼的線上存取。在該模塊中可以創(chuàng)建普通的客戶資料信息,還可以對(duì)具有管理員身份的特權(quán)用戶進(jìn)行管理。
1.2 密碼管理模塊
用戶通過(guò)簡(jiǎn)單的注冊(cè)后,就可以實(shí)現(xiàn)密碼的線上存取。用戶通過(guò)自己輸入的備注來(lái)標(biāo)識(shí)和區(qū)分存入的密碼。每個(gè)密碼對(duì)應(yīng)著唯一的備注,用戶在存入密碼時(shí),備注會(huì)作為必填項(xiàng)與密碼一同上傳至服務(wù)器。通過(guò)備注,用戶就可以準(zhǔn)確地取出相應(yīng)的密碼。密碼管理模塊是密碼存取操作的核心,在該模塊中可以采用一些優(yōu)化的函數(shù)模塊來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,可以通過(guò)一些特殊的數(shù)據(jù)關(guān)系,以優(yōu)化密碼的存儲(chǔ)。
1.3 操作記錄模塊
用戶從注冊(cè)開始,系統(tǒng)就會(huì)自動(dòng)記錄用戶的操作記錄以供用戶查詢。從用戶名的注冊(cè)時(shí)間、登錄記錄到密碼的存取時(shí)間,系統(tǒng)都會(huì)完整地記錄以供用戶核查。
1.4 在線客服模塊
在線客服為管理員與用戶交流的工具,管理員可通過(guò)此工具接收用戶的反饋信息,并提供帳號(hào)的密碼找回和解凍等帳號(hào)安全服務(wù)。在線客服需要驗(yàn)證客戶提供的相關(guān)資料,以保證信息的修改返回給正確的用戶,避免信息泄露。
1.5 加密、解密模塊
B/S端使用Diffie-Hellman密鑰交換算法獲取密鑰后,使用對(duì)稱加密的方式對(duì)發(fā)送的消息進(jìn)行加密處理,同樣通過(guò)加密的相反過(guò)程,利用加密時(shí)發(fā)送的密文信息進(jìn)行解密。這個(gè)模塊是該系統(tǒng)中的重點(diǎn)核心,密碼的安全性在該模塊尤為重要。
系統(tǒng)運(yùn)行中各模塊功能之間的關(guān)系如圖1所示。
2 網(wǎng)站的模塊設(shè)計(jì)
該系統(tǒng)采用的是B/S結(jié)構(gòu),最方便的是用戶在操作和配置方面簡(jiǎn)單,用戶只需要將密碼和相對(duì)應(yīng)的用戶名經(jīng)過(guò)簡(jiǎn)單的界面操作,就可以實(shí)現(xiàn),這也是B/S結(jié)構(gòu)最方便的地方。客戶端的類設(shè)計(jì)如圖2所示。
圖2 客戶類圖
客戶端操作主動(dòng)刷新頁(yè)面來(lái)獲取更新數(shù)據(jù)傳輸,服務(wù)器端利用Websocket控件進(jìn)行客戶端的連接,這樣就不需要主動(dòng)地向?qū)Ψ秸?qǐng)求數(shù)據(jù),這樣做既簡(jiǎn)單又節(jié)省系統(tǒng)、網(wǎng)絡(luò)資源。用戶的密碼存取操作活動(dòng)圖如圖3所示。
圖3 用戶存取密碼活動(dòng)圖
對(duì)于用戶的密碼,為了安全性存放,必須先對(duì)其進(jìn)行加密碼,然后再存儲(chǔ),并且對(duì)于后期需要進(jìn)行密碼解密時(shí),也提供了方便性,所以在對(duì)密碼存儲(chǔ)的時(shí)候,我們應(yīng)該使用一種比較安全并且快捷解密的方法。根據(jù)密碼加密和解密的可逆性,在選擇算法時(shí)可以使用比較安全的Diffie-Hellman密鑰交換算法,并且我們可以在對(duì)密碼取出后傳送給用戶的方式上采用多種方式,比如電子郵件、手機(jī)短信等方式,為了更進(jìn)一步的安全檢驗(yàn),需要對(duì)用戶身份進(jìn)行鑒別。為了防止密碼數(shù)據(jù)由于某些原因出現(xiàn)了丟失或者破壞,能夠?qū)崿F(xiàn)這種情況下對(duì)丟失的密碼進(jìn)行恢復(fù)。在密碼存儲(chǔ)的解決策略中應(yīng)該要注意以下幾個(gè)方面:
(1)為了數(shù)據(jù)存儲(chǔ)的安全性,采用mySQL數(shù)據(jù)庫(kù)存儲(chǔ),并且在數(shù)據(jù)庫(kù)中采用授權(quán)限制的方式進(jìn)行訪問(wèn),并且要求提供受限制訪問(wèn)的注冊(cè)鍵。
(2)為了防止各客戶端的用戶產(chǎn)生不相同的密碼,我們可以采用SALT 技術(shù)進(jìn)行控制。
(3)為了使用密碼的安全性,采用二進(jìn)制方式進(jìn)行存儲(chǔ),采用BASE64 編碼。
在本系統(tǒng)中,考慮系統(tǒng)的安全性、易操作性,以及與選用的PHP編程語(yǔ)言兼容,采用MySQL作為本系統(tǒng)的數(shù)據(jù)庫(kù)管理系統(tǒng)。分別為用戶信息表和密碼信息表建立觸發(fā)器和用于儲(chǔ)存查詢次數(shù)的字段(查詢次數(shù)),其默認(rèn)值為0。當(dāng)用戶發(fā)起查詢密碼請(qǐng)求時(shí),服務(wù)器先把查詢次數(shù)增加1,這時(shí)相關(guān)的觸發(fā)器會(huì)把當(dāng)前的查詢操作保存至操作記錄表中,當(dāng)數(shù)據(jù)庫(kù)返回處理結(jié)果為保存成功時(shí),才會(huì)開始執(zhí)行查詢操作。
3 結(jié)束語(yǔ)
個(gè)人密碼線上存取網(wǎng)站既可以避免密碼單一帶來(lái)的盜號(hào)風(fēng)險(xiǎn),又可以解決密碼太多、太復(fù)雜所造成的密碼容易忘記的問(wèn)題。個(gè)人密碼線上存取網(wǎng)站使用的HTML5頁(yè)面,可以帶來(lái)更便捷和安全的密碼存取服務(wù)。傳輸加密和提供可查詢操作記錄服務(wù)為密碼存取的安全提供了保障。
參考文獻(xiàn)
[1]屈喜龍,朱杰,等.PHP開發(fā)動(dòng)態(tài)網(wǎng)站實(shí)例薈萃[M].北京:機(jī)械工業(yè)出版社,2006:3.
[2]徐峰.基于MySQL的PHP數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)[J].計(jì)算機(jī)時(shí)代,2001(2).
[3]Matt Zandstra.深PHP:面向?qū)ο蟆⒛J脚c實(shí)踐(第3版)[M].北京:人民郵電出版社,2011.
[4]apache(Web服務(wù)器)[EB/OL],[2015-01-31],http://baike.baidu.com/subview/28283/5418752.htm.
[5]張志遠(yuǎn).JavaScript與客戶端安全[J].東莞理工學(xué)院學(xué)報(bào),2002(2).
[6]Alfred J. Menezes.等.應(yīng)用密碼學(xué)手冊(cè)[M].胡磊譯.北京:電子工業(yè)出版社,2005.