專(zhuān)利名稱(chēng):一種Cookie解析方法、裝置及一種客戶端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),特別是涉及一種Cookie解析方法、一種Cookie解析裝置及一種包含該裝置的客戶端。
背景技術(shù):
Cookie (復(fù)數(shù)形態(tài)Cookies),中文名稱(chēng)為小型文字文件或小甜餅,指某些網(wǎng)站為了辨別用戶身份而儲(chǔ)存在用戶本地終端(Client,客戶端)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。網(wǎng)站服務(wù)器可以利用Cookies包含信息的任意性來(lái)篩選并經(jīng)常性地維護(hù)這些信息,以判斷在 HTTP等協(xié)議傳輸中的狀態(tài)。例如,Cookies最典型的應(yīng)用是判定注冊(cè)用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會(huì)得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡(jiǎn)化登錄手續(xù)。另一個(gè)重要的應(yīng)用場(chǎng)合是“購(gòu)物車(chē)”之類(lèi)的處理,例如用戶可能會(huì)在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同頁(yè)面中選擇不同的商品,這些信息都會(huì)寫(xiě)入Cookies,以便在最后付款時(shí)提取信息。Cookie的生存周期有兩種一種是Cookie可以保持登錄信息到用戶下次與服務(wù)器的會(huì)話,換句話說(shuō),下次訪問(wèn)同一網(wǎng)站時(shí),用戶會(huì)發(fā)現(xiàn)不必輸入用戶名和密碼就已經(jīng)登錄了(當(dāng)然,不排除用戶手工刪除Cookie的情形)。另一種是,還有一些Cookie在用戶退出會(huì)話的時(shí)候就被刪除了,這樣可以有效保護(hù)個(gè)人隱私。由上可知,Cookie技術(shù)可以更加準(zhǔn)確地收集訪客的信息,從而使訪客更方便地訪問(wèn)應(yīng)用服務(wù)器,使網(wǎng)頁(yè)瀏覽更容易。但是,Cookie技術(shù)帶來(lái)便利性的同時(shí),也存在著Cookie被偷窺或篡改的風(fēng)險(xiǎn)。在網(wǎng)絡(luò)上,Cookie篡改(cookie poisoning)是攻擊者通過(guò)修改Cookie獲得用戶未授權(quán)信息, 進(jìn)而盜用用戶身份的過(guò)程,攻擊者可能使用此信息打開(kāi)新賬號(hào)或者獲取用戶已存在賬號(hào)的訪問(wèn)權(quán)限。因此,Cookie在某種程度上已經(jīng)嚴(yán)重危及用戶的隱私和安全。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種Cookie解析方法、裝置及一種客戶端,以解決現(xiàn)有技術(shù)中Cookie易被篡改的問(wèn)題。為了解決上述問(wèn)題,本發(fā)明公開(kāi)了一種Cookie解析方法,包括依據(jù)客戶端向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng);從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息;將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。優(yōu)選的,從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息,包括通過(guò)訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng),從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息。優(yōu)選的,將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中,包括將所述解析出的Cookie信息作為該客戶端的標(biāo)識(shí)寫(xiě)入所述客戶端的內(nèi)存中。
其中,所述客戶端的標(biāo)識(shí)是所述應(yīng)用服務(wù)器用以區(qū)別客戶端的標(biāo)識(shí)。優(yōu)選的,所述通過(guò)訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)進(jìn)行Cookie解析的步驟包括從所述響應(yīng)的包頭的kt-cookie字段中提取出Cookie參數(shù);調(diào)用庫(kù)函數(shù)strtokO,根據(jù)Cookie 參數(shù)中的分隔符號(hào)從Cookie參數(shù)解析出Cookie子項(xiàng);逐個(gè)解析Cookie子項(xiàng),得到對(duì)應(yīng)每個(gè)Cookie子項(xiàng)的“名/值”對(duì)。優(yōu)選的,所述將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中,包括在內(nèi)存中為各Cookie子項(xiàng)申請(qǐng)緩存空間;將所述解析出的各Cookie子項(xiàng)的“名/值”對(duì)保存到對(duì)應(yīng)的緩存空間中。優(yōu)選的,所述方法還包括調(diào)用函數(shù)IsCookieExpiredO,檢查所述Cookie是否過(guò)期;如果未過(guò)期,則將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。優(yōu)選的,所述調(diào)用函數(shù)IsCookieExpiredO檢查所述Cookie是否過(guò)期,包括所述 Cookie參數(shù)的一個(gè)Cookie子項(xiàng)中包含該Cookie的失效期;調(diào)用庫(kù)函數(shù)GetSystemTime () 獲得當(dāng)前系統(tǒng)時(shí)間;將所述Cookie的失效期和當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換為統(tǒng)一格式后進(jìn)行比較, 如果當(dāng)前系統(tǒng)時(shí)間小于Cookie的失效期,則該Cookie未過(guò)期;否則,該Cookie過(guò)期。優(yōu)選的,所述方法還包括當(dāng)所述客戶端再次向所述應(yīng)用服務(wù)器發(fā)送請(qǐng)求時(shí),從內(nèi)存中讀取相應(yīng)的Cookie信息,并將所述Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。優(yōu)選的,將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中之前,還包括將所述解析出的Cookie信息進(jìn)行加密,然后寫(xiě)入所述客戶端的內(nèi)存中。本發(fā)明還提供了一種Cookie解析裝置,包括接收模塊,用于依據(jù)客戶端向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng);解析模塊,用于從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie fn息;保存模塊,用于將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。優(yōu)選的,所述解析模塊通過(guò)訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng),從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息。優(yōu)選的,所述保存模塊將所述解析出的Cookie信息作為該客戶端的標(biāo)識(shí)寫(xiě)入所述客戶端的內(nèi)存中。其中,所述客戶端的標(biāo)識(shí)是所述應(yīng)用服務(wù)器用以區(qū)別客戶端的標(biāo)識(shí)。優(yōu)選的,所述解析模塊包括參數(shù)提取子模塊,用于從所述響應(yīng)的包頭的kt-cookie字段中提取出Cookie參數(shù);子項(xiàng)分隔子模塊,用于調(diào)用庫(kù)函數(shù)strtokO,根據(jù)Cookie參數(shù)中的分隔符號(hào)從 Cookie參數(shù)解析出Cookie子項(xiàng);解析子模塊,用于逐個(gè)解析Cookie子項(xiàng),得到對(duì)應(yīng)每個(gè)Cookie子項(xiàng)的“名/值” 對(duì)。優(yōu)選的,所述保存模塊包括緩存申請(qǐng)子模塊,用于在內(nèi)存中為各Cookie子項(xiàng)申請(qǐng)緩存空間;保存子模塊,用于將所述解析出的各Cookie子項(xiàng)的“名/值”對(duì)保存到對(duì)應(yīng)的緩存空間中。優(yōu)選的,所述裝置還包括過(guò)期檢查模塊,用于調(diào)用函數(shù)IsCookieExpiredO,檢查所述Cookie是否過(guò)期;如果未過(guò)期,則觸發(fā)所述保存模塊將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。優(yōu)選的,所述過(guò)期檢查模塊包括所述Cookie參數(shù)的一個(gè)Cookie子項(xiàng)中包含該Cookie的失效期;系統(tǒng)時(shí)間獲取子模塊,用于調(diào)用庫(kù)函數(shù)GetSystemTimeO獲得當(dāng)前系統(tǒng)時(shí)間;比較子模塊,用于將所述Cookie的失效期和當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換為統(tǒng)一格式后進(jìn)行比較,如果當(dāng)前系統(tǒng)時(shí)間小于Cookie的失效期,則該Cookie未過(guò)期;否則,該Cookie過(guò)期。優(yōu)選的,所述裝置還包括讀取模塊,用于當(dāng)所述客戶端再次向所述應(yīng)用服務(wù)器發(fā)送請(qǐng)求時(shí),從內(nèi)存中讀取相應(yīng)的Cookie信息,并將所述Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。優(yōu)選的,所述裝置還包括加密模塊,用于將所述解析模塊解析出的Cookie信息進(jìn)行加密,然后觸發(fā)所述保存模塊寫(xiě)入所述客戶端的內(nèi)存中;解密模塊,用于當(dāng)所述讀取模塊從內(nèi)存中讀取加密的Cookie信息后,對(duì)所述加密的Cookie信息進(jìn)行解密,然后觸發(fā)所述讀取模塊將解密后的Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。本發(fā)明還提供了一種客戶端,其特征在于,包括如上所述的Cookie解析裝置。與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點(diǎn)首先,本發(fā)明提供的Cookie解析方法可以防止惡意代碼通過(guò)跟蹤、截獲Cookie來(lái)偷窺用戶信息、修改用戶賬號(hào),從而保護(hù)用戶的隱私信息。其次,本發(fā)明在客戶端與應(yīng)用服務(wù)器的會(huì)話過(guò)程中,繞過(guò)操作系統(tǒng)應(yīng)用層網(wǎng)絡(luò) API,直接訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)來(lái)進(jìn)行數(shù)據(jù)包的收發(fā),并自行從所述數(shù)據(jù)包中進(jìn)行 Cookie的解析,將解析出的Cookie信息保存到客戶端的內(nèi)存中。而現(xiàn)有技術(shù)是通過(guò)調(diào)用操作系統(tǒng)中的網(wǎng)絡(luò)應(yīng)用編程接口完成解析。在此過(guò)程中,一方面,由于是直接訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)而不訪問(wèn)任何客戶端網(wǎng)絡(luò)應(yīng)用編程接口,自行實(shí)現(xiàn)了 Cookie的解析和緩存,從源頭上避免惡意代碼在網(wǎng)絡(luò)應(yīng)用層或通過(guò)網(wǎng)絡(luò)應(yīng)用編程接口劫持Cookie、偷窺信息,最大限度地保護(hù)了用戶隱私;另一方面,現(xiàn)有技術(shù)將解析出的Cookie信息采用文件形式保存,容易被文件級(jí)的惡意代碼攻擊破壞,而本發(fā)明將解析出的Cookie信息保存到客戶端內(nèi)存中,由于內(nèi)存的讀寫(xiě)權(quán)限是基于進(jìn)程權(quán)限的,被攻擊破壞的難度要大于對(duì)文件的讀寫(xiě),因此可以最大程度地防止所述文件級(jí)的惡意代碼攻擊破壞。
圖1是本發(fā)明實(shí)施例所述一種Cookie解析方法的流程圖;圖2是本發(fā)明優(yōu)選實(shí)施例所述一種Cookie解析方法的流程圖;圖3是本發(fā)明實(shí)施例所述一種Cookie解析裝置的結(jié)構(gòu)圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。為了解決Cookie易被篡改的問(wèn)題,本發(fā)明首先分析了現(xiàn)有技術(shù)中Cookie易被篡改的原因,具體如下Cookies是從應(yīng)用服務(wù)器傳遞給客戶端的一些文本數(shù)據(jù),在以后訪問(wèn)同一個(gè)站點(diǎn)時(shí),客戶端會(huì)再把這些數(shù)據(jù)通過(guò)HTTP等協(xié)議的請(qǐng)求包頭發(fā)送給應(yīng)用服務(wù)器?,F(xiàn)有技術(shù)中, 在客戶端與應(yīng)用服務(wù)器遵循協(xié)議規(guī)范的會(huì)話過(guò)程中,在協(xié)議的網(wǎng)絡(luò)應(yīng)用層,客戶端通過(guò)調(diào)用操作系統(tǒng)中的網(wǎng)絡(luò)應(yīng)用編程接口來(lái)完成交互。而且,一般情況下客戶端會(huì)把Cookie保存到文件中?;谝陨锨闆r,Cookie的攔截或篡改一般包括兩種第一種是基于文件的,即在客戶端寫(xiě)入文件的過(guò)程中,如果第三方知道文件格式, 就可以通過(guò)文件攻擊的方法攔截Cookie,并插入、修改、刪除該Cookie ;第二種是基于網(wǎng)絡(luò)應(yīng)用層過(guò)濾的,即在客戶端與應(yīng)用服務(wù)器的會(huì)話過(guò)程中,在會(huì)話協(xié)議的網(wǎng)絡(luò)應(yīng)用層通過(guò)網(wǎng)絡(luò)應(yīng)用編程接口劫持Cookie?;谝陨戏治?,本發(fā)明提出一種新的Cookie解析方法、裝置及一種包含該裝置的客戶端,其核心思想是在客戶端與應(yīng)用服務(wù)器的會(huì)話過(guò)程中,直接訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)而不是網(wǎng)絡(luò)應(yīng)用編程接口來(lái)自行完成Cookie的解析,并將解析出的Cookie信息保存到客戶端的內(nèi)存中,可以最大程度地避免上述基于文件或基于網(wǎng)絡(luò)應(yīng)用層過(guò)濾的Cookie攔截,解決Cookie易被篡改的問(wèn)題。下面通過(guò)實(shí)施例進(jìn)行詳細(xì)說(shuō)明。參照?qǐng)D1,是本發(fā)明實(shí)施例所述一種Cookie解析方法的流程圖。對(duì)于用戶客戶端 (簡(jiǎn)稱(chēng)客戶端)而言,從登錄某應(yīng)用服務(wù)器(如某網(wǎng)站的服務(wù)器)到離開(kāi)該應(yīng)用服務(wù)器,認(rèn)為是一次完整的會(huì)話。在一次會(huì)話期間,執(zhí)行以下步驟步驟101,客戶端訪問(wèn)操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng),向應(yīng)用服務(wù)器發(fā)出請(qǐng)求;其中,所述請(qǐng)求一般指訪問(wèn)請(qǐng)求,可以是HTTP請(qǐng)求,也可以是遵循其他通信協(xié)議的請(qǐng)求。所述客戶端并沒(méi)有訪問(wèn)網(wǎng)絡(luò)應(yīng)用編程接口,如WinHTTP API、WinInet API等網(wǎng)絡(luò)接口,即沒(méi)有通過(guò)網(wǎng)絡(luò)應(yīng)用層向應(yīng)用服務(wù)器發(fā)出請(qǐng)求。步驟102,應(yīng)用服務(wù)器將Cookie信息嵌入請(qǐng)求響應(yīng)的包頭,發(fā)給客戶端;通常由應(yīng)用服務(wù)器指示客戶端是否進(jìn)行Cookie的解析,所述指示以協(xié)議命令的方式發(fā)給客戶端。以HTTP協(xié)議為例,如果指示解析,則Cookie將成為HTTP協(xié)議中的數(shù)據(jù)載荷部分或者說(shuō)是HTTP命令中的一部分,包含在應(yīng)用服務(wù)器的請(qǐng)求響應(yīng)中發(fā)給客戶端。步驟103,依據(jù)所述客戶端向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng);即客戶端接收與發(fā)出的請(qǐng)求相對(duì)應(yīng)的響應(yīng)。步驟104,通過(guò)訪問(wèn)操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng),從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息;
所述解析由于沒(méi)有訪問(wèn)網(wǎng)絡(luò)應(yīng)用編程接口,即不訪問(wèn)應(yīng)用層網(wǎng)絡(luò)API,因此自行提供了一種通過(guò)訪問(wèn)操作系統(tǒng)網(wǎng)絡(luò)內(nèi)核的方法來(lái)完成解析,該方法將在圖2所示示例中進(jìn)行詳細(xì)說(shuō)明。步驟105,將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。需要注意的是,步驟105是將解析出的Cookie信息保存到了內(nèi)存中,而不是文件中。而且,所述寫(xiě)入內(nèi)存的Cookie信息將作為該客戶端的標(biāo)識(shí),即從本質(zhì)上講,Cookie信息可以看作是該客戶端的身份證,可以記錄該客戶端的用戶ID、密碼、瀏覽過(guò)的網(wǎng)頁(yè)、停留的時(shí)間等信息,一般只能由提供該Cookie信息的服務(wù)器來(lái)讀取。因此,所述客戶端的標(biāo)識(shí)是所述應(yīng)用服務(wù)器用以區(qū)別客戶端的標(biāo)識(shí)。這里包含兩層含義首先,客戶端的標(biāo)識(shí)是與應(yīng)用服務(wù)器對(duì)應(yīng)的;其次,cookie信息是用來(lái)和應(yīng)用服務(wù)器交互的。基于上述流程,進(jìn)一步,當(dāng)所述客戶端再次向所述應(yīng)用服務(wù)器發(fā)送請(qǐng)求時(shí),可以調(diào)用函數(shù)LoadCookieFromMemO從內(nèi)存中讀取相應(yīng)的Cookie信息,并并將所述Cookie信息作為該客戶端的標(biāo)識(shí)嵌入所述請(qǐng)求的包頭中一同發(fā)送。具體的,當(dāng)所述客戶端再次向所述應(yīng)用服務(wù)器發(fā)送請(qǐng)求時(shí),如果服務(wù)器需要客戶端發(fā)送上次保存的cookie信息,則在請(qǐng)求響應(yīng)中予以指示,客戶端根據(jù)請(qǐng)求響應(yīng)會(huì)按照指示發(fā)送。但是,如果服務(wù)器知道客戶端已經(jīng)解析并把Cookie發(fā)送回來(lái),則可能不再重復(fù)以前的Cookie,但有可能指示新的Cookie解析。 總之,在符合協(xié)議規(guī)范的情況下,應(yīng)用服務(wù)器可以要求客戶端對(duì)Cookie進(jìn)行解析,或者,要求客戶端將本地保存的Cookie發(fā)送回來(lái)。優(yōu)選的,為了進(jìn)一步加強(qiáng)安全性,還可以在將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中之前,先將所述解析出的Cookie信息進(jìn)行加密,然后將加密后的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。相應(yīng)的,當(dāng)再次從內(nèi)存中讀取出加密的Cookie信息后,也先進(jìn)行解密處理,然后再將解密后的Cookie信息作為該客戶端的標(biāo)識(shí)嵌入所述請(qǐng)求的包頭中一同發(fā)送。其中,加密的方法很多,比較簡(jiǎn)單一點(diǎn)的有Base64、md5、sha等,而相對(duì)比較復(fù)雜一點(diǎn)的有DES、TripleDES、RC2、Rijndael 等。需要說(shuō)明的是,上述實(shí)施例不僅提供了一種從請(qǐng)求的響應(yīng)中解析出Cookie信息并存入客戶端內(nèi)存的方法,該方法可以防止惡意代碼通過(guò)跟蹤、截獲Cookie來(lái)偷窺用戶信息、修改用戶賬號(hào),從而保護(hù)用戶的隱私信息;而且,上述實(shí)施例還提供了一種通過(guò)訪問(wèn)客戶端操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)來(lái)完成數(shù)據(jù)包收發(fā),進(jìn)而完成Cookie解析的方法。因此,首先,本發(fā)明提供的Cookie解析方法可以通過(guò)訪問(wèn)客戶端操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)來(lái)完成Cookie解析,也可以通過(guò)其他方式,如有其他模塊代替操作系統(tǒng)的內(nèi)核驅(qū)動(dòng), 自行實(shí)現(xiàn)滿足特定需求的輕量級(jí)TCP/IP協(xié)議棧,進(jìn)行數(shù)據(jù)包的收發(fā)及Cookie的解析。其次,所述通過(guò)訪問(wèn)客戶端操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)來(lái)完成Cookie解析的方法是一種優(yōu)選的實(shí)施例,進(jìn)一步,所述內(nèi)核驅(qū)動(dòng)優(yōu)選操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng)。這樣,上述Cookie 解析方法就是一種等同于網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng)級(jí)的解析,即所有與應(yīng)用服務(wù)器的收發(fā)數(shù)據(jù)流都是通過(guò)直接和網(wǎng)絡(luò)內(nèi)核通訊來(lái)完成,繞過(guò)了操作系統(tǒng)應(yīng)用層網(wǎng)絡(luò)API,不同于現(xiàn)有技術(shù)基于網(wǎng)絡(luò)應(yīng)用層級(jí)的解析,即通過(guò)訪問(wèn)應(yīng)用層網(wǎng)絡(luò)API來(lái)完成。這樣,上述Cookie解析過(guò)程就無(wú)需訪問(wèn)任何客戶端網(wǎng)絡(luò)應(yīng)用編程接口,自行實(shí)現(xiàn)了 Cookie的解析和緩存,可以防止應(yīng)用層網(wǎng)絡(luò)攔截、過(guò)濾和偷窺,從源頭上避免惡意代碼在網(wǎng)絡(luò)應(yīng)用層或通過(guò)網(wǎng)絡(luò)應(yīng)用編程接口劫持Cookie、偷窺信息,最大限度地保護(hù)了用戶隱私。
而且,上述Cookie解析方法是將解析出的Cookie信息保存到客戶端內(nèi)存中,由于內(nèi)存的讀寫(xiě)權(quán)限是基于進(jìn)程權(quán)限的,被攻擊破壞的難度要大于對(duì)文件的讀寫(xiě),因此可以最大程度地防止文件級(jí)的惡意代碼攻擊破壞。在上述實(shí)施例中,關(guān)于如何訪問(wèn)操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng)來(lái)解析Cookie,本發(fā)明可以有多種實(shí)現(xiàn)方式,下面將通過(guò)圖2所示示例進(jìn)行舉例說(shuō)明。當(dāng)然,本發(fā)明的保護(hù)范圍不限于圖2所示的實(shí)現(xiàn)方式,其他通過(guò)訪問(wèn)操作系統(tǒng)網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng)完成Cookie解析的方法也屬于本發(fā)明的保護(hù)范圍。參照?qǐng)D2,是本發(fā)明優(yōu)選實(shí)施例所述一種Cookie解析方法的流程圖。以客戶端的應(yīng)用程序(如瀏覽器)與應(yīng)用服務(wù)器進(jìn)行HTTP交互為例,應(yīng)用程序訪問(wèn)操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng)完成所述交互,具體如下步驟201,依據(jù)瀏覽器向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng);步驟202,從所述響應(yīng)的包頭的kt-cookie字段中提取出Cookie參數(shù);所述Cookie參數(shù)通常包括5方面的描述信息,如下1)名稱(chēng)(The name of the cookie,必選);2)值(The value of the cookie,必選);如一些敏感信息,包括用戶名,電腦名,使用的瀏覽器和曾經(jīng)訪問(wèn)的網(wǎng)站,等等;3)失效期(The expiration date of the cookie,可選,默認(rèn)值_1,表示瀏覽器關(guān)閉則清除);4)路徑(The path the cookie is valid for,一般用于瀏覽器管理Cookie,用于限定Cookie的作用域);5)域名(The domain the cookie is valid for,一般用于瀏覽器管理 Cookie, 這樣,瀏覽器才知道訪問(wèn)某個(gè)url所屬的域名時(shí),會(huì)在本地Cookie文件中找有沒(méi)有有效的 Cookie信息要傳遞給服務(wù)器)。除以上5方面的描述信息外,Cookie參數(shù)還可能包含其他信息,在此不作限定。需要說(shuō)明的是,domain+path是用來(lái)限制和匹配Cookie的作用域的。因?yàn)橛脩敉ㄟ^(guò)瀏覽器會(huì)去訪問(wèn)許多的站點(diǎn),也有很多站點(diǎn)都用了 Cookie技術(shù),那么瀏覽器應(yīng)該記住哪個(gè)Cookie對(duì)應(yīng)哪個(gè)站點(diǎn)。另外,即使在同一個(gè)站點(diǎn)內(nèi),還可以通過(guò)path來(lái)決定同一個(gè)站點(diǎn)的Cookie,是否能作用于當(dāng)前訪問(wèn)的path。比如,當(dāng)前瀏覽器中保存了域?yàn)?google, com的一個(gè)Cookie,那么當(dāng)訪問(wèn)google時(shí),瀏覽器先會(huì)看看Cookie庫(kù)中有沒(méi)有該站點(diǎn)的Cookie 信息,如果有應(yīng)該傳給服務(wù)器,當(dāng)然還要通過(guò)path做進(jìn)一步判定,文件中保存的Cookie能不能使用于當(dāng)前訪問(wèn)的path。path匹配一般是最大匹配原則,比如訪問(wèn)http://COde. google, com 時(shí),域匹配到.google, com。步驟203,調(diào)用庫(kù)函數(shù)StrtokO,根據(jù)Cookie參數(shù)中的分隔符號(hào)從Cookie參數(shù)解析出Cookie子項(xiàng);在kt-cookie字段中,Cookie參數(shù)中通過(guò)分號(hào)等分隔符號(hào)將所包含的各個(gè)子項(xiàng)區(qū)分開(kāi),其中每個(gè)子項(xiàng)對(duì)應(yīng)一方面的描述信息。例如上述的Cookie參數(shù)包括5方面的描述信息,則對(duì)應(yīng)5個(gè)Cookie子項(xiàng),每個(gè)子項(xiàng)之間通過(guò)分隔符號(hào)隔開(kāi)。利用庫(kù)函數(shù)strtok (),就可以根據(jù)分隔符號(hào)將Cookie參數(shù)分隔為Cookie子項(xiàng)。
其中,所述庫(kù)函數(shù)StrtokO可將字符串分解為一系列標(biāo)記(token),標(biāo)記就是一系列用分隔符(delimiting chracter,通常是空格或標(biāo)點(diǎn)符號(hào))分開(kāi)的字符。例如,在一行文本中,每個(gè)單詞可以作為標(biāo)記,空格是分隔符。步驟204,調(diào)用函數(shù)AllocCookieMemO在內(nèi)存中為各Cookie子項(xiàng)申請(qǐng)緩存空間;申請(qǐng)緩存的方式如下將Cookie子項(xiàng)初始化為空PCHAR pCookieName= NULL ;//Cookie 名稱(chēng)PCHAR pCookieValue= NULL ;//Cookie 數(shù)值PCHAR pCookieExpiresDate = NULL ;//EXpires DatePCHAR pCookiePath= NULL ;//PathPCHAR pCookieDomain = NULL ;//Domain步驟205,逐個(gè)解析Cookie子項(xiàng),得到對(duì)應(yīng)每個(gè)Cookie子項(xiàng)的“名/值”對(duì);步驟206,調(diào)用函數(shù)IsCookieExpiredO,檢查所述Cookie是否過(guò)期;如果未過(guò)期,則執(zhí)行步驟207 ;如果過(guò)期,則退出,結(jié)束解析過(guò)程。所述函數(shù)IsCookieExpiredO用于檢查Cookie是否過(guò)期,其總體思路如下所述Cookie參數(shù)的一個(gè)Cookie子項(xiàng)中包含該Cookie的失效期;調(diào)用庫(kù)函數(shù)GetSystemTimeO獲得當(dāng)前系統(tǒng)時(shí)間;將所述Cookie的失效期和當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換為統(tǒng)一格式后進(jìn)行比較,如果當(dāng)前系統(tǒng)時(shí)間小于Cookie的失效期,則該Cookie未過(guò)期;否則,該Cookie過(guò)期。其中,進(jìn)行格式轉(zhuǎn)換的目的是為了便于比較。基于所述判斷Cookie是否過(guò)期的總體思路,一種具體的實(shí)現(xiàn)方法如下1)將 HTTP 協(xié)議時(shí)間 / 日期格式(如“Sat,6 Jan 1996 21:22:04 GMT")轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)為SYSTEMTIME的數(shù)值;2)調(diào)用庫(kù)函數(shù)GetSystemTimeO獲得當(dāng)前系統(tǒng)時(shí)間;3)調(diào)用函數(shù)SystemTimeToFiIeTimeO將當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)類(lèi)型為 FILETIME格式的文件時(shí)間;4)調(diào)用函數(shù)CompareFiIeTimeO比較轉(zhuǎn)換后的Cookie文件時(shí)間和當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換后的文件時(shí)間,如果該函數(shù)返回小于0,則說(shuō)明過(guò)期,否則認(rèn)為未過(guò)期。當(dāng)然,除了上述檢查Cookie是否過(guò)期的方法外,基于上述的思路,還可以有其他的具體實(shí)現(xiàn)方法,在此不作限定。步驟207,如果未過(guò)期,則調(diào)用函數(shù)MveCookieToMem(),將所述解析出的各 Cookie子項(xiàng)的“名/值”對(duì)保存到對(duì)應(yīng)的緩存空間中。基于上述兩個(gè)實(shí)施例的說(shuō)明,本發(fā)明實(shí)施例所述的Cookie解析方法可防止以下幾種常見(jiàn)的Cookie被攔截的場(chǎng)景中1、隱私、安全和廣告Cookie在某種程度上說(shuō)已經(jīng)嚴(yán)重危及用戶的隱私和安全,其中的一種方法是一些公司的高層人員為了某種目的(譬如市場(chǎng)調(diào)研)而訪問(wèn)了從未去過(guò)的網(wǎng)站(通過(guò)搜索引擎查到的),而這些網(wǎng)站包含了一種叫做網(wǎng)頁(yè)臭蟲(chóng)的圖片,該圖片透明,且只有一個(gè)象素大小(以便隱藏),它們的作用是將所有訪問(wèn)過(guò)此頁(yè)面的計(jì)算機(jī)寫(xiě)入Cookie。而后,電子商務(wù)網(wǎng)站將讀取這些Cookie信息,并尋找寫(xiě)入這些Cookie的網(wǎng)站,隨即發(fā)送包含了針對(duì)這個(gè)網(wǎng)站的相關(guān)產(chǎn)品廣告的垃圾郵件給這些高級(jí)人員。2、偷竊Cookie和腳本攻擊雖然Cookie沒(méi)有中電腦病毒那么危險(xiǎn),但它仍包含了一些敏感消息如用戶名、 電腦名、使用的瀏覽器和曾經(jīng)訪問(wèn)的網(wǎng)站等。用戶不希望這些內(nèi)容泄漏出去,尤其是當(dāng)其中還包含有私人信息的時(shí)候。例如,一種名為Cross site scripting的工具可以達(dá)到此目的。在受到Cross site scripting攻擊時(shí),Cookie盜賊和Cookie毒藥將竊取內(nèi)容。一旦 Cookie落入攻擊者手中,它將會(huì)重現(xiàn)其價(jià)值。Cookie盜賊是指搜集用戶Cookie并發(fā)給攻擊者的黑客。攻擊者將利用Cookie 消息通過(guò)合法手段進(jìn)入用戶帳戶。Cookie投毒是指一般認(rèn)為,Cookie在儲(chǔ)存和傳回服務(wù)器期間沒(méi)有被修改過(guò),而攻擊者會(huì)在Cookie送回服務(wù)器之前對(duì)其進(jìn)行修改,達(dá)到自己的目的。例如,在一個(gè)購(gòu)物網(wǎng)站的Cookie中包含了顧客應(yīng)付的款項(xiàng),攻擊者將該值改小,達(dá)到少付款的目的。這就是 Cookie 投毒。本發(fā)明實(shí)施例所述的Cookie解析方法由于直接訪問(wèn)操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng)而不訪問(wèn)任何客戶端網(wǎng)絡(luò)應(yīng)用編程接口,并且將解析出的Cookie信息保存到客戶端內(nèi)存中, 可以避免上述應(yīng)用的發(fā)生。需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。基于上述方法實(shí)施例的說(shuō)明,本發(fā)明還提供了相應(yīng)的裝置實(shí)施例。參照?qǐng)D3,是本發(fā)明實(shí)施例所述一種Cookie解析裝置的結(jié)構(gòu)圖。所述一種Cookie解析裝置可以包括接收模塊31、解析模塊32和保存模塊33,其中接收模塊31,用于依據(jù)客戶端向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng);解析模塊32,用于訪問(wèn)操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng),從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息;保存模塊33,用于將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。優(yōu)選的,所述解析模塊32是通過(guò)訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng),從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息。這樣,就可以繞過(guò)操作系統(tǒng)應(yīng)用層網(wǎng)絡(luò)API,直接訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)來(lái)進(jìn)行數(shù)據(jù)包的收發(fā),并自行從所述數(shù)據(jù)包中進(jìn)行 Cookie的解析,從而從源頭上避免惡意代碼在網(wǎng)絡(luò)應(yīng)用層或通過(guò)網(wǎng)絡(luò)應(yīng)用編程接口劫持 Cookie、偷窺信息,最大限度地保護(hù)了用戶隱私。優(yōu)選的,所述保存模塊33是將所述解析出的Cookie信息作為該客戶端的標(biāo)識(shí)寫(xiě)入所述客戶端的內(nèi)存中。進(jìn)一步,所述客戶端的標(biāo)識(shí)是所述應(yīng)用服務(wù)器用以區(qū)別客戶端的標(biāo)識(shí)。
12
進(jìn)一步優(yōu)選的,所述解析模塊32可以包括參數(shù)提取子模塊321,用于從所述響應(yīng)的包頭的kt-cookie字段中提取出Cookie 參數(shù);子項(xiàng)分隔子模塊322,用于調(diào)用庫(kù)函數(shù)StrtokO,根據(jù)Cookie參數(shù)中的分隔符號(hào)從Cookie參數(shù)解析出Cookie子項(xiàng);解析子模塊323,用于逐個(gè)解析Cookie子項(xiàng),得到對(duì)應(yīng)每個(gè)Cookie子項(xiàng)的“名/ 值”對(duì)。進(jìn)一步優(yōu)選的,所述保存模塊33可以包括緩存申請(qǐng)子模塊331,用于在內(nèi)存中為各Cookie子項(xiàng)申請(qǐng)緩存空間;保存子模塊332,用于將所述解析出的各Cookie子項(xiàng)的“名/值”對(duì)保存到對(duì)應(yīng)的緩存空間中。進(jìn)一步優(yōu)選的,所述Cookie解析裝置還可以包括過(guò)期檢查模塊34,用于調(diào)用函數(shù)IsCookieExpiredO,檢查所述Cookie是否過(guò)期; 如果未過(guò)期,則觸發(fā)所述保存模塊33將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。其中,所述過(guò)期檢查模塊34進(jìn)一步可以包括所述Cookie參數(shù)的一個(gè)Cookie子項(xiàng)中包含該Cookie的失效期;時(shí)間獲取子模塊341,用于調(diào)用庫(kù)函數(shù)GetSystemTimeO獲得當(dāng)前系統(tǒng)時(shí)間;比較子模塊342,用于將所述Cookie的失效期和當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換為統(tǒng)一格式后進(jìn)行比較,如果當(dāng)前系統(tǒng)時(shí)間小于Cookie的失效期,則該Cookie未過(guò)期;否則,該Cookie 過(guò)期。進(jìn)一步優(yōu)選的,所述Cookie解析裝置還可以包括讀取模塊35,用于當(dāng)所述客戶端再次向所述應(yīng)用服務(wù)器發(fā)送請(qǐng)求時(shí),從內(nèi)存中讀取相應(yīng)的Cookie信息,并將所述Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。為了加強(qiáng)安全性,進(jìn)一步優(yōu)選的,所述Cookie解析裝置還可以包括加密模塊36,用于將所述解析模塊解析出的Cookie信息進(jìn)行加密,然后觸發(fā)所述保存模塊寫(xiě)入所述客戶端的內(nèi)存中;解密模塊37,用于當(dāng)所述讀取模塊從內(nèi)存中讀取加密的Cookie信息后,對(duì)所述加密的Cookie信息進(jìn)行解密,然后觸發(fā)所述讀取模塊將解密后的Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。綜上所述,上述Cookie解析裝置由于是直接訪問(wèn)操作系統(tǒng)的網(wǎng)絡(luò)內(nèi)核驅(qū)動(dòng)而不訪問(wèn)任何客戶端網(wǎng)絡(luò)應(yīng)用編程接口,自行實(shí)現(xiàn)了 Cookie的解析和緩存,從源頭上避免惡意代碼在網(wǎng)絡(luò)應(yīng)用層或通過(guò)網(wǎng)絡(luò)應(yīng)用編程接口劫持Cookie、偷窺信息,最大限度地保護(hù)了用戶隱私;而且,將解析出的Cookie信息保存到客戶端內(nèi)存中,由于內(nèi)存的讀寫(xiě)權(quán)限是基于進(jìn)程權(quán)限的,被攻擊破壞的難度要大于對(duì)文件的讀寫(xiě),因此可以最大程度地防止所述文件級(jí)的惡意代碼攻擊破壞。對(duì)于上述Cookie解析裝置的實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可?;谏鲜龅腃ookie解析裝置,本發(fā)明實(shí)施例還提供了一種客戶端,該客戶端包括上述實(shí)施例所述的Cookie解析裝置,該Cookie解析裝置的具體結(jié)構(gòu)可參見(jiàn)圖3所示示例的描述,不再詳述。本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。以上對(duì)本發(fā)明所提供的一種Cookie解析方法、裝置及一種客戶端,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種Cookie解析方法,其特征在于,包括依據(jù)客戶端向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng); 從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息; 將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息,包括通過(guò)訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng),從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中,包括將所述解析出的Cookie信息作為該客戶端的標(biāo)識(shí)寫(xiě)入所述客戶端的內(nèi)存中。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于所述客戶端的標(biāo)識(shí)是所述應(yīng)用服務(wù)器用以區(qū)別客戶端的標(biāo)識(shí)。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過(guò)訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)進(jìn)行 Cookie解析的步驟包括從所述響應(yīng)的包頭的kt-cookie字段中提取出Cookie參數(shù);調(diào)用庫(kù)函數(shù)strtok (),根據(jù)Cookie參數(shù)中的分隔符號(hào)從Cookie參數(shù)解析出Cookie子項(xiàng);逐個(gè)解析Cookie子項(xiàng),得到對(duì)應(yīng)每個(gè)Cookie子項(xiàng)的“名/值”對(duì)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中,包括在內(nèi)存中為各Cookie子項(xiàng)申請(qǐng)緩存空間;將所述解析出的各Cookie子項(xiàng)的“名/值”對(duì)保存到對(duì)應(yīng)的緩存空間中。
7.根據(jù)權(quán)利要求1至6任一所述的方法,其特征在于,還包括 調(diào)用函數(shù)IsCookieExpiredO,檢查所述Cookie是否過(guò)期;如果未過(guò)期,則將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述調(diào)用函數(shù)IsCookieExpiredO檢查所述Cookie是否過(guò)期,包括所述Cookie參數(shù)的一個(gè)Cookie子項(xiàng)中包含該Cookie的失效期; 調(diào)用庫(kù)函數(shù)GetSystemTime ()獲得當(dāng)前系統(tǒng)時(shí)間;將所述Cookie的失效期和當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換為統(tǒng)一格式后進(jìn)行比較,如果當(dāng)前系統(tǒng)時(shí)間小于Cookie的失效期,則該Cookie未過(guò)期;否則,該Cookie過(guò)期。
9.根據(jù)權(quán)利要求1或3所述的方法,其特征在于,還包括當(dāng)所述客戶端再次向所述應(yīng)用服務(wù)器發(fā)送請(qǐng)求時(shí),從內(nèi)存中讀取相應(yīng)的Cookie信息, 并將所述Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中之前,還包括將所述解析出的Cookie信息進(jìn)行加密,然后寫(xiě)入所述客戶端的內(nèi)存中。
11.一種Cookie解析裝置,其特征在于,包括 2接收模塊,用于依據(jù)客戶端向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng);解析模塊,用于從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息; 保存模塊,用于將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于所述解析模塊通過(guò)訪問(wèn)操作系統(tǒng)的內(nèi)核驅(qū)動(dòng),從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于所述保存模塊將所述解析出的Cookie信息作為該客戶端的標(biāo)識(shí)寫(xiě)入所述客戶端的內(nèi)存中。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于所述客戶端的標(biāo)識(shí)是所述應(yīng)用服務(wù)器用以區(qū)別客戶端的標(biāo)識(shí)。
15.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述解析模塊包括參數(shù)提取子模塊,用于從所述響應(yīng)的包頭的kt-cookie字段中提取出Cookie參數(shù); 子項(xiàng)分隔子模塊,用于調(diào)用庫(kù)函數(shù)strtok (),根據(jù)Cookie參數(shù)中的分隔符號(hào)從Cookie 參數(shù)解析出Cookie子項(xiàng);解析子模塊,用于逐個(gè)解析Cookie子項(xiàng),得到對(duì)應(yīng)每個(gè)Cookie子項(xiàng)的“名/值”對(duì)。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述保存模塊包括 緩存申請(qǐng)子模塊,用于在內(nèi)存中為各Cookie子項(xiàng)申請(qǐng)緩存空間;保存子模塊,用于將所述解析出的各Cookie子項(xiàng)的“名/值”對(duì)保存到對(duì)應(yīng)的緩存空間中。
17.根據(jù)權(quán)利要求11至16任一所述的裝置,其特征在于,還包括過(guò)期檢查模塊,用于調(diào)用函數(shù)IsCookieExpired (),檢查所述Cookie是否過(guò)期;如果未過(guò)期,則觸發(fā)所述保存模塊將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述過(guò)期檢查模塊包括 所述Cookie參數(shù)的一個(gè)Cookie子項(xiàng)中包含該Cookie的失效期;系統(tǒng)時(shí)間獲取子模塊,用于調(diào)用庫(kù)函數(shù)GetSystemTime ()獲得當(dāng)前系統(tǒng)時(shí)間; 比較子模塊,用于將所述Cookie的失效期和當(dāng)前系統(tǒng)時(shí)間轉(zhuǎn)換為統(tǒng)一格式后進(jìn)行比較,如果當(dāng)前系統(tǒng)時(shí)間小于Cookie的失效期,則該Cookie未過(guò)期;否則,該Cookie過(guò)期。
19.根據(jù)權(quán)利要求11或13所述的方法,其特征在于,還包括讀取模塊,用于當(dāng)所述客戶端再次向所述應(yīng)用服務(wù)器發(fā)送請(qǐng)求時(shí),從內(nèi)存中讀取相應(yīng)的Cookie信息,并將所述Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,還包括加密模塊,用于將所述解析模塊解析出的Cookie信息進(jìn)行加密,然后觸發(fā)所述保存模塊寫(xiě)入所述客戶端的內(nèi)存中;解密模塊,用于當(dāng)所述讀取模塊從內(nèi)存中讀取加密的Cookie信息后,對(duì)所述加密的 Cookie信息進(jìn)行解密,然后觸發(fā)所述讀取模塊將解密后的Cookie信息作為該客戶端的標(biāo)識(shí)發(fā)送。
21.一種客戶端,其特征在于,包括如上述權(quán)利要求11至20任一權(quán)利要求所述的Cookie解析裝置。
全文摘要
本發(fā)明提供了一種Cookie解析方法、裝置及一種客戶端,以解決現(xiàn)有技術(shù)中Cookie易被篡改的問(wèn)題。所述方法包括依據(jù)客戶端向應(yīng)用服務(wù)器發(fā)出的請(qǐng)求,從所述應(yīng)用服務(wù)器接收所述請(qǐng)求的響應(yīng);從所述響應(yīng)中解析出所述應(yīng)用服務(wù)器發(fā)給所述客戶端的Cookie信息;將所述解析出的Cookie信息寫(xiě)入所述客戶端的內(nèi)存中。本發(fā)明提供的Cookie解析方法可以防止惡意代碼通過(guò)跟蹤、截獲Cookie來(lái)偷窺用戶信息、修改用戶賬號(hào),從而保護(hù)用戶的隱私信息。
文檔編號(hào)H04L29/06GK102158493SQ20111009526
公開(kāi)日2011年8月17日 申請(qǐng)日期2011年4月15日 優(yōu)先權(quán)日2011年4月15日
發(fā)明者唐曦, 董斌雁 申請(qǐng)人:奇智軟件(北京)有限公司