本發(fā)明涉及一種驗(yàn)證碼驗(yàn)證方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,內(nèi)容越來越多的同時(shí),也存在反抓取、反垃圾等問題,驗(yàn)證碼是一種普遍用于拒絕機(jī)器人、腳本訪問的方式,通過驗(yàn)證碼可以區(qū)分出當(dāng)前操作請求是真人還是機(jī)器腳本,可以有效攔截惡意抓取及攻擊。
傳統(tǒng)的驗(yàn)證碼方案需要在服務(wù)端與客戶端之間保持會(huì)話,將生成的驗(yàn)證碼存儲(chǔ)于會(huì)話之中,客戶端提交驗(yàn)證碼后進(jìn)行比對。這種方法缺點(diǎn)明顯:
1.需要在服務(wù)器中存儲(chǔ)驗(yàn)證碼原文直到驗(yàn)證碼驗(yàn)證或者失效
2.需要客戶端與服務(wù)端之間保持會(huì)話
3.對分布式環(huán)境不友好。
傳統(tǒng)驗(yàn)證碼方案為避免暴露驗(yàn)證碼,需要將隨機(jī)數(shù)生成器產(chǎn)生的驗(yàn)證碼暫存在服務(wù)端,當(dāng)訪問量大時(shí),會(huì)給服務(wù)端存儲(chǔ)帶來額外負(fù)擔(dān)。在分布式環(huán)境下,需要實(shí)現(xiàn)分布式存儲(chǔ)來提供多臺(tái)服務(wù)器共同訪問此部分?jǐn)?shù)據(jù)。對于存儲(chǔ)的有效期(定時(shí)刪除過期驗(yàn)證碼)需要額外開發(fā)程序功能實(shí)現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題:針對目前的驗(yàn)證碼需要暫存在服務(wù)器中的問題,提供了一種無需存儲(chǔ)驗(yàn)證碼的驗(yàn)證方法。
本發(fā)明技術(shù)方案:
一種無需存儲(chǔ)的驗(yàn)證碼驗(yàn)證方法包括以下步驟:一、服務(wù)器生成驗(yàn)證碼,將驗(yàn)證碼加密后生成加密字符串,將加密字符串和驗(yàn)證碼一同發(fā)送給客戶端:
二、客戶端接收到加密字符串和驗(yàn)證碼后顯示,然后將加密字符串和用戶輸入的驗(yàn)證碼發(fā)送到服務(wù)器;
三、服務(wù)器將加密字符串解密后得到驗(yàn)證碼,與客戶端發(fā)送過來的用戶輸入驗(yàn)證碼進(jìn)行對比,判斷其是否一致。
在步驟一中,服務(wù)器還生成時(shí)間戳,將驗(yàn)證碼和時(shí)間戳拼合后加密,在步驟三中還要對比收到時(shí)間是否和時(shí)間戳在一個(gè)規(guī)定時(shí)間差內(nèi)。
使用對稱加密算法進(jìn)行加密和解密。
本發(fā)明的有益效果:
該方法無須任何存儲(chǔ)或緩存,無須在客戶端與服務(wù)端之間保持會(huì)話,不論在單服務(wù)器還是分布式環(huán)境下都可以工作,校驗(yàn)前后兩次請求不需要落在同一臺(tái)服務(wù)器上,可以無任何附加條件地橫向擴(kuò)容。
附圖說明:
圖1為本發(fā)明方法的流程示意圖。
具體實(shí)施方式:
實(shí)施例:在服務(wù)器中有隨機(jī)數(shù)生成器和密匙管理單元,實(shí)現(xiàn)步驟如下:
1.使用隨機(jī)數(shù)生成器生成驗(yàn)證碼。
2.將驗(yàn)證碼和當(dāng)前時(shí)間戳拼合在一起,使用對稱加密算法,得到密文,發(fā)送到客戶端,同時(shí)也將驗(yàn)證碼以圖片、語音、短信等方式發(fā)送給用戶,用以鑒別是真人還是機(jī)器腳本。
3.客戶端如果是真人,則可以識(shí)別出驗(yàn)證碼,填寫驗(yàn)證碼后,客戶端將密文及用戶輸入的驗(yàn)證碼一起提交回服務(wù)端。
4.服務(wù)端接受到密文后使用對稱加密算法解密得到驗(yàn)證碼原文及時(shí)間戳,通過原文可以比對用戶輸入的驗(yàn)證碼是否正確,通過時(shí)間戳可以比對驗(yàn)證碼是否過期。
如果加密串一經(jīng)破解,則通過對密鑰管理單元存儲(chǔ)的密鑰進(jìn)行修改,即各服務(wù)器可快速經(jīng)過共享密鑰服務(wù)器快速對新的加密、解密算法及時(shí)更正密鑰。
對稱加密算法的選擇可以采用AES(高級加密標(biāo)準(zhǔn))算法或3DES(三重?cái)?shù)據(jù)加密算法)等國際公開、經(jīng)受過理論與實(shí)際雙重驗(yàn)證的算法。由于密鑰只存在于服務(wù)端,容易保護(hù),即使遭受保利破解導(dǎo)致密鑰泄露,也只需要重新生成一組密鑰,幾乎無任何成本。