本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及一種驗(yàn)證方法及系統(tǒng)。
背景技術(shù):
目前,對(duì)于具有賬號(hào)登錄的應(yīng)用系統(tǒng),一般都會(huì)是客戶端首先進(jìn)行注冊(cè),注冊(cè)完后使用賬戶名和密碼進(jìn)行登錄驗(yàn)證。對(duì)于一般不是特別重要的系統(tǒng)采用上述方法都可以解決客戶端和服務(wù)器的驗(yàn)證過程。而對(duì)于一些比較重要的系統(tǒng),則僅僅使用賬戶登錄系統(tǒng)不足以保證客戶端的合法性,所以會(huì)在客戶端和服務(wù)器之間增加額外的協(xié)議來(lái)驗(yàn)證一個(gè)客戶端的合法性。
現(xiàn)有技術(shù)中的做法是在客戶端和服務(wù)器之間使用非對(duì)稱加密算法來(lái)驗(yàn)證客戶端的合法性,而目前非對(duì)稱加密算法都是公開的并且開源的,很容易從其代碼特征中確定出對(duì)應(yīng)的加密算法是什么,從而HACK可以從網(wǎng)絡(luò)上找到對(duì)應(yīng)算法的代碼,可以比較容易的冒充虛假客戶端來(lái)登錄服務(wù)器。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)存在的問題,本發(fā)明實(shí)施例提供了一種驗(yàn)證方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中在驗(yàn)證客戶端時(shí),不易驗(yàn)證出偽客戶端的技術(shù)問題。
本發(fā)明提供一種驗(yàn)證方法,所述驗(yàn)證方法包括:
服務(wù)器通過第一通信信道接收第一獲取請(qǐng)求,基于所述第一獲取請(qǐng)求發(fā)送第一驗(yàn)證數(shù)據(jù);
通過第二通信信道接收第一驗(yàn)證結(jié)果,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的;
判斷所述第一驗(yàn)證結(jié)果是否正確,若所述第一驗(yàn)證結(jié)果正確,通過所述第二通信信道發(fā)送第一確認(rèn)信息;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
上述方案中,所述判斷所述第一驗(yàn)證結(jié)果是否正確,包括:
讀取配置文件中的計(jì)算結(jié)果;
將所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果進(jìn)行比較,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果一致,則確定所述第一驗(yàn)證結(jié)果正確;其中,所述計(jì)算結(jié)果是預(yù)先根據(jù)預(yù)設(shè)的校驗(yàn)數(shù)據(jù),通過所述驗(yàn)證算法計(jì)算得出的。
上述方案中,預(yù)先構(gòu)造驗(yàn)證算法,包括:
構(gòu)造驗(yàn)證算法函數(shù);
在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作;
在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作;
在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;
在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作。
上述方案中,在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:
調(diào)用API函數(shù)memcpy;
根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
本發(fā)明還提供一種驗(yàn)證方法,所述方法包括:
客戶端通過第一通信信道發(fā)送第一獲取請(qǐng)求,使得服務(wù)器能基于所述第一獲取請(qǐng)求返回第一驗(yàn)證數(shù)據(jù);
利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù),獲取第一驗(yàn)證結(jié)果,并通過第二通信信道發(fā)送所述第一驗(yàn)證結(jié)果,使得所述服務(wù)器能判斷所述第一驗(yàn)證結(jié)果是否正確;
若所述第一驗(yàn)證結(jié)果正確,則通過所述第二通信信道接收第一確認(rèn)信息;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;其中,所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
上述方案中,在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:
調(diào)用API函數(shù)memcpy;
根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
本發(fā)明還提供一種驗(yàn)證方法,所述方法包括:
客戶端通過第一通信信道服務(wù)器向發(fā)送第一獲取請(qǐng)求;
服務(wù)器基于所述第一獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第一驗(yàn)證數(shù)據(jù);
客戶端根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果,并通過第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果;
服務(wù)器判斷所述第一驗(yàn)證結(jié)果是否正確,若所述第一驗(yàn)證結(jié)果正確,通過所述第二通信信道向所述客戶端發(fā)送第一確認(rèn)信息;
其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
本發(fā)明提供一種服務(wù)器,所述服務(wù)器包括:
第一接收單元,用于通過第一通信信道接收第一獲取請(qǐng)求,及通過第二通信信道接收第一驗(yàn)證結(jié)果,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的;
第一發(fā)送單元,用于基于所述第一獲取請(qǐng)求發(fā)送第一驗(yàn)證數(shù)據(jù);及通過所述第二通信信道發(fā)送第一確認(rèn)信息;
判斷單元,判斷所述第一驗(yàn)證結(jié)果是否正確;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
本發(fā)明提供一種客戶端,所述客戶端包括:
第二發(fā)送單元,用于通過第一通信信道發(fā)送第一獲取請(qǐng)求,使得服務(wù)器能基于所述第一獲取請(qǐng)求返回第一驗(yàn)證數(shù)據(jù);及通過第二通信信道發(fā)送所述第一驗(yàn)證結(jié)果,使得所述服務(wù)器能判斷所述第一驗(yàn)證結(jié)果是否正確;
計(jì)算單元,用于利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù),獲取第一驗(yàn)證結(jié)果;
第二接收單元,用于通過所述第二通信信道接收第一確認(rèn)信息;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。
本發(fā)明提供一種驗(yàn)證系統(tǒng),所述系統(tǒng)包括:
客戶端,用于通過第一通信信道服務(wù)器向發(fā)送第一獲取請(qǐng)求;
服務(wù)器,用于基于所述第一獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第一驗(yàn)證數(shù)據(jù);
客戶端,用于根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果,并通過第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果;
服務(wù)器,用于判斷所述第一驗(yàn)證結(jié)果是否正確,若所述第一驗(yàn)證結(jié)果正確,通過所述第二通信信道向所述客戶端發(fā)送第一確認(rèn)信息;
其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
本發(fā)明提供了一種驗(yàn)證方法及系統(tǒng),所述驗(yàn)證方法包括:服務(wù)器通過第一通信信道接收第一獲取請(qǐng)求,基于所述第一獲取請(qǐng)求發(fā)送第一驗(yàn)證數(shù)據(jù);通過第二通信信道接收第一驗(yàn)證結(jié)果,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的;判斷所述第一驗(yàn)證結(jié)果是否正確,若所述第一驗(yàn)證結(jié)果正確,通過所述第二通信信道發(fā)送第一確認(rèn)信息;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯;如此,因所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯,提高了所述驗(yàn)證算法的復(fù)雜度,使得HACK不容易從網(wǎng)絡(luò)上找到對(duì)應(yīng)算法的代碼,可以避免更精確地驗(yàn)證客戶端的合法性,并且在驗(yàn)證過程中,利用兩種不同的通信信道來(lái)進(jìn)行數(shù)據(jù)交互,進(jìn)一步提高了驗(yàn)證過程的安全性。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例提供的驗(yàn)證系統(tǒng)整體結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例提供的客戶端與服務(wù)器的數(shù)據(jù)交互示意圖;
圖3為本發(fā)明實(shí)施例提供的驗(yàn)證方法的流程示意圖;
圖4為本發(fā)明實(shí)施例提供的又一驗(yàn)證方法的流程示意圖;
圖5為本發(fā)明實(shí)施例提供的驗(yàn)證服務(wù)器的整體結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的客戶端的整體結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了在驗(yàn)證客戶端時(shí),提高驗(yàn)證的精確性,本發(fā)明提供了一種驗(yàn)證方法及系統(tǒng),所述驗(yàn)證方法包括:服務(wù)器通過第一通信信道接收第一獲取請(qǐng)求,基于所述第一獲取請(qǐng)求發(fā)送第一驗(yàn)證數(shù)據(jù);通過第二通信信道接收第一驗(yàn)證結(jié)果,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的;判斷所述第一驗(yàn)證結(jié)果是否正確,若所述第一驗(yàn)證結(jié)果正確,通過所述第二通信信道發(fā)送第一確認(rèn)信息;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
下面通過附圖及具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)說(shuō)明。
實(shí)施例一
在介紹本發(fā)明的方法實(shí)施例之前,先介紹本發(fā)明實(shí)施例中驗(yàn)證系統(tǒng)架構(gòu),如圖1所示,該系統(tǒng)包括:客戶端101和服務(wù)器102。服務(wù)器102如圖1所示,可與N個(gè)客戶端101實(shí)現(xiàn)通信連接,N為自然數(shù),其中,客戶端101、服務(wù)器102之間的通信方式可以是有線通信,也可以是無(wú)線通信,所述客戶端101具體可以是智能手機(jī),也可以是平板電腦,還可以是智能穿戴設(shè)備等等,本申請(qǐng)對(duì)此不作限定。
如圖2所示,所述客戶端101與所述服務(wù)器102之間的數(shù)據(jù)交互過程如下:
S1,客戶端通過第一通信信道服務(wù)器向發(fā)送第一獲取請(qǐng)求。
本步驟中,在驗(yàn)證客戶端的合法性時(shí),客戶端需要通過第一通信信道向所述服務(wù)器發(fā)送第一獲取請(qǐng)求,以獲取驗(yàn)證數(shù)據(jù);其中,所述第一通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道、或其他可以在客戶端與服務(wù)器之間進(jìn)行通信的協(xié)議等。
S2,服務(wù)器基于所述第一獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第一驗(yàn)證數(shù)據(jù)。
當(dāng)所述服務(wù)器接收到第一獲取請(qǐng)求后,會(huì)基于所述第一獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第一驗(yàn)證數(shù)據(jù)。其中,將第一驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第一驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等。
S3,客戶端根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果,并通過第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果。
本步驟中,當(dāng)客戶端接收到第一驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果。其中,所述第二通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道等,且其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
這里,預(yù)先構(gòu)造驗(yàn)證算法,包括:構(gòu)造驗(yàn)證算法函數(shù);所述驗(yàn)證算法函數(shù)一般是以字符串表示;為了提高驗(yàn)證算法的復(fù)雜度,可以在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作。
具體地,在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作時(shí),邏輯運(yùn)算可以是對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除、邏輯異或等操作,此操作可以是無(wú)序及無(wú)邏輯的,加入的邏輯運(yùn)算條數(shù)可以加入任意多條,條數(shù)越多復(fù)雜度越大。
在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作時(shí),包括:確定循環(huán)計(jì)數(shù),在所述驗(yàn)證算法函數(shù)數(shù)據(jù)結(jié)構(gòu)中添加相應(yīng)的循環(huán)計(jì)數(shù),以循環(huán)執(zhí)行上述的邏輯運(yùn)算。實(shí)際應(yīng)用中,會(huì)在多處加入循環(huán)計(jì)數(shù),避免HACK輕易分析出該驗(yàn)證算法,因?yàn)檠h(huán)邏輯會(huì)一直在相應(yīng)的邏輯運(yùn)算中執(zhí)行,直到循環(huán)計(jì)數(shù)計(jì)數(shù)完畢。
為了進(jìn)一步提高驗(yàn)證算法的復(fù)雜度,在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;因?yàn)樗鲵?yàn)證算法是由循環(huán)語(yǔ)句和運(yùn)算邏輯組成,那么可通過跳轉(zhuǎn)語(yǔ)句從一個(gè)邏輯運(yùn)算跳轉(zhuǎn)到另一個(gè)邏輯運(yùn)算,然后等計(jì)算完后再跳轉(zhuǎn)回來(lái),那么從整個(gè)驗(yàn)證算法的結(jié)構(gòu)看,會(huì)使得整個(gè)結(jié)構(gòu)從一個(gè)地方跳轉(zhuǎn)到另一個(gè)地方,從而增加代碼調(diào)試和分析的復(fù)雜度。
另外,為了避免通過讀寫訪問跟蹤到算法的代碼邏輯,本實(shí)施例還在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:調(diào)用API函數(shù)memcpy;根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
實(shí)際應(yīng)用時(shí),在驗(yàn)證算法內(nèi)部使用了很多的內(nèi)存拷貝操作,將一個(gè)數(shù)據(jù)從一塊內(nèi)存拷貝到另一塊內(nèi)存,數(shù)據(jù)所在的內(nèi)存地址每拷貝一次就會(huì)變化一次。這樣對(duì)于HACK調(diào)試跟蹤起來(lái)會(huì)麻煩很多。
S4,服務(wù)器判斷所述第一驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第一確認(rèn)信息。
本步驟中,當(dāng)服務(wù)器通過第二通信信道接收到第一驗(yàn)證結(jié)果后,服務(wù)器判斷所述第一驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第一確認(rèn)信息。
所述服務(wù)器判斷所述第一驗(yàn)證結(jié)果是否正確,包括:讀取配置文件中的計(jì)算結(jié)果;將所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果相比較,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果一致,則確定所述第一驗(yàn)證結(jié)果正確;其中,所述計(jì)算結(jié)果是預(yù)先根據(jù)預(yù)設(shè)的校驗(yàn)數(shù)據(jù),通過所述驗(yàn)證算法計(jì)算得出的。
這里,為了減輕服務(wù)器的在線處理壓力,會(huì)預(yù)先設(shè)置一些校驗(yàn)數(shù)據(jù),然后通過該驗(yàn)證算法計(jì)算得到計(jì)算結(jié)果,并將該結(jié)果放置到配置文件中,這樣,在實(shí)時(shí)進(jìn)行數(shù)據(jù)交互時(shí),服務(wù)器就無(wú)需進(jìn)行實(shí)時(shí)計(jì)算,可以直接從配置文件中讀取計(jì)算結(jié)果。
并且,為了進(jìn)一步提高驗(yàn)證的安全性,在確定所述第一驗(yàn)證結(jié)果正確時(shí),服務(wù)器還進(jìn)行第二次驗(yàn)證,具體地:
當(dāng)所述客戶端接收到第一確認(rèn)信息時(shí),會(huì)通過所述第一通信信道向所述服務(wù)器發(fā)送第二獲取請(qǐng)求,當(dāng)所述服務(wù)器接收到第二獲取請(qǐng)求后,會(huì)基于所述第二獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第二驗(yàn)證數(shù)據(jù)。其中,將第二驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第二驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等,且第二驗(yàn)證數(shù)據(jù)中包含第一驗(yàn)證結(jié)果。
當(dāng)客戶端接收到第二驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第二驗(yàn)證數(shù)據(jù)得出第二驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第二驗(yàn)證結(jié)果。其中,第二次使用的驗(yàn)證算法的運(yùn)算邏輯應(yīng)該比第一次驗(yàn)證使用的驗(yàn)證算法的運(yùn)算邏輯更復(fù)雜。
當(dāng)服務(wù)器通過第二通信信道接收到第二驗(yàn)證結(jié)果后,服務(wù)器判斷所述第二驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第二確認(rèn)信息,說(shuō)明該客戶端是個(gè)合法的客戶端。
當(dāng)然,如果想進(jìn)一步提高驗(yàn)證的安全性,還可以進(jìn)行多次驗(yàn)證,可以以具體情況確定驗(yàn)證次數(shù)。
進(jìn)一步地,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果不一致,則確定所述第一驗(yàn)證結(jié)果錯(cuò)誤;則說(shuō)明該客戶端是偽造客戶端,服務(wù)器將斷開與該客戶端的連接,且無(wú)需進(jìn)行后續(xù)驗(yàn)證。
實(shí)施例二
本實(shí)施例提供一種驗(yàn)證方法,該方法應(yīng)用在服務(wù)器端,參見圖3,所述方法包括:
S301,服務(wù)器通過第一通信信道接收第一獲取請(qǐng)求,基于所述第一獲取請(qǐng)求發(fā)送第一驗(yàn)證數(shù)據(jù)。
本步驟中,在驗(yàn)證客戶端的合法性時(shí),客戶端需要通過第一通信信道向所述服務(wù)器發(fā)送第一獲取請(qǐng)求,以獲取驗(yàn)證數(shù)據(jù);其中,所述第一通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道、或其他可以在客戶端與服務(wù)器之間進(jìn)行通信的協(xié)議等。
服務(wù)器通過第一通信信道接收到第一獲取請(qǐng)求時(shí),基于所述第一獲取請(qǐng)求向客戶端發(fā)送第一驗(yàn)證數(shù)據(jù)。其中,將第一驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第一驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等。
當(dāng)客戶端接收到第一驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果。其中,所述第二通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道等,且其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
這里,預(yù)先構(gòu)造驗(yàn)證算法,包括:構(gòu)造驗(yàn)證算法函數(shù);所述驗(yàn)證算法函數(shù)一般是以字符串表示;為了提高驗(yàn)證算法的復(fù)雜度,可以在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作。
具體地,在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作時(shí),邏輯運(yùn)算可以是對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除、邏輯異或等操作,此操作可以是無(wú)序及無(wú)邏輯的,加入的邏輯運(yùn)算條數(shù)可以加入任意多條,條數(shù)越多復(fù)雜度越大。
在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作時(shí),包括:確定循環(huán)計(jì)數(shù),在所述驗(yàn)證算法函數(shù)數(shù)據(jù)結(jié)構(gòu)中添加相應(yīng)的循環(huán)計(jì)數(shù),以循環(huán)執(zhí)行上述的邏輯運(yùn)算。實(shí)際應(yīng)用中,會(huì)在多處加入循環(huán)計(jì)數(shù),避免HACK輕易分析出該驗(yàn)證算法,因?yàn)檠h(huán)邏輯會(huì)一直在相應(yīng)的邏輯運(yùn)算中執(zhí)行,直到循環(huán)計(jì)數(shù)計(jì)數(shù)完。
為了進(jìn)一步提高驗(yàn)證算法的復(fù)雜度,在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;因?yàn)樗鲵?yàn)證算法是由循環(huán)語(yǔ)句和運(yùn)算邏輯組成,那么可通過跳轉(zhuǎn)語(yǔ)句從一個(gè)邏輯運(yùn)算跳轉(zhuǎn)到另一個(gè)邏輯運(yùn)算,然后等計(jì)算完后再跳轉(zhuǎn)回來(lái),那么從整個(gè)驗(yàn)證算法的結(jié)構(gòu)看,會(huì)使得整個(gè)結(jié)構(gòu)從一個(gè)地方跳轉(zhuǎn)到另一個(gè)地方,從而增加代碼調(diào)試和分析的復(fù)雜度。
另外,為了避免通過讀寫訪問跟蹤到算法的代碼邏輯,本實(shí)施例還在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:調(diào)用API函數(shù)memcpy;根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
實(shí)際應(yīng)用時(shí),在驗(yàn)證算法內(nèi)部使用了很多的內(nèi)存拷貝操作,將一個(gè)數(shù)據(jù)從一塊內(nèi)存拷貝到另一塊內(nèi)存,數(shù)據(jù)所在的內(nèi)存地址每拷貝一次就會(huì)變化一次。這樣對(duì)于HACK調(diào)試跟蹤起來(lái)會(huì)麻煩很多。
S302,通過第二通信信道接收第一驗(yàn)證結(jié)果,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的。
本步驟中,當(dāng)客戶端通過第二通信信道發(fā)送第一驗(yàn)證結(jié)果后,所述服務(wù)器會(huì)通過第二通信信道接收第一驗(yàn)證結(jié)果,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的。
S303,判斷所述第一驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道發(fā)送第一確認(rèn)信息。
本步驟中,當(dāng)服務(wù)器通過第二通信信道接收到第一驗(yàn)證結(jié)果后,服務(wù)器判斷所述第一驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第一確認(rèn)信息。
所述服務(wù)器判斷所述第一驗(yàn)證結(jié)果是否正確,包括:讀取配置文件中的計(jì)算結(jié)果;將所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果相比較,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果一致,則確定所述第一驗(yàn)證結(jié)果正確;其中,所述計(jì)算結(jié)果是預(yù)先根據(jù)預(yù)設(shè)的校驗(yàn)數(shù)據(jù),通過所述驗(yàn)證算法計(jì)算得出的。
這里,為了減輕服務(wù)器的在線處理壓力,會(huì)預(yù)先設(shè)置一些校驗(yàn)數(shù)據(jù),然后通過該驗(yàn)證算法計(jì)算得到計(jì)算結(jié)果,并將該結(jié)果放置到配置文件中,這樣,在實(shí)時(shí)進(jìn)行數(shù)據(jù)交互時(shí),服務(wù)器就無(wú)需進(jìn)行實(shí)時(shí)計(jì)算,可以直接從配置文件中讀取計(jì)算結(jié)果。
并且,為了進(jìn)一步提高驗(yàn)證的安全性,在確定所述第一驗(yàn)證結(jié)果正確時(shí),服務(wù)器還進(jìn)行第二次驗(yàn)證,具體地:
當(dāng)所述客戶端接收到第一確認(rèn)信息時(shí),會(huì)通過所述第一通信信道向所述服務(wù)器發(fā)送第二獲取請(qǐng)求,當(dāng)所述服務(wù)器接收到第二獲取請(qǐng)求后,會(huì)基于所述第二獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第二驗(yàn)證數(shù)據(jù)。其中,將第二驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第二驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等,且第二驗(yàn)證數(shù)據(jù)中包含第一驗(yàn)證結(jié)果。
當(dāng)客戶端接收到第二驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第二驗(yàn)證數(shù)據(jù)得出第二驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第二驗(yàn)證結(jié)果。其中,第二次使用的驗(yàn)證算法的運(yùn)算邏輯應(yīng)該比第一次驗(yàn)證使用的驗(yàn)證算法的運(yùn)算邏輯更復(fù)雜。
當(dāng)服務(wù)器通過第二通信信道接收到第二驗(yàn)證結(jié)果后,服務(wù)器判斷所述第二驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第二確認(rèn)信息,說(shuō)明該客戶端是個(gè)合法的客戶端。
當(dāng)然,如果想進(jìn)一步提高驗(yàn)證的安全性,還可以進(jìn)行多次驗(yàn)證,可以以具體情況確定驗(yàn)證次數(shù)。
進(jìn)一步地,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果不一致,則確定所述第一驗(yàn)證結(jié)果錯(cuò)誤;則說(shuō)明該客戶端是偽造客戶端,服務(wù)器將斷開與該客戶端的連接,且無(wú)需進(jìn)行后續(xù)驗(yàn)證。
實(shí)施例三
本實(shí)施例還提供一種驗(yàn)證方法,應(yīng)用在客戶端,如圖4所示,所述方法包括:
S401,客戶端通過第一通信信道發(fā)送第一獲取請(qǐng)求,使得服務(wù)器能基于所述第一獲取請(qǐng)求返回第一驗(yàn)證數(shù)據(jù)。
本步驟中,在驗(yàn)證客戶端的合法性時(shí),客戶端需要通過第一通信信道向所述服務(wù)器發(fā)送第一獲取請(qǐng)求,以獲取驗(yàn)證數(shù)據(jù);其中,所述第一通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道、或其他可以在客戶端與服務(wù)器之間進(jìn)行通信的協(xié)議等。
當(dāng)所述服務(wù)器接收到第一獲取請(qǐng)求后,會(huì)基于所述第一獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第一驗(yàn)證數(shù)據(jù)。其中,將第一驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第一驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等。
S402,利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù),獲取第一驗(yàn)證結(jié)果,并通過第二通信信道發(fā)送所述第一驗(yàn)證結(jié)果,使得所述服務(wù)器能判斷所述第一驗(yàn)證結(jié)果是否正確。
本步驟中,當(dāng)客戶端接收到第一驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果。其中,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的,所述第二通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道等,且其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
這里,預(yù)先構(gòu)造驗(yàn)證算法,包括:構(gòu)造驗(yàn)證算法函數(shù);所述驗(yàn)證算法函數(shù)一般是以字符串表示;為了提高驗(yàn)證算法的復(fù)雜度,可以在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作。
具體地,在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作時(shí),邏輯運(yùn)算可以是對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除、邏輯異或等操作,此操作可以是無(wú)序及無(wú)邏輯的,加入的邏輯運(yùn)算條數(shù)可以加入任意多條,條數(shù)越多復(fù)雜度越大。
在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作時(shí),包括:確定循環(huán)計(jì)數(shù),在所述驗(yàn)證算法函數(shù)數(shù)據(jù)結(jié)構(gòu)中添加相應(yīng)的循環(huán)計(jì)數(shù),以循環(huán)執(zhí)行上述的邏輯運(yùn)算。實(shí)際應(yīng)用中,會(huì)在多處加入循環(huán)計(jì)數(shù),避免HACK輕易分析出該驗(yàn)證算法,因?yàn)檠h(huán)邏輯會(huì)一直在相應(yīng)的邏輯運(yùn)算中執(zhí)行,直到循環(huán)計(jì)數(shù)計(jì)數(shù)完。
為了進(jìn)一步提高驗(yàn)證算法的復(fù)雜度,在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;因?yàn)樗鲵?yàn)證算法是由循環(huán)語(yǔ)句和運(yùn)算邏輯組成,那么可通過跳轉(zhuǎn)語(yǔ)句從一個(gè)邏輯運(yùn)算跳轉(zhuǎn)到另一個(gè)邏輯運(yùn)算,然后等計(jì)算完后再跳轉(zhuǎn)回來(lái),那么從整個(gè)驗(yàn)證算法的結(jié)構(gòu)看,會(huì)使得整個(gè)結(jié)構(gòu)從一個(gè)地方跳轉(zhuǎn)到另一個(gè)地方,從而增加代碼調(diào)試和分析的復(fù)雜度。
另外,為了避免通過讀寫訪問跟蹤到算法的代碼邏輯,本實(shí)施例還在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:調(diào)用API函數(shù)memcpy;根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
實(shí)際應(yīng)用時(shí),在驗(yàn)證算法內(nèi)部使用了很多的內(nèi)存拷貝操作,將一個(gè)數(shù)據(jù)從一塊內(nèi)存拷貝到另一塊內(nèi)存,數(shù)據(jù)所在的內(nèi)存地址每拷貝一次就會(huì)變化一次。這樣對(duì)于HACK調(diào)試跟蹤起來(lái)會(huì)麻煩很多。
所述服務(wù)器判斷所述第一驗(yàn)證結(jié)果是否正確,包括:讀取配置文件中的計(jì)算結(jié)果;將所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果相比較,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果一致,則確定所述第一驗(yàn)證結(jié)果正確;其中,所述計(jì)算結(jié)果是預(yù)先根據(jù)預(yù)設(shè)的校驗(yàn)數(shù)據(jù),通過所述驗(yàn)證算法計(jì)算得出的。
這里,為了減輕服務(wù)器的在線處理壓力,會(huì)預(yù)先設(shè)置一些校驗(yàn)數(shù)據(jù),然后通過該驗(yàn)證算法計(jì)算得到計(jì)算結(jié)果,并將該結(jié)果放置到配置文件中,這樣,在實(shí)時(shí)進(jìn)行數(shù)據(jù)交互時(shí),服務(wù)器就無(wú)需進(jìn)行實(shí)時(shí)計(jì)算,可以直接從配置文件中讀取計(jì)算結(jié)果。
S403,若所述第一驗(yàn)證結(jié)果正確,則通過所述第二通信信道接收第一確認(rèn)信息。
本步驟中,若所述第一驗(yàn)證結(jié)果正確,則通過所述第二通信信道接收第一確認(rèn)信息。
并且,為了進(jìn)一步提高驗(yàn)證的安全性,在確定所述第一驗(yàn)證結(jié)果正確時(shí),服務(wù)器還可以進(jìn)行第二次驗(yàn)證,具體地:
當(dāng)所述客戶端接收到第一確認(rèn)信息時(shí),會(huì)通過所述第一通信信道向所述服務(wù)器發(fā)送第二獲取請(qǐng)求,當(dāng)所述服務(wù)器接收到第二獲取請(qǐng)求后,會(huì)基于所述第二獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第二驗(yàn)證數(shù)據(jù)。其中,將第二驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第二驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等,且第二驗(yàn)證數(shù)據(jù)中包含第一驗(yàn)證結(jié)果。
當(dāng)客戶端接收到第二驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第二驗(yàn)證數(shù)據(jù)得出第二驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第二驗(yàn)證結(jié)果。其中,第二次使用的驗(yàn)證算法的運(yùn)算邏輯應(yīng)該比第一次驗(yàn)證使用的驗(yàn)證算法的運(yùn)算邏輯更復(fù)雜。
當(dāng)服務(wù)器通過第二通信信道接收到第二驗(yàn)證結(jié)果后,服務(wù)器判斷所述第二驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第二確認(rèn)信息,說(shuō)明該客戶端是個(gè)合法的客戶端。
當(dāng)然,如果想進(jìn)一步提高驗(yàn)證的安全性,還可以進(jìn)行多次驗(yàn)證,可以以具體情況確定驗(yàn)證次數(shù)。
進(jìn)一步地,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果不一致,則確定所述第一驗(yàn)證結(jié)果錯(cuò)誤;則說(shuō)明該客戶端是偽造客戶端,服務(wù)器將斷開與該客戶端的連接,且無(wú)需進(jìn)行后續(xù)驗(yàn)證。
實(shí)施例四
相應(yīng)實(shí)施例一,本實(shí)施例提供一種驗(yàn)證系統(tǒng),參見圖1,所述系統(tǒng)包括:客戶端101和服務(wù)器102。
在驗(yàn)證客戶端101的合法性時(shí),客戶端101需要通過第一通信信道向所述服務(wù)器102發(fā)送第一獲取請(qǐng)求,以獲取驗(yàn)證數(shù)據(jù);其中,所述第一通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道、或其他可以在客戶端101與服務(wù)器102之間進(jìn)行通信的協(xié)議等。
當(dāng)所述服務(wù)器102接收到第一獲取請(qǐng)求后,會(huì)基于所述第一獲取請(qǐng)求通過所述第一通信信道向所述客戶端101發(fā)送第一驗(yàn)證數(shù)據(jù)。其中,將第一驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端101請(qǐng)求的應(yīng)答信息中,所述第一驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等。
當(dāng)客戶端101接收到第一驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器102之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器102發(fā)送第一驗(yàn)證結(jié)果。其中,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的,所述第二通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道等,且其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
這里,預(yù)先構(gòu)造驗(yàn)證算法,包括:構(gòu)造驗(yàn)證算法函數(shù);所述驗(yàn)證算法函數(shù)一般是以字符串表示;為了提高驗(yàn)證算法的復(fù)雜度,可以在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作。
具體地,在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作時(shí),邏輯運(yùn)算可以是對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除、邏輯異或等操作,此操作可以是無(wú)序及無(wú)邏輯的,加入的邏輯運(yùn)算條數(shù)可以加入任意多條,條數(shù)越多復(fù)雜度越大。
在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作時(shí),包括:確定循環(huán)計(jì)數(shù),在所述驗(yàn)證算法函數(shù)數(shù)據(jù)結(jié)構(gòu)中添加相應(yīng)的循環(huán)計(jì)數(shù),以循環(huán)執(zhí)行上述的邏輯運(yùn)算。實(shí)際應(yīng)用中,會(huì)在多處加入循環(huán)計(jì)數(shù),避免HACK輕易分析出該驗(yàn)證算法,因?yàn)檠h(huán)邏輯會(huì)一直在相應(yīng)的邏輯運(yùn)算中執(zhí)行,直到循環(huán)計(jì)數(shù)計(jì)數(shù)完。
為了進(jìn)一步提高驗(yàn)證算法的復(fù)雜度,在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;因?yàn)樗鲵?yàn)證算法是由循環(huán)語(yǔ)句和運(yùn)算邏輯組成,那么可通過跳轉(zhuǎn)語(yǔ)句從一個(gè)邏輯運(yùn)算跳轉(zhuǎn)到另一個(gè)邏輯運(yùn)算,然后等計(jì)算完后再跳轉(zhuǎn)回來(lái),那么從整個(gè)驗(yàn)證算法的結(jié)構(gòu)看,會(huì)使得整個(gè)結(jié)構(gòu)從一個(gè)地方跳轉(zhuǎn)到另一個(gè)地方,從而增加代碼調(diào)試和分析的復(fù)雜度。
另外,為了避免通過讀寫訪問跟蹤到算法的代碼邏輯,本實(shí)施例還在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:調(diào)用API函數(shù)memcpy;根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
實(shí)際應(yīng)用時(shí),在驗(yàn)證算法內(nèi)部使用了很多的內(nèi)存拷貝操作,將一個(gè)數(shù)據(jù)從一塊內(nèi)存拷貝到另一塊內(nèi)存,數(shù)據(jù)所在的內(nèi)存地址每拷貝一次就會(huì)變化一次。這樣對(duì)于HACK調(diào)試跟蹤起來(lái)會(huì)麻煩很多。
當(dāng)服務(wù)器102通過第二通信信道接收到第一驗(yàn)證結(jié)果后,判斷所述第一驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端101發(fā)送第一確認(rèn)信息。
所述服務(wù)器102判斷所述第一驗(yàn)證結(jié)果是否正確,包括:讀取配置文件中的計(jì)算結(jié)果;將所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果相比較,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果一致,則確定所述第一驗(yàn)證結(jié)果正確;其中,所述計(jì)算結(jié)果是預(yù)先根據(jù)預(yù)設(shè)的校驗(yàn)數(shù)據(jù),通過所述驗(yàn)證算法計(jì)算得出的。
這里,為了減輕服務(wù)器102的在線處理壓力,會(huì)預(yù)先設(shè)置一些校驗(yàn)數(shù)據(jù),然后通過該驗(yàn)證算法計(jì)算得到計(jì)算結(jié)果,并將該結(jié)果放置到配置文件中,這樣,在實(shí)時(shí)進(jìn)行數(shù)據(jù)交互時(shí),服務(wù)器102就無(wú)需進(jìn)行實(shí)時(shí)計(jì)算,可以直接從配置文件中讀取計(jì)算結(jié)果。
并且,為了進(jìn)一步提高驗(yàn)證的安全性,在確定所述第一驗(yàn)證結(jié)果正確時(shí),服務(wù)器102還進(jìn)行第二次驗(yàn)證,具體地:
當(dāng)所述客戶端101接收到第一確認(rèn)信息時(shí),會(huì)通過所述第一通信信道向所述服務(wù)器102發(fā)送第二獲取請(qǐng)求,當(dāng)所述服務(wù)器102接收到第二獲取請(qǐng)求后,會(huì)基于所述第二獲取請(qǐng)求通過所述第一通信信道向所述客戶端101發(fā)送第二驗(yàn)證數(shù)據(jù)。其中,將第二驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端101請(qǐng)求的應(yīng)答信息中,所述第二驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等,且第二驗(yàn)證數(shù)據(jù)中包含第一驗(yàn)證結(jié)果。
當(dāng)客戶端101接收到第二驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器102之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第二驗(yàn)證數(shù)據(jù)得出第二驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器102發(fā)送第二驗(yàn)證結(jié)果。其中,第二次使用的驗(yàn)證算法的運(yùn)算邏輯應(yīng)該比第一次驗(yàn)證使用的驗(yàn)證算法的運(yùn)算邏輯更復(fù)雜。
當(dāng)服務(wù)器102通過第二通信信道接收到第二驗(yàn)證結(jié)果后,判斷所述第二驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第二確認(rèn)信息,說(shuō)明該客戶端101是個(gè)合法的客戶端。
當(dāng)然,如果想進(jìn)一步提高驗(yàn)證的安全性,還可以進(jìn)行多次驗(yàn)證,可以以具體情況確定驗(yàn)證次數(shù)。
進(jìn)一步地,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果不一致,則確定所述第一驗(yàn)證結(jié)果錯(cuò)誤;則說(shuō)明該客戶端101是偽造客戶端,服務(wù)器102將斷開與該客戶端101的連接,且無(wú)需進(jìn)行后續(xù)驗(yàn)證。
實(shí)施例五
相應(yīng)于實(shí)施例二,本實(shí)施例還提供一種服務(wù)器,參見圖5,所述服務(wù)器包括:第一接收單元51、第一發(fā)送單元52、判斷單元53;其中,
在驗(yàn)證客戶端的合法性時(shí),客戶端需要通過第一通信信道向所述服務(wù)器發(fā)送第一獲取請(qǐng)求,以獲取驗(yàn)證數(shù)據(jù);其中,所述第一通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道、或其他可以在客戶端與服務(wù)器之間進(jìn)行通信的協(xié)議等。
第一接收單元51通過第一通信信道接收第一獲取請(qǐng)求后,所述第一發(fā)送單元52用于基于所述第一獲取請(qǐng)求向客戶端發(fā)送第一驗(yàn)證數(shù)據(jù)。其中,所述第一發(fā)送單元52將第一驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第一驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等。
當(dāng)客戶端接收到第一驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果。其中,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的,所述第二通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道等,且其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
這里,預(yù)先構(gòu)造驗(yàn)證算法,包括:構(gòu)造驗(yàn)證算法函數(shù);所述驗(yàn)證算法函數(shù)一般是以字符串表示;為了提高驗(yàn)證算法的復(fù)雜度,可以在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作。
具體地,在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作時(shí),邏輯運(yùn)算可以是對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除、邏輯異或等操作,此操作可以是無(wú)序及無(wú)邏輯的,加入的邏輯運(yùn)算條數(shù)可以加入任意多條,條數(shù)越多復(fù)雜度越大。
在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作時(shí),包括:確定循環(huán)計(jì)數(shù),在所述驗(yàn)證算法函數(shù)數(shù)據(jù)結(jié)構(gòu)中添加相應(yīng)的循環(huán)計(jì)數(shù),以循環(huán)執(zhí)行上述的邏輯運(yùn)算。實(shí)際應(yīng)用中,會(huì)在多處加入循環(huán)計(jì)數(shù),避免HACK輕易分析出該驗(yàn)證算法,因?yàn)檠h(huán)邏輯會(huì)一直在相應(yīng)的邏輯運(yùn)算中執(zhí)行,直到循環(huán)計(jì)數(shù)計(jì)數(shù)完。
為了進(jìn)一步提高驗(yàn)證算法的復(fù)雜度,在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;因?yàn)樗鲵?yàn)證算法是由循環(huán)語(yǔ)句和運(yùn)算邏輯組成,那么可通過跳轉(zhuǎn)語(yǔ)句從一個(gè)邏輯運(yùn)算跳轉(zhuǎn)到另一個(gè)邏輯運(yùn)算,然后等計(jì)算完后再跳轉(zhuǎn)回來(lái),那么從整個(gè)驗(yàn)證算法的結(jié)構(gòu)看,會(huì)使得整個(gè)結(jié)構(gòu)從一個(gè)地方跳轉(zhuǎn)到另一個(gè)地方,從而增加代碼調(diào)試和分析的復(fù)雜度。
另外,為了避免通過讀寫訪問跟蹤到算法的代碼邏輯,本實(shí)施例還在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:調(diào)用API函數(shù)memcpy;根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
實(shí)際應(yīng)用時(shí),在驗(yàn)證算法內(nèi)部使用了很多的內(nèi)存拷貝操作,將一個(gè)數(shù)據(jù)從一塊內(nèi)存拷貝到另一塊內(nèi)存,數(shù)據(jù)所在的內(nèi)存地址每拷貝一次就會(huì)變化一次。這樣對(duì)于HACK調(diào)試跟蹤起來(lái)會(huì)麻煩很多。
當(dāng)所述客戶端發(fā)送第一驗(yàn)證結(jié)果后,所述第一接收單元51還用于通過第二通信信道接收第一驗(yàn)證結(jié)果。那么所述判斷單元53用于判斷所述第一驗(yàn)證結(jié)果是否正確;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
所述判斷單元53判斷所述第一驗(yàn)證結(jié)果是否正確,包括:讀取配置文件中的計(jì)算結(jié)果;將所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果相比較,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果一致,則確定所述第一驗(yàn)證結(jié)果正確;其中,所述計(jì)算結(jié)果是預(yù)先根據(jù)預(yù)設(shè)的校驗(yàn)數(shù)據(jù),通過所述驗(yàn)證算法計(jì)算得出的。
這里,為了減輕服務(wù)器的在線處理壓力,會(huì)預(yù)先設(shè)置一些校驗(yàn)數(shù)據(jù),然后通過該驗(yàn)證算法計(jì)算得到計(jì)算結(jié)果,并將該結(jié)果放置到配置文件中,這樣,在實(shí)時(shí)進(jìn)行數(shù)據(jù)交互時(shí),服務(wù)器就無(wú)需進(jìn)行實(shí)時(shí)計(jì)算,可以直接從配置文件中讀取計(jì)算結(jié)果。
并且,為了進(jìn)一步提高驗(yàn)證的安全性,在確定所述第一驗(yàn)證結(jié)果正確時(shí),服務(wù)器還進(jìn)行第二次驗(yàn)證,具體地:
當(dāng)所述客戶端接收到第一確認(rèn)信息時(shí),會(huì)通過所述第一通信信道向所述服務(wù)器發(fā)送第二獲取請(qǐng)求,當(dāng)所述第一接收單元51接收到第二獲取請(qǐng)求后,所述第一發(fā)送單元52會(huì)基于所述第二獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第二驗(yàn)證數(shù)據(jù)。其中,將第二驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第二驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等,且第二驗(yàn)證數(shù)據(jù)中包含第一驗(yàn)證結(jié)果。
當(dāng)所述客戶端接收到第二驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第二驗(yàn)證數(shù)據(jù)得出第二驗(yàn)證結(jié)果后,所述客戶端利用所述第二通信信道向所述服務(wù)器發(fā)送第二驗(yàn)證結(jié)果。其中,第二次使用的驗(yàn)證算法的運(yùn)算邏輯應(yīng)該比第一次驗(yàn)證使用的驗(yàn)證算法的運(yùn)算邏輯更復(fù)雜。
當(dāng)?shù)谝唤邮諉卧?2通過第二通信信道接收到第二驗(yàn)證結(jié)果后,所述判斷單元53判斷所述第二驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第二確認(rèn)信息,說(shuō)明該客戶端是個(gè)合法的客戶端。
當(dāng)然,如果想進(jìn)一步提高驗(yàn)證的安全性,還可以進(jìn)行多次驗(yàn)證,可以以具體情況確定驗(yàn)證次數(shù)。
進(jìn)一步地,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果不一致,則確定所述第一驗(yàn)證結(jié)果錯(cuò)誤;則說(shuō)明該客戶端是偽造客戶端,服務(wù)器將斷開與該客戶端的連接,且無(wú)需進(jìn)行后續(xù)驗(yàn)證。
實(shí)施例六
相應(yīng)于實(shí)施例三,本實(shí)施例還提供一種客戶端,參見圖6,所述客戶端包括:第二發(fā)送單元61、計(jì)算單元62、第二接收單元63;其中,
第二發(fā)送單元61用于通過第一通信信道發(fā)送第一獲取請(qǐng)求,使得服務(wù)器能基于所述第一獲取請(qǐng)求返回第一驗(yàn)證數(shù)據(jù);在驗(yàn)證客戶端的合法性時(shí),第二發(fā)送單元61需要通過第一通信信道向所述服務(wù)器發(fā)送第一獲取請(qǐng)求,以獲取驗(yàn)證數(shù)據(jù);其中,所述第一通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道、或其他可以在客戶端與服務(wù)器之間進(jìn)行通信的協(xié)議等。
當(dāng)所述服務(wù)器接收到第一獲取請(qǐng)求后,會(huì)基于所述第一獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第一驗(yàn)證數(shù)據(jù)。其中,將第一驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第一驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等。
當(dāng)?shù)诙邮諉卧?3接收到第一驗(yàn)證數(shù)據(jù)時(shí),所述計(jì)算單元62用于利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù),獲取第一驗(yàn)證結(jié)果。
具體地,當(dāng)?shù)诙邮諉卧?3收到第一驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出第一驗(yàn)證結(jié)果后,所述第二發(fā)送單元61還用于利用所述第二通信信道向所述服務(wù)器發(fā)送第一驗(yàn)證結(jié)果。其中,所述第二通信信道可以是基于HTTP協(xié)議、或基于TCP協(xié)議、或基于UDT協(xié)議建立的通信信道等,且其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯。
這里,預(yù)先構(gòu)造驗(yàn)證算法,包括:構(gòu)造驗(yàn)證算法函數(shù);所述驗(yàn)證算法函數(shù)一般是以字符串表示;為了提高驗(yàn)證算法的復(fù)雜度,可以在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作。
具體地,在所述驗(yàn)證算法函數(shù)中執(zhí)行邏輯運(yùn)算操作時(shí),邏輯運(yùn)算可以是對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除、邏輯異或等操作,此操作可以是無(wú)序及無(wú)邏輯的,加入的邏輯運(yùn)算條數(shù)可以加入任意多條,條數(shù)越多復(fù)雜度越大。
在所述驗(yàn)證算法函數(shù)中執(zhí)行循環(huán)邏輯運(yùn)算操作時(shí),包括:確定循環(huán)計(jì)數(shù),在所述驗(yàn)證算法函數(shù)數(shù)據(jù)結(jié)構(gòu)中添加相應(yīng)的循環(huán)計(jì)數(shù),以循環(huán)執(zhí)行上述的邏輯運(yùn)算。實(shí)際應(yīng)用中,會(huì)在多處加入循環(huán)計(jì)數(shù),避免HACK輕易分析出該驗(yàn)證算法,因?yàn)檠h(huán)邏輯會(huì)一直在相應(yīng)的邏輯運(yùn)算中執(zhí)行,直到循環(huán)計(jì)數(shù)計(jì)數(shù)完。
為了進(jìn)一步提高驗(yàn)證算法的復(fù)雜度,在所述驗(yàn)證算法函數(shù)中執(zhí)行跳轉(zhuǎn)邏輯運(yùn)算操作;因?yàn)樗鲵?yàn)證算法是由循環(huán)語(yǔ)句和運(yùn)算邏輯組成,那么可通過跳轉(zhuǎn)語(yǔ)句從一個(gè)邏輯運(yùn)算跳轉(zhuǎn)到另一個(gè)邏輯運(yùn)算,然后等計(jì)算完后再跳轉(zhuǎn)回來(lái),那么從整個(gè)驗(yàn)證算法的結(jié)構(gòu)看,會(huì)使得整個(gè)結(jié)構(gòu)從一個(gè)地方跳轉(zhuǎn)到另一個(gè)地方,從而增加代碼調(diào)試和分析的復(fù)雜度。
另外,為了避免通過讀寫訪問跟蹤到算法的代碼邏輯,本實(shí)施例還在所述驗(yàn)證算法函數(shù)中執(zhí)行地址變換邏輯運(yùn)算操作,包括:調(diào)用API函數(shù)memcpy;根據(jù)所述API函數(shù)memcpy執(zhí)行所述驗(yàn)證算法函數(shù)的數(shù)據(jù)在內(nèi)存中的拷貝操作。
實(shí)際應(yīng)用時(shí),在驗(yàn)證算法內(nèi)部使用了很多的內(nèi)存拷貝操作,將一個(gè)數(shù)據(jù)從一塊內(nèi)存拷貝到另一塊內(nèi)存,數(shù)據(jù)所在的內(nèi)存地址每拷貝一次就會(huì)變化一次。這樣對(duì)于HACK調(diào)試跟蹤起來(lái)會(huì)麻煩很多。
當(dāng)所述服務(wù)器接收到第一驗(yàn)證結(jié)果后,判斷所述第一驗(yàn)證結(jié)果是否正確,包括:讀取配置文件中的計(jì)算結(jié)果;將所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果相比較,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果一致,則確定所述第一驗(yàn)證結(jié)果正確;其中,所述計(jì)算結(jié)果是預(yù)先根據(jù)預(yù)設(shè)的校驗(yàn)數(shù)據(jù),通過所述驗(yàn)證算法計(jì)算得出的。
這里,為了減輕服務(wù)器的在線處理壓力,會(huì)預(yù)先設(shè)置一些校驗(yàn)數(shù)據(jù),然后通過該驗(yàn)證算法計(jì)算得到計(jì)算結(jié)果,并將該結(jié)果放置到配置文件中,這樣,在實(shí)時(shí)進(jìn)行數(shù)據(jù)交互時(shí),服務(wù)器就無(wú)需進(jìn)行實(shí)時(shí)計(jì)算,可以直接從配置文件中讀取計(jì)算結(jié)果。
當(dāng)所述服務(wù)器確定第一驗(yàn)證結(jié)果正確時(shí),所述第二接收單元63還用于通過所述第二通信信道接收所述服務(wù)器發(fā)送的第一確認(rèn)信息;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的。
并且,為了進(jìn)一步提高驗(yàn)證的安全性,在確定所述第一驗(yàn)證結(jié)果正確時(shí),服務(wù)器還可以進(jìn)行第二次驗(yàn)證,具體地:
當(dāng)所述第二接收單元63接收到第一確認(rèn)信息時(shí),會(huì)通過所述第一通信信道向所述服務(wù)器發(fā)送第二獲取請(qǐng)求,當(dāng)所述服務(wù)器接收到第二獲取請(qǐng)求后,會(huì)基于所述第二獲取請(qǐng)求通過所述第一通信信道向所述客戶端發(fā)送第二驗(yàn)證數(shù)據(jù)。其中,將第二驗(yàn)證數(shù)據(jù)攜帶在答復(fù)客戶端請(qǐng)求的應(yīng)答信息中,所述第二驗(yàn)證數(shù)據(jù)可以是字符串、圖標(biāo)等,且第二驗(yàn)證數(shù)據(jù)中包含第一驗(yàn)證結(jié)果。
當(dāng)所述第二接收單元63接收到第二驗(yàn)證數(shù)據(jù)后,創(chuàng)建與所述服務(wù)器之間的第二通信信道,根據(jù)預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第二驗(yàn)證數(shù)據(jù)得出第二驗(yàn)證結(jié)果后,利用所述第二通信信道向所述服務(wù)器發(fā)送第二驗(yàn)證結(jié)果。其中,第二次使用的驗(yàn)證算法的運(yùn)算邏輯應(yīng)該比第一次驗(yàn)證使用的驗(yàn)證算法的運(yùn)算邏輯更復(fù)雜。
當(dāng)服務(wù)器通過第二通信信道接收到第二驗(yàn)證結(jié)果后,服務(wù)器判斷所述第二驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道向所述客戶端發(fā)送第二確認(rèn)信息,說(shuō)明該客戶端是個(gè)合法的客戶端。
當(dāng)然,如果想進(jìn)一步提高驗(yàn)證的安全性,還可以進(jìn)行多次驗(yàn)證,可以以具體情況確定驗(yàn)證次數(shù)。
進(jìn)一步地,若所述第一驗(yàn)證結(jié)果與所述計(jì)算結(jié)果不一致,則確定所述第一驗(yàn)證結(jié)果錯(cuò)誤;則說(shuō)明該客戶端是偽造客戶端,服務(wù)器將斷開與該客戶端的連接,且無(wú)需進(jìn)行后續(xù)驗(yàn)證。
本發(fā)明的一個(gè)或多個(gè)實(shí)施例帶來(lái)的有益效果是:
本發(fā)明提供了一種驗(yàn)證方法及系統(tǒng),所述驗(yàn)證方法包括:服務(wù)器通過第一通信信道接收第一獲取請(qǐng)求,基于所述第一獲取請(qǐng)求發(fā)送第一驗(yàn)證數(shù)據(jù);通過第二通信信道接收第一驗(yàn)證結(jié)果,所述第一驗(yàn)證結(jié)果是利用預(yù)先構(gòu)造的驗(yàn)證算法計(jì)算所述第一驗(yàn)證數(shù)據(jù)得出的;判斷所述第一驗(yàn)證結(jié)果是否正確,若正確,通過所述第二通信信道發(fā)送第一確認(rèn)信息;其中,所述第一通信信道與所述第二通信信道是根據(jù)不同的通信協(xié)議建立的;所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯;如此,因所述驗(yàn)證算法中包含有運(yùn)算、循環(huán)、跳轉(zhuǎn)及地址更換的邏輯,提高了所述驗(yàn)證算法的復(fù)雜度,使得HACK不容易從網(wǎng)絡(luò)上找到對(duì)應(yīng)算法的代碼,可以避免更精確地驗(yàn)證客戶端的合法性,并且在驗(yàn)證過程中,利用兩種不同的通信信道來(lái)進(jìn)行數(shù)據(jù)交互,進(jìn)一步提高了驗(yàn)證過程的安全性。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。