專利名稱:防御會(huì)話劫持攻擊的方法和防火墻的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,特別涉及到防御會(huì)話劫持攻擊的方法和防火
背景技術(shù):
HTTP協(xié)議是無(wú)狀態(tài)的,其本身沒(méi)有將用戶提出的各種請(qǐng)求/響應(yīng)聯(lián)系起來(lái)的機(jī)制,每一對(duì)請(qǐng)求/響應(yīng)都是獨(dú)立的事務(wù)。實(shí)現(xiàn)有狀態(tài)的HTTP,WEB應(yīng)用程序需要與用戶動(dòng)態(tài)交互,維護(hù)與合法客戶端的交互狀態(tài)數(shù)據(jù),這種動(dòng)態(tài)交互過(guò)程就是會(huì)話。首先把這些狀態(tài)數(shù)據(jù)傳送到合法客戶端存儲(chǔ),然后隨合法客戶端提交的請(qǐng)求返回進(jìn)行驗(yàn)證。這種狀態(tài)保存機(jī)制前提需要合法客戶端是可信的,能夠保證傳送的狀態(tài)數(shù)據(jù)的完整性和機(jī)密性。但在實(shí)際的應(yīng)用中,攻擊者可以利用會(huì)話劫持漏洞竊取狀態(tài)信息,達(dá)到冒充其他可信用戶的非法訪問(wèn)。當(dāng)用戶在登錄認(rèn)證過(guò)程中,輸入用戶名與密碼通過(guò)驗(yàn)證后,應(yīng)用程序向合法客戶端返回一狀態(tài)信息,該狀態(tài)信息隨用戶的下次請(qǐng)求返回,應(yīng)用程序根據(jù)這段信息來(lái)驗(yàn)證用戶身份并返回正確的響應(yīng)頁(yè)面,如果這段信息被攻擊者通過(guò)某種方式劫持,攻擊者就可以繞過(guò)授權(quán),冒充其他用戶進(jìn)行非法訪問(wèn),劫持這段信息的過(guò)程就是會(huì)話劫持。會(huì)話劫持攻擊有10多種方法,常見(jiàn)有XSS (又稱為CSS,Cross Site Script,跨站腳本攻擊)會(huì)話劫持、CSRF(Cross-site request forgery,跨站請(qǐng)求偽造)、固定會(huì)話攻擊、會(huì)話令牌猜解、會(huì)話令牌蠻力、日志泄露令牌等等,目前應(yīng)用層防火墻的實(shí)現(xiàn)主要是針對(duì)其中某一種方法進(jìn)行防御,如XSS基于特征、CSRF基于令牌,但是,基于特征進(jìn)行防御屬于被動(dòng)防御,無(wú)法做到事前防御,且容易出現(xiàn)誤報(bào)和漏報(bào);基于令牌的防御存在單一性和時(shí)間依賴性缺陷。此外,只防御其中某種攻擊,通過(guò)其他攻擊還是 可以劫持會(huì)話,如果發(fā)現(xiàn)新的會(huì)話攻擊也無(wú)法防御。
發(fā)明內(nèi)容
本發(fā)明的主要目的為提供一種全面、有效的防御會(huì)話劫持攻擊的方法和防火墻。本發(fā)明提出一種防御會(huì)話劫持攻擊的方法,包括步驟接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求,并將所述第一訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器;接收所述服務(wù)器返回的第一響應(yīng),所述第一響應(yīng)中包括第一認(rèn)證令牌;根據(jù)所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值,將所述第一認(rèn)證令牌和第一序列值重組為第二認(rèn)證令牌;將所述第一響應(yīng)中的第一認(rèn)證令牌替換為所述第二認(rèn)證令牌,并將包含所述第二認(rèn)證令牌的所述第一響應(yīng)發(fā)送至所述合法客戶端。優(yōu)選地,所述將包含所述第二認(rèn)證令牌的所述第一響應(yīng)發(fā)送至所述合法客戶端的步驟之后還包括接收當(dāng)前客戶端發(fā)送的第二訪問(wèn)請(qǐng)求,所述第二訪問(wèn)請(qǐng)求中包括第二認(rèn)證令牌;從所述第二認(rèn)證令牌中分離出所述第一認(rèn)證令牌和第一序列值;根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值;
當(dāng)所述第二序列值與所述第一序列值相同時(shí),確定當(dāng)前客戶端為所述合法客戶端;將所述第二訪問(wèn)請(qǐng)求中的第二認(rèn)證令牌替換為所述第一認(rèn)證令牌;將包含所述第一認(rèn)證令牌的所述第二訪問(wèn)請(qǐng)求發(fā)送至所述服務(wù)器,供所述服務(wù)器驗(yàn)證所述第一認(rèn)證令牌和響應(yīng)所述第二訪問(wèn)請(qǐng)求。優(yōu)選地,所述根據(jù)合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼,生成第一序列值的步驟具體包括采用隨機(jī)串和散列算法,將所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值。優(yōu)選地,所述根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值的步驟具體包括采用與生成第一序列值時(shí)相同的隨機(jī)串和散列算法,將當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼生成第二序 列值,作為第二序列值。優(yōu)選地,所述接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求的步驟之前還包括在所述服務(wù)器中查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面;在預(yù)設(shè)時(shí)間內(nèi)獲取多個(gè)訪問(wèn)請(qǐng)求中的Cookie數(shù)據(jù)和多個(gè)響應(yīng)中的Set-Cookie數(shù)據(jù);獲取各個(gè)所述Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的鍵值對(duì);根據(jù)各個(gè)所述鍵值對(duì)及其組合,分別生成對(duì)應(yīng)的第三訪問(wèn)請(qǐng)求;分別采用各個(gè)所述第三訪問(wèn)請(qǐng)求,訪問(wèn)所述頁(yè)面;接收所述頁(yè)面返回的對(duì)應(yīng)于各個(gè)所述第三訪問(wèn)請(qǐng)求的第三響應(yīng);當(dāng)所述第三響應(yīng)有效時(shí),有效的所述第三響應(yīng)對(duì)應(yīng)的鍵值對(duì)為所述第一認(rèn)證令牌存放的位置。本發(fā)明還提出一種防御會(huì)話劫持攻擊的防火墻,包括收發(fā)模塊,用于接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求,并將所述第一訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器;接收所述服務(wù)器返回的第一響應(yīng),所述第一響應(yīng)中包括第一認(rèn)證令牌;重組模塊,用于根據(jù)所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值,將所述第一認(rèn)證令牌和第一序列值重組為第二認(rèn)證令牌;替換模塊,用于將所述第一響應(yīng)中的第一認(rèn)證令牌替換為所述第二認(rèn)證令牌;所述收發(fā)模塊還用于,將包含所述第二認(rèn)證令牌的所述第一響應(yīng)發(fā)送至所述合法客戶端。優(yōu)選地,所述防御會(huì)話劫持攻擊的防火墻,還包括判斷模塊;所述收發(fā)模塊還用于,接收當(dāng)前客戶端發(fā)送的第二訪問(wèn)請(qǐng)求,所述第二訪問(wèn)請(qǐng)求中包括第二認(rèn)證令牌;所述重組模塊還用于,從所述第二認(rèn)證令牌中分離出所述第一認(rèn)證令牌和第一序列值;根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值;所述判斷模塊用于,當(dāng)所述第二序列值與所述第一序列值相同時(shí),確定當(dāng)前客戶端為所述合法客戶端;所述替換模塊還用于,將所述第二訪問(wèn)請(qǐng)求中的第二認(rèn)證令牌替換為所述第一認(rèn)證令牌;所述收發(fā)模塊還用于,將包含所述第一認(rèn)證令牌的所述第二訪問(wèn)請(qǐng)求發(fā)送至所述服務(wù)器,供所述服務(wù)器驗(yàn)證所述第一認(rèn)證令牌和響應(yīng)所述第二訪問(wèn)請(qǐng)求。優(yōu)選地,所述重組模塊具體用于采用隨機(jī)串和散列算法,將所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值。優(yōu)選地,所述重組模塊具體還用于采用與生成第一序列值時(shí)相同的隨機(jī)串和散列算法,將當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼生成第二序列值,作為第二序列值。優(yōu)選地,所述防御會(huì)話劫持攻擊的防火墻,還包括查找模塊;所述查找模塊用于,在所述服務(wù)器中查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面;所述重組模塊具體還用于,在預(yù)設(shè)時(shí)間內(nèi)獲取多個(gè)訪問(wèn)請(qǐng)求中的Cookie數(shù)據(jù)和多個(gè)響應(yīng)中的Set-Cookie數(shù)據(jù);獲取各個(gè)所述Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的鍵值對(duì);根據(jù)各個(gè)所述鍵值對(duì)及其組合,分別生成對(duì)應(yīng)的第三訪問(wèn)請(qǐng)求;所述收發(fā)模塊還用于,分別采用各個(gè)所述第三訪問(wèn)請(qǐng)求,訪問(wèn)所述頁(yè)面;接收所述頁(yè)面返回的對(duì)應(yīng)于各個(gè)所述第三訪問(wèn)請(qǐng)求的第三響應(yīng);所述判斷模塊用于,當(dāng)所述第三響應(yīng)有效時(shí),有效的所述第三響應(yīng)對(duì)應(yīng)的鍵值對(duì)為所述第一認(rèn)證令牌存放的位置。本發(fā)明采用了客戶端身份驗(yàn)證機(jī)制,避免非法客戶端假冒合法客戶端訪問(wèn)服務(wù)器,有效防御各種會(huì)話劫持攻擊`,即使更換了令牌,也不會(huì)產(chǎn)生誤報(bào)或漏報(bào),防御性更加全
面、可靠。
圖1為本發(fā)明防御會(huì)話劫持攻擊的方法的第一實(shí)施例的流程圖;圖2為本發(fā)明防御會(huì)話劫持攻擊的方法的第二實(shí)施例的流程圖;圖3為本發(fā)明防御會(huì)話劫持攻擊的方法的第三實(shí)施例的流程圖;圖4為本發(fā)明防御會(huì)話劫持攻擊的防火墻的第一實(shí)施例的結(jié)構(gòu)示意圖;圖5為本發(fā)明防御會(huì)話劫持攻擊的防火墻的第二實(shí)施例的結(jié)構(gòu)示意圖;圖6為本發(fā)明防御會(huì)話劫持攻擊的防火墻的第三實(shí)施例的結(jié)構(gòu)示意圖。本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
具體實(shí)施例方式應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖1所示,圖1為本發(fā)明防御會(huì)話劫持攻擊的方法的第一實(shí)施例的流程圖。本實(shí)施例提到的防御會(huì)話劫持攻擊的方法,包括步驟步驟S10,接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求,并將第一訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器;在合法客戶端首次訪問(wèn)服務(wù)器時(shí),合法客戶端發(fā)送的訪問(wèn)請(qǐng)求(即步驟SlO中的第一訪問(wèn)請(qǐng)求)中并未包含令牌,此時(shí),防火墻直接對(duì)該訪問(wèn)請(qǐng)求放行。
步驟S20,接收服務(wù)器返回的第一響應(yīng),第一響應(yīng)中包括第一認(rèn)證令牌;服務(wù)器在接收到訪問(wèn)請(qǐng)求后,對(duì)訪問(wèn)請(qǐng)求應(yīng)答,返回包含認(rèn)證令牌的響應(yīng)(即步驟S20中的包括第一認(rèn)證令牌的第一響應(yīng))。步驟S30,根據(jù)合法客戶端的網(wǎng)絡(luò)地址和合法客戶端的標(biāo)識(shí)碼生成第一序列值,將第一認(rèn)證令牌和第一序列值重組為第二認(rèn)證令牌;本步驟為對(duì)認(rèn)證令牌重組的步驟,其中,合法客戶端的標(biāo)識(shí)碼可以是合法客戶端的物理地址或其他可以收集的合法客戶端信息??刹捎秒S機(jī)串和散列算法,將合法客戶端的網(wǎng)絡(luò)地址和合法客戶端的標(biāo)識(shí)碼生成第一序列值。步驟S40,將第一響應(yīng)中的第一認(rèn)證令牌替換為第二認(rèn)證令牌,并將包含第二認(rèn)證令牌的第一響應(yīng)發(fā)送至合法客戶端。防火墻將替換后的響應(yīng)發(fā)送至合法客戶端,合法客戶端將響應(yīng)中的第二認(rèn)證令牌存儲(chǔ)起來(lái),以便在再次訪問(wèn)服務(wù)器時(shí)提供給服務(wù)器驗(yàn)證。由于此時(shí)第二認(rèn)證令牌中包含有合法客戶端的信息。因此,當(dāng)有客戶端發(fā)起訪問(wèn)服務(wù)器的請(qǐng)求時(shí),只需將第二認(rèn)證令牌中包含的合法客戶端的信息與當(dāng)前發(fā)起訪問(wèn)請(qǐng)求的客戶端的信息進(jìn)行比較,如果匹配,則說(shuō)明當(dāng)前發(fā)起訪問(wèn)請(qǐng)求的客戶端是步驟S40中合法獲得第二認(rèn)證令牌的合法客戶端;否則,當(dāng)前發(fā)起訪問(wèn)請(qǐng)求的客戶端為非法客戶端,防火墻拒絕放行。本實(shí)施例采用了客戶端身份驗(yàn)證機(jī)制,避免非法客戶端假冒合法客戶端訪問(wèn)服務(wù)器,有效防御各種會(huì)話劫持攻擊,即使更換了令牌,也不會(huì)產(chǎn)生誤報(bào)或漏報(bào),防御性更加全
面、可靠。
如圖2所示,圖2為本發(fā)明防御會(huì)話劫持攻擊的方法的第二實(shí)施例的流程圖。本實(shí)施例以圖1所示實(shí)施例為基礎(chǔ),在步驟S40之后還包括步驟S50,接收當(dāng)前客戶端發(fā)送的第二訪問(wèn)請(qǐng)求;發(fā)送第二訪問(wèn)請(qǐng)求的客戶端可能是再次發(fā)起訪問(wèn)請(qǐng)求的合法客戶端,也可能是盜取令牌后的非法客戶端,因此,在第二訪問(wèn)請(qǐng)求中包括有第二認(rèn)證令牌。步驟S60,從第二認(rèn)證令牌中分離出第一認(rèn)證令牌和第一序列值;將第二認(rèn)證令牌分離為兩部分,一部分與第一認(rèn)證令牌相同,另一部分與第一序列值相同,作為驗(yàn)證客戶端身份的標(biāo)識(shí)。步驟S70,根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值;防火墻獲取當(dāng)前客戶端的信息,生成第二序列值,用于驗(yàn)證當(dāng)前客戶端是否合法。第二序列值的生成方式與第一序列值生成方式相同??擅子门c生成第一序列值時(shí)相同的隨機(jī)串和散列算法,將當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼生成第二序列值,作為第二序列值。步驟S80,當(dāng)?shù)诙蛄兄蹬c第一序列值相同時(shí),確定當(dāng)前客戶端為合法客戶端;如果當(dāng)前客戶端是再次發(fā)起訪問(wèn)請(qǐng)求的合法客戶端,則當(dāng)前客戶端的信息與合法客戶端的信息相同,生成的第二序列值也應(yīng)與第一序列值相同。如果當(dāng)前客戶端是盜取令牌后的非法客戶端,則非法客戶端的信息與合法客戶端的信息顯然不同,此時(shí)生成的第二序列值也與第一序列值不同。通過(guò)該步驟即可判斷出當(dāng)前客戶端是否為合法客戶端。步驟S90,將第二訪問(wèn)請(qǐng)求中的第二認(rèn)證令牌替換為第一認(rèn)證令牌;防火墻在判定當(dāng)前客戶端為合法客戶端后,將第二認(rèn)證令牌還原為第一認(rèn)證令牌,再發(fā)送至服務(wù)器進(jìn)行驗(yàn)證。步驟S100,將包含第一認(rèn)證令牌的第二訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器,供服務(wù)器驗(yàn)證第一認(rèn)證令牌和響應(yīng)第二訪問(wèn)請(qǐng)求。本實(shí)施例由于采用了客戶端信息進(jìn)行身份驗(yàn)證,在當(dāng)前客戶端信息與合法客戶端信息一致時(shí),防火墻對(duì)當(dāng)前客戶端放行,避免了非法客戶端假冒合法客戶端訪問(wèn)服務(wù)器,有效防御各種會(huì)話劫持攻擊,即使更換了令牌,也不會(huì)產(chǎn)生誤報(bào)或漏報(bào),防御性更加全面、可
O如圖3所示,圖3為本發(fā)明防御會(huì)話劫持攻擊的方法的第三實(shí)施例的流程圖。本實(shí)施例以圖2所示實(shí)施例為基礎(chǔ),增加了查找令牌位置的步驟,在步驟SlO之前還包括步驟S101,在服務(wù)器中查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面;查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面即查找一個(gè)需要通過(guò)登錄認(rèn)證后才可以訪問(wèn)的頁(yè)面。確定依賴令牌訪問(wèn)的頁(yè)面可以通過(guò)提供一個(gè)給管理員的配置接口來(lái)確定,或者在防火墻部署前通過(guò)防火墻自帶的掃描功能來(lái)確定,還可以通過(guò)實(shí)時(shí)檢測(cè)登錄的請(qǐng)求和響應(yīng)來(lái)確定。本實(shí)施例采用實(shí)時(shí)檢測(cè)登錄的請(qǐng)求和響應(yīng)的方法來(lái)確定。步驟S102,在預(yù)設(shè)時(shí)間內(nèi)獲取多個(gè)訪問(wèn)請(qǐng)求中的Cookie數(shù)據(jù)和多個(gè)響應(yīng)中的Set-Cookie 數(shù)據(jù);防火墻剛剛部署后,在足夠長(zhǎng)的設(shè)定時(shí)間內(nèi),檢測(cè)所有接收到的請(qǐng)求或響應(yīng)報(bào)文,獲取盡可能多的樣本,例如,從請(qǐng)求報(bào)頭Cookie或響應(yīng)報(bào)頭Set-Cookie中獲取樣本。步驟S103, 獲取各個(gè)Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的鍵值對(duì);步驟S104,根據(jù)各個(gè)鍵值對(duì)及其組合,分別生成對(duì)應(yīng)的第三訪問(wèn)請(qǐng)求;獲取的Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的部分或者全部鍵值對(duì),并在生成第三訪問(wèn)請(qǐng)求報(bào)文時(shí),把第三訪問(wèn)請(qǐng)求報(bào)文的Cookie消息報(bào)頭修改為某一個(gè)鍵值對(duì)或其組合,即自定義的訪問(wèn)請(qǐng)求,直到遍歷完所有鍵值對(duì)的組合。步驟S105,分別采用各個(gè)第三訪問(wèn)請(qǐng)求,訪問(wèn)頁(yè)面;步驟S106,接收頁(yè)面返回的對(duì)應(yīng)于各個(gè)第三訪問(wèn)請(qǐng)求的第三響應(yīng);步驟S107,當(dāng)?shù)谌憫?yīng)有效時(shí),有效的第三響應(yīng)對(duì)應(yīng)的鍵值對(duì)為第一認(rèn)證令牌存放的位置;防火墻根據(jù)服務(wù)器的響應(yīng)來(lái)判斷發(fā)送的第三訪問(wèn)請(qǐng)求的Cookie中是否含有令牌,判定的標(biāo)準(zhǔn)可以是報(bào)文長(zhǎng)度、關(guān)鍵字等可以區(qū)分的指標(biāo),如果報(bào)文長(zhǎng)度與正確響應(yīng)頁(yè)面的長(zhǎng)度相等,說(shuō)明第三訪問(wèn)請(qǐng)求中的Cookie鍵值對(duì)或其組合含有令牌,并記錄該鍵值對(duì)或其組合。當(dāng)有效的位置為多個(gè)時(shí),為了確定最精簡(jiǎn)的存放會(huì)話令牌的位置,可檢索最簡(jiǎn)的一個(gè)。本實(shí)施例通過(guò)防火墻自學(xué)習(xí)功能確定令牌存放位置,可準(zhǔn)確在訪問(wèn)請(qǐng)求中獲得認(rèn)證令牌,可避免令牌獲取錯(cuò)誤的情況發(fā)生。如圖4所示,圖4為本發(fā)明防御會(huì)話劫持攻擊的防火墻的第一實(shí)施例的結(jié)構(gòu)示意圖。本實(shí)施例提到的防御會(huì)話劫持攻擊的防火墻,包括收發(fā)模塊10,用于接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求,并將第一訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器;接收服務(wù)器返回的第一響應(yīng),第一響應(yīng)中包括第一認(rèn)證令牌;重組模塊20,用于根據(jù)合法客戶端的網(wǎng)絡(luò)地址和合法客戶端的標(biāo)識(shí)碼生成第一序列值,將第一認(rèn)證令牌和第一序列值重組為第二認(rèn)證令牌;
替換模塊30,用于將第一響應(yīng)中的第一認(rèn)證令牌替換為第二認(rèn)證令牌;收發(fā)模塊10還用于,將包含第二認(rèn)證令牌的第一響應(yīng)發(fā)送至合法客戶端。重組模塊20具體用于,采用隨機(jī)串和散列算法,將合法客戶端的網(wǎng)絡(luò)地址和合法客戶端的標(biāo)識(shí)碼生成第一序列值。本實(shí)施例中,在合法客戶端首次訪問(wèn)服務(wù)器時(shí),合法客戶端發(fā)送的訪問(wèn)請(qǐng)求中并未包含令牌,此時(shí),防火墻直接對(duì)該訪問(wèn)請(qǐng)求放行。服務(wù)器在接收到訪問(wèn)請(qǐng)求后,對(duì)訪問(wèn)請(qǐng)求應(yīng)答,返回包含認(rèn)證令牌的響應(yīng)。合法客戶端的標(biāo)識(shí)碼可以是合法客戶端的物理地址或其他可以收集的合法客戶端信息??刹捎秒S機(jī)串和散列算法,將合法客戶端的網(wǎng)絡(luò)地址和合法客戶端的標(biāo)識(shí)碼生成第一序列值。防火墻將替換后的響應(yīng)發(fā)送至合法客戶端,合法客戶端將響應(yīng)中的第二認(rèn)證令牌存儲(chǔ)起來(lái),以便在再次訪問(wèn)服務(wù)器時(shí)提供給服務(wù)器驗(yàn)證。由于此時(shí)第二認(rèn)證令牌中包含有合法客戶端的信息。因此,當(dāng)有客戶端發(fā)起訪問(wèn)服務(wù)器的請(qǐng)求時(shí),只需將第二認(rèn)證令牌中包含的合法客戶端的信息與當(dāng)前發(fā)起訪問(wèn)請(qǐng)求的客戶端的信息進(jìn)行比較,如果匹配,則說(shuō)明當(dāng)前發(fā)起訪問(wèn)請(qǐng)求的客戶端是合法獲得第二認(rèn)證令牌的合法客戶端;否則,當(dāng)前發(fā)起訪問(wèn)請(qǐng)求的客戶端為非法客戶端,防火墻拒絕放行。本實(shí)施例采用了客戶端身份驗(yàn)證機(jī)制,避免非法客戶端假冒合法客戶端訪問(wèn)服務(wù)器,有效防御各種會(huì)話劫持攻擊,即使更換了令牌,也不會(huì)產(chǎn)生誤報(bào)或漏報(bào),防御性更加全面、可靠。
·
如圖5所示,圖5為本發(fā)明防御會(huì)話劫持攻擊的防火墻的第二實(shí)施例的結(jié)構(gòu)示意圖。本實(shí)施例以圖4所示實(shí)施例為基礎(chǔ),增加了判斷模塊40。其中收發(fā)模塊10還用于,接收當(dāng)前客戶端發(fā)送的第二訪問(wèn)請(qǐng)求,第二訪問(wèn)請(qǐng)求中包括第二認(rèn)證令牌;重組模塊20還用于,從第二認(rèn)證令牌中分離出第一認(rèn)證令牌和第一序列值;根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值;判斷模塊40用于,當(dāng)?shù)诙蛄兄蹬c第一序列值相同時(shí),確定當(dāng)前客戶端為合法客戶端;替換模塊30還用于,將第二訪問(wèn)請(qǐng)求中的第二認(rèn)證令牌替換為第一認(rèn)證令牌;收發(fā)模塊10還用于,將包含第一認(rèn)證令牌的第二訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器,供服務(wù)器驗(yàn)證第一認(rèn)證令牌和響應(yīng)第二訪問(wèn)請(qǐng)求。重組模塊20具體還用于,采用與生成第一序列值時(shí)相同的隨機(jī)串和散列算法,將當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼生成第二序列值,作為第二序列值。本實(shí)施例中,發(fā)送第二訪問(wèn)請(qǐng)求的客戶端可能是再次發(fā)起訪問(wèn)請(qǐng)求的合法客戶端,也可能是盜取令牌后的非法客戶端,因此,在第二訪問(wèn)請(qǐng)求中包括有第二認(rèn)證令牌。將第二認(rèn)證令牌分離為兩部分,一部分與第一認(rèn)證令牌相同,另一部分與第一序列值相同,作為驗(yàn)證客戶端身份的標(biāo)識(shí)。防火墻獲取當(dāng)前客戶端的信息,生成第二序列值,用于驗(yàn)證當(dāng)前客戶端是否合法。第二序列值的生成方式與第一序列值生成方式相同??刹捎门c生成第一序列值時(shí)相同的隨機(jī)串和散列算法,將當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼生成第二序列值,作為第二序列值。如果當(dāng)前客戶端是再次發(fā)起訪問(wèn)請(qǐng)求的合法客戶端,則當(dāng)前客戶端的信息與合法客戶端的信息相同,生成的第二序列值也應(yīng)與第一序列值相同。如果當(dāng)前客戶端是盜取令牌后的非法客戶端,則非法客戶端的信息與合法客戶端的信息顯然不同,此時(shí)生成的第二序列值也與第一序列值不同。通過(guò)該步驟即可判斷出當(dāng)前客戶端是否為合法客戶端。防火墻在判定當(dāng)前客戶端為合法客戶端后,將第二認(rèn)證令牌還原為第一認(rèn)證令牌,再發(fā)送至服務(wù)器進(jìn)行驗(yàn)證。本實(shí)施例由于采用了客戶端信息進(jìn)行身份驗(yàn)證,在當(dāng)前客戶端信息與合法客戶端信息一致時(shí),防火墻對(duì)當(dāng)前客戶端放行,避免了非法客戶端假冒合法客戶端訪問(wèn)服務(wù)器,有效防御各種會(huì)話劫持攻擊,即使更換了令牌,也不會(huì)產(chǎn)生誤報(bào)或漏報(bào),防御性更加全面、可靠。如圖6所示,圖6為本發(fā)明防御會(huì)話劫持攻擊的防火墻的第三實(shí)施例的結(jié)構(gòu)示意圖。本實(shí)施例以圖5所示實(shí)施例為基礎(chǔ),增加了查找模塊50。其中查找模塊50用于,在服務(wù)器中查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面;重組模塊20具體還用于,在預(yù)設(shè)時(shí)間內(nèi)獲取多個(gè)訪問(wèn)請(qǐng)求中的Cookie數(shù)據(jù)和多個(gè)響應(yīng)中的Set-Cookie數(shù)據(jù);獲取各個(gè)Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的鍵值對(duì);根據(jù)各個(gè)鍵值對(duì)及其組合,分別生成對(duì)應(yīng)的第三訪問(wèn)請(qǐng)求;收發(fā)模塊10還用于,分別采用各個(gè)第三訪問(wèn)請(qǐng)求,訪問(wèn)頁(yè)面;接收頁(yè)面返回的對(duì)應(yīng)于各個(gè)第三訪問(wèn)請(qǐng)求的第三響應(yīng);判斷模塊40用于,當(dāng)?shù)谌憫?yīng)有效時(shí),有效的第三響應(yīng)對(duì)應(yīng)的鍵值對(duì)為第一認(rèn)證令牌存放的位置。 本實(shí)施例中,查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面即查找一個(gè)需要通過(guò)登錄認(rèn)證后才可以訪問(wèn)的頁(yè)面。確定依賴令牌訪問(wèn)的頁(yè)面可以通過(guò)提供一個(gè)給管理員的配置接口來(lái)確定,或者在防火墻部署前通過(guò)防火墻自帶的掃描功能來(lái)確定,還可以通過(guò)實(shí)時(shí)檢測(cè)登錄的請(qǐng)求和響應(yīng)來(lái)確定。本實(shí)施例采用實(shí)時(shí)檢測(cè)登錄的請(qǐng)求和響應(yīng)的方法來(lái)確定。防火墻剛剛部署后,在足夠長(zhǎng)的設(shè)定時(shí)間內(nèi),檢測(cè)所有接收到的請(qǐng)求或響應(yīng)報(bào)文,獲取盡可能多的樣本,例如,從請(qǐng)求報(bào)頭Cookie或響應(yīng)報(bào)頭Set-Cookie中獲取樣本。獲取的Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的部分或者全部鍵值對(duì),并在生成第三訪問(wèn)請(qǐng)求報(bào)文時(shí),把第三訪問(wèn)請(qǐng)求報(bào)文的Cookie消息報(bào)頭修改為某一個(gè)鍵值對(duì)或其組合,即自定義的訪問(wèn)請(qǐng)求,直到遍歷完所有鍵值對(duì)的組合。防火墻根據(jù)服務(wù)器的響應(yīng)來(lái)判斷發(fā)送的第三訪問(wèn)請(qǐng)求的Cookie中是否含有令牌,判定的標(biāo)準(zhǔn)可以是報(bào)文長(zhǎng)度、關(guān)鍵字等可以區(qū)分的指標(biāo),如果報(bào)文長(zhǎng)度與正確響應(yīng)頁(yè)面的長(zhǎng)度相等,說(shuō)明第三訪問(wèn)請(qǐng)求中的Cookie鍵值對(duì)或其組合含有令牌,并記錄該鍵值對(duì)或其組合。當(dāng)有效的位置為多個(gè)時(shí),為了確定最精簡(jiǎn)的存放會(huì)話令牌的位置,可檢索最簡(jiǎn)的一個(gè)。本實(shí)施例通過(guò)防火墻自學(xué)習(xí)功能確定令牌存放位置,可準(zhǔn)確在訪問(wèn)請(qǐng)求中獲得認(rèn)證令牌,可避免令牌獲取錯(cuò)誤的情況發(fā)生。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種防御會(huì)話劫持攻擊的方法,其特征在于,包括步驟 接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求,并將所述第一訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器; 接收所述服務(wù)器返回的第一響應(yīng),所述第一響應(yīng)中包括第一認(rèn)證令牌; 根據(jù)所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值,將所述第一認(rèn)證令牌和第一序列值重組為第二認(rèn)證令牌; 將所述第一響應(yīng)中的第一認(rèn)證令牌替換為所述第二認(rèn)證令牌,并將包含所述第二認(rèn)證令牌的所述第一響應(yīng)發(fā)送至所述合法客戶端。
2.根據(jù)權(quán)利要求1所述的防御會(huì)話劫持攻擊的方法,其特征在于,所述將包含所述第二認(rèn)證令牌的所述第一響應(yīng)發(fā)送至所述合法客戶端的步驟之后還包括 接收當(dāng)前客戶端發(fā)送的第二訪問(wèn)請(qǐng)求,所述第二訪問(wèn)請(qǐng)求中包括第二認(rèn)證令牌; 從所述第二認(rèn)證令牌中分離出所述第一認(rèn)證令牌和第一序列值; 根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值; 當(dāng)所述第二序列值與所述第一序列值相同時(shí),確定當(dāng)前客戶端為所述合法客戶端; 將所述第二訪問(wèn)請(qǐng)求中的第二認(rèn)證令牌替換為所述第一認(rèn)證令牌; 將包含所述第一認(rèn)證令牌的所述第二訪問(wèn)請(qǐng)求發(fā)送至所述服務(wù)器,供所述服務(wù)器驗(yàn)證所述第一認(rèn)證令牌和響應(yīng)所述第二訪問(wèn)請(qǐng)求。
3.根據(jù)權(quán)利要求2所述的防御會(huì)話劫持攻擊的方法,其特征在于,所述根據(jù)合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼,生成第一序列值的步驟具體包括 采用隨機(jī)串和散列算法,將所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值。
4.根據(jù)權(quán)利要求3所述的防御會(huì)話劫持攻擊的方法,其特征在于,所述根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值的步驟具體包括 采用與生成第一序列值時(shí)相同的隨機(jī)串和散列算法,將當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼生成第二序列值,作為第二序列值。
5.根據(jù)權(quán)利要求2至4任一項(xiàng)所述的防御會(huì)話劫持攻擊的方法,其特征在于,所述接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求的步驟之前還包括 在所述服務(wù)器中查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面; 在預(yù)設(shè)時(shí)間內(nèi)獲取多個(gè)訪問(wèn)請(qǐng)求中的Cookie數(shù)據(jù)和多個(gè)響應(yīng)中的Set-Cookie數(shù)據(jù); 獲取各個(gè)所述Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的鍵值對(duì); 根據(jù)各個(gè)所述鍵值對(duì)及其組合,分別生成對(duì)應(yīng)的第三訪問(wèn)請(qǐng)求; 分別采用各個(gè)所述第三訪問(wèn)請(qǐng)求,訪問(wèn)所述頁(yè)面; 接收所述頁(yè)面返回的對(duì)應(yīng)于各個(gè)所述第三訪問(wèn)請(qǐng)求的第三響應(yīng); 當(dāng)所述第三響應(yīng)有效時(shí),有效的所述第三響應(yīng)對(duì)應(yīng)的鍵值對(duì)為所述第一認(rèn)證令牌存放的位置。
6.一種防御會(huì)話劫持攻擊的防火墻,其特征在于,包括 收發(fā)模塊,用于接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求,并將所述第一訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器;接收所述服務(wù)器返回的第一響應(yīng),所述第一響應(yīng)中包括第一認(rèn)證令牌; 重組模塊,用于根據(jù)所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值,將所述第一認(rèn)證令牌和第一序列值重組為第二認(rèn)證令牌;替換模塊,用于將所述第一響應(yīng)中的第一認(rèn)證令牌替換為所述第二認(rèn)證令牌; 所述收發(fā)模塊還用于,將包含所述第二認(rèn)證令牌的所述第一響應(yīng)發(fā)送至所述合法客戶端。
7.根據(jù)權(quán)利要求6所述的防御會(huì)話劫持攻擊的防火墻,其特征在于,還包括判斷模塊; 所述收發(fā)模塊還用于,接收當(dāng)前客戶端發(fā)送的第二訪問(wèn)請(qǐng)求,所述第二訪問(wèn)請(qǐng)求中包括第二認(rèn)證令牌; 所述重組模塊還用于,從所述第二認(rèn)證令牌中分離出所述第一認(rèn)證令牌和第一序列值;根據(jù)當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼,生成第二序列值; 所述判斷模塊用于,當(dāng)所述第二序列值與所述第一序列值相同時(shí),確定當(dāng)前客戶端為所述合法客戶端; 所述替換模塊還用于,將所述第二訪問(wèn)請(qǐng)求中的第二認(rèn)證令牌替換為所述第一認(rèn)證令牌; 所述收發(fā)模塊還用于,將包含所述第一認(rèn)證令牌的所述第二訪問(wèn)請(qǐng)求發(fā)送至所述服務(wù)器,供所述服務(wù)器驗(yàn)證所述第一認(rèn)證令牌和響應(yīng)所述第二訪問(wèn)請(qǐng)求。
8.根據(jù)權(quán)利要求7所述的防御會(huì)話劫持攻擊的防火墻,其特征在于,所述重組模塊具體用于 采用隨機(jī)串和散列算法,將所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值。
9.根據(jù)權(quán)利要求8所述的防御會(huì)話劫持攻擊的防火墻,其特征在于,所述重組模塊具體還用于 采用與生成第一序列值時(shí)相同的隨機(jī)串和散列算法,將當(dāng)前客戶端的網(wǎng)絡(luò)地址和當(dāng)前客戶端的標(biāo)識(shí)碼生成第二序列值,作為第二序列值。
10.根據(jù)權(quán)利要求7至9任一項(xiàng)所述的防御會(huì)話劫持攻擊的防火墻,其特征在于,還包括查找模塊; 所述查找模塊用于,在所述服務(wù)器中查找一個(gè)依賴令牌訪問(wèn)的頁(yè)面; 所述重組模塊具體還用于,在預(yù)設(shè)時(shí)間內(nèi)獲取多個(gè)訪問(wèn)請(qǐng)求中的Cookie數(shù)據(jù)和多個(gè)響應(yīng)中的Set-Cookie數(shù)據(jù);獲取各個(gè)所述Cookie數(shù)據(jù)和Set-Cookie數(shù)據(jù)的鍵值對(duì);根據(jù)各個(gè)所述鍵值對(duì)及其組合,分別生成對(duì)應(yīng)的第三訪問(wèn)請(qǐng)求; 所述收發(fā)模塊還用于,分別采用各個(gè)所述第三訪問(wèn)請(qǐng)求,訪問(wèn)所述頁(yè)面;接收所述頁(yè)面返回的對(duì)應(yīng)于各個(gè)所述第三訪問(wèn)請(qǐng)求的第三響應(yīng); 所述判斷模塊用于,當(dāng)所述第三響應(yīng)有效時(shí),有效的所述第三響應(yīng)對(duì)應(yīng)的鍵值對(duì)為所述第一認(rèn)證令牌存放的位置。
全文摘要
本發(fā)明公開(kāi)了一種防御會(huì)話劫持攻擊的方法和防火墻,其方法包括接收合法客戶端發(fā)送的第一訪問(wèn)請(qǐng)求,并將所述第一訪問(wèn)請(qǐng)求發(fā)送至服務(wù)器;接收所述服務(wù)器返回的第一響應(yīng),所述第一響應(yīng)中包括第一認(rèn)證令牌;根據(jù)所述合法客戶端的網(wǎng)絡(luò)地址和所述合法客戶端的標(biāo)識(shí)碼生成第一序列值,將所述第一認(rèn)證令牌和第一序列值重組為第二認(rèn)證令牌;將所述第一響應(yīng)中的第一認(rèn)證令牌替換為所述第二認(rèn)證令牌,并將包含所述第二認(rèn)證令牌的所述第一響應(yīng)發(fā)送至所述合法客戶端。本發(fā)明采用了客戶端身份驗(yàn)證機(jī)制,避免非法客戶端假冒合法客戶端訪問(wèn)服務(wù)器,有效防御各種會(huì)話劫持攻擊,即使更換了令牌,也不會(huì)產(chǎn)生誤報(bào)或漏報(bào),防御性更加全面、可靠。
文檔編號(hào)H04L29/06GK103067385SQ20121057953
公開(kāi)日2013年4月24日 申請(qǐng)日期2012年12月27日 優(yōu)先權(quán)日2012年12月27日
發(fā)明者王朋濤 申請(qǐng)人:深圳市深信服電子科技有限公司