CN102158493A - 一种Cookie解析方法、装置及一种客户端 - Google Patents

一种Cookie解析方法、装置及一种客户端 Download PDF

Info

Publication number
CN102158493A
CN102158493A CN201110095267XA CN201110095267A CN102158493A CN 102158493 A CN102158493 A CN 102158493A CN 201110095267X A CN201110095267X A CN 201110095267XA CN 201110095267 A CN201110095267 A CN 201110095267A CN 102158493 A CN102158493 A CN 102158493A
Authority
CN
China
Prior art keywords
cookie
client
information
parses
internal memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201110095267XA
Other languages
English (en)
Other versions
CN102158493B (zh
Inventor
董斌雁
唐曦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qizhi Software Beijing Co Ltd filed Critical Qizhi Software Beijing Co Ltd
Priority to CN201110095267.XA priority Critical patent/CN102158493B/zh
Publication of CN102158493A publication Critical patent/CN102158493A/zh
Application granted granted Critical
Publication of CN102158493B publication Critical patent/CN102158493B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种Cookie解析方法、装置及一种客户端,以解决现有技术中Cookie易被篡改的问题。所述方法包括:依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;将所述解析出的Cookie信息写入所述客户端的内存中。本发明提供的Cookie解析方法可以防止恶意代码通过跟踪、截获Cookie来偷窥用户信息、修改用户账号,从而保护用户的隐私信息。

Description

一种Cookie解析方法、装置及一种客户端
技术领域
本发明涉及网络通信技术,特别是涉及一种Cookie解析方法、一种Cookie解析装置及一种包含该装置的客户端。
背景技术
Cookie(复数形态Cookies),中文名称为小型文字文件或小甜饼,指某些网站为了辨别用户身份而储存在用户本地终端(Client,客户端)上的数据(通常经过加密)。网站服务器可以利用Cookies包含信息的任意性来筛选并经常性地维护这些信息,以判断在HTTP等协议传输中的状态。
例如,Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续。另一个重要的应用场合是“购物车”之类的处理,例如用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。
Cookie的生存周期有两种:一种是Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie的情形)。另一种是,还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。
由上可知,Cookie技术可以更加准确地收集访客的信息,从而使访客更方便地访问应用服务器,使网页浏览更容易。
但是,Cookie技术带来便利性的同时,也存在着Cookie被偷窥或篡改的风险。在网络上,Cookie篡改(cookie poisoning)是攻击者通过修改Cookie获得用户未授权信息,进而盗用用户身份的过程,攻击者可能使用此信息打开新账号或者获取用户已存在账号的访问权限。因此,Cookie在某种程度上已经严重危及用户的隐私和安全。
发明内容
本发明所要解决的技术问题是提供一种Cookie解析方法、装置及一种客户端,以解决现有技术中Cookie易被篡改的问题。
为了解决上述问题,本发明公开了一种Cookie解析方法,包括:
依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;
从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;
将所述解析出的Cookie信息写入所述客户端的内存中。
优选的,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息,包括:通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。
优选的,将所述解析出的Cookie信息写入所述客户端的内存中,包括:将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。
其中,所述客户端的标识是所述应用服务器用以区别客户端的标识。
优选的,所述通过访问操作系统的内核驱动进行Cookie解析的步骤包括:从所述响应的包头的Set-cookie字段中提取出Cookie参数;调用库函数strtok(),根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对。
优选的,所述将所述解析出的Cookie信息写入所述客户端的内存中,包括:在内存中为各Cookie子项申请缓存空间;将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。
优选的,所述方法还包括:调用函数IsCookieExpired(),检查所述Cookie是否过期;如果未过期,则将所述解析出的Cookie信息写入所述客户端的内存中。
优选的,所述调用函数IsCookieExpired()检查所述Cookie是否过期,包括:所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;调用库函数GetSystemTime()获得当前系统时间;将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。
优选的,所述方法还包括:当所述客户端再次向所述应用服务器发送请求时,从内存中读取相应的Cookie信息,并将所述Cookie信息作为该客户端的标识发送。
优选的,将所述解析出的Cookie信息写入所述客户端的内存中之前,还包括:将所述解析出的Cookie信息进行加密,然后写入所述客户端的内存中。
本发明还提供了一种Cookie解析装置,包括:
接收模块,用于依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;
解析模块,用于从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;
保存模块,用于将所述解析出的Cookie信息写入所述客户端的内存中。
优选的,所述解析模块通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。
优选的,所述保存模块将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。
其中,所述客户端的标识是所述应用服务器用以区别客户端的标识。
优选的,所述解析模块包括:
参数提取子模块,用于从所述响应的包头的Set-cookie字段中提取出Cookie参数;
子项分隔子模块,用于调用库函数strtok(),根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;
解析子模块,用于逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对。
优选的,所述保存模块包括:
缓存申请子模块,用于在内存中为各Cookie子项申请缓存空间;
保存子模块,用于将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。
优选的,所述装置还包括:过期检查模块,用于调用函数IsCookieExpired(),检查所述Cookie是否过期;如果未过期,则触发所述保存模块将所述解析出的Cookie信息写入所述客户端的内存中。
优选的,所述过期检查模块包括:
所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;
系统时间获取子模块,用于调用库函数GetSystemTime()获得当前系统时间;
比较子模块,用于将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。
优选的,所述装置还包括:读取模块,用于当所述客户端再次向所述应用服务器发送请求时,从内存中读取相应的Cookie信息,并将所述Cookie信息作为该客户端的标识发送。
优选的,所述装置还包括:
加密模块,用于将所述解析模块解析出的Cookie信息进行加密,然后触发所述保存模块写入所述客户端的内存中;
解密模块,用于当所述读取模块从内存中读取加密的Cookie信息后,对所述加密的Cookie信息进行解密,然后触发所述读取模块将解密后的Cookie信息作为该客户端的标识发送。
本发明还提供了一种客户端,其特征在于,包括如上所述的Cookie解析装置。
与现有技术相比,本发明包括以下优点:
首先,本发明提供的Cookie解析方法可以防止恶意代码通过跟踪、截获Cookie来偷窥用户信息、修改用户账号,从而保护用户的隐私信息。
其次,本发明在客户端与应用服务器的会话过程中,绕过操作系统应用层网络API,直接访问操作系统的内核驱动来进行数据包的收发,并自行从所述数据包中进行Cookie的解析,将解析出的Cookie信息保存到客户端的内存中。而现有技术是通过调用操作系统中的网络应用编程接口完成解析。
在此过程中,一方面,由于是直接访问操作系统的内核驱动而不访问任何客户端网络应用编程接口,自行实现了Cookie的解析和缓存,从源头上避免恶意代码在网络应用层或通过网络应用编程接口劫持Cookie、偷窥信息,最大限度地保护了用户隐私;
另一方面,现有技术将解析出的Cookie信息采用文件形式保存,容易被文件级的恶意代码攻击破坏,而本发明将解析出的Cookie信息保存到客户端内存中,由于内存的读写权限是基于进程权限的,被攻击破坏的难度要大于对文件的读写,因此可以最大程度地防止所述文件级的恶意代码攻击破坏。
附图说明
图1是本发明实施例所述一种Cookie解析方法的流程图;
图2是本发明优选实施例所述一种Cookie解析方法的流程图;
图3是本发明实施例所述一种Cookie解析装置的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为了解决Cookie易被篡改的问题,本发明首先分析了现有技术中Cookie易被篡改的原因,具体如下:
Cookies是从应用服务器传递给客户端的一些文本数据,在以后访问同一个站点时,客户端会再把这些数据通过HTTP等协议的请求包头发送给应用服务器。现有技术中,在客户端与应用服务器遵循协议规范的会话过程中,在协议的网络应用层,客户端通过调用操作系统中的网络应用编程接口来完成交互。而且,一般情况下客户端会把Cookie保存到文件中。
基于以上情况,Cookie的拦截或篡改一般包括两种:
第一种是基于文件的,即在客户端写入文件的过程中,如果第三方知道文件格式,就可以通过文件攻击的方法拦截Cookie,并插入、修改、删除该Cookie;
第二种是基于网络应用层过滤的,即在客户端与应用服务器的会话过程中,在会话协议的网络应用层通过网络应用编程接口劫持Cookie。
基于以上分析,本发明提出一种新的Cookie解析方法、装置及一种包含该装置的客户端,其核心思想是:在客户端与应用服务器的会话过程中,直接访问操作系统的内核驱动而不是网络应用编程接口来自行完成Cookie的解析,并将解析出的Cookie信息保存到客户端的内存中,可以最大程度地避免上述基于文件或基于网络应用层过滤的Cookie拦截,解决Cookie易被篡改的问题。
下面通过实施例进行详细说明。
参照图1,是本发明实施例所述一种Cookie解析方法的流程图。对于用户客户端(简称客户端)而言,从登录某应用服务器(如某网站的服务器)到离开该应用服务器,认为是一次完整的会话。在一次会话期间,执行以下步骤:
步骤101,客户端访问操作系统的网络内核驱动,向应用服务器发出请求;
其中,所述请求一般指访问请求,可以是HTTP请求,也可以是遵循其他通信协议的请求。
所述客户端并没有访问网络应用编程接口,如WinHTTP API、WinInet API等网络接口,即没有通过网络应用层向应用服务器发出请求。
步骤102,应用服务器将Cookie信息嵌入请求响应的包头,发给客户端;
通常由应用服务器指示客户端是否进行Cookie的解析,所述指示以协议命令的方式发给客户端。以HTTP协议为例,如果指示解析,则Cookie将成为HTTP协议中的数据载荷部分或者说是HTTP命令中的一部分,包含在应用服务器的请求响应中发给客户端。
步骤103,依据所述客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;
即客户端接收与发出的请求相对应的响应。
步骤104,通过访问操作系统的网络内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;
所述解析由于没有访问网络应用编程接口,即不访问应用层网络API,因此自行提供了一种通过访问操作系统网络内核的方法来完成解析,该方法将在图2所示示例中进行详细说明。
步骤105,将所述解析出的Cookie信息写入所述客户端的内存中。
需要注意的是,步骤105是将解析出的Cookie信息保存到了内存中,而不是文件中。而且,所述写入内存的Cookie信息将作为该客户端的标识,即从本质上讲,Cookie信息可以看作是该客户端的身份证,可以记录该客户端的用户ID、密码、浏览过的网页、停留的时间等信息,一般只能由提供该Cookie信息的服务器来读取。因此,所述客户端的标识是所述应用服务器用以区别客户端的标识。这里包含两层含义:首先,客户端的标识是与应用服务器对应的;其次,cookie信息是用来和应用服务器交互的。
基于上述流程,进一步,当所述客户端再次向所述应用服务器发送请求时,可以调用函数LoadCookieFromMem()从内存中读取相应的Cookie信息,并并将所述Cookie信息作为该客户端的标识嵌入所述请求的包头中一同发送。具体的,当所述客户端再次向所述应用服务器发送请求时,如果服务器需要客户端发送上次保存的cookie信息,则在请求响应中予以指示,客户端根据请求响应会按照指示发送。但是,如果服务器知道客户端已经解析并把Cookie发送回来,则可能不再重复以前的Cookie,但有可能指示新的Cookie解析。总之,在符合协议规范的情况下,应用服务器可以要求客户端对Cookie进行解析,或者,要求客户端将本地保存的Cookie发送回来。
优选的,为了进一步加强安全性,还可以在将所述解析出的Cookie信息写入所述客户端的内存中之前,先将所述解析出的Cookie信息进行加密,然后将加密后的Cookie信息写入所述客户端的内存中。相应的,当再次从内存中读取出加密的Cookie信息后,也先进行解密处理,然后再将解密后的Cookie信息作为该客户端的标识嵌入所述请求的包头中一同发送。其中,加密的方法很多,比较简单一点的有:Base64、md5、sha等,而相对比较复杂一点的有:DES、TripleDES、RC2、Rijndael等。
需要说明的是,上述实施例不仅提供了一种从请求的响应中解析出Cookie信息并存入客户端内存的方法,该方法可以防止恶意代码通过跟踪、截获Cookie来偷窥用户信息、修改用户账号,从而保护用户的隐私信息;而且,上述实施例还提供了一种通过访问客户端操作系统的内核驱动来完成数据包收发,进而完成Cookie解析的方法。
因此,首先,本发明提供的Cookie解析方法可以通过访问客户端操作系统的内核驱动来完成Cookie解析,也可以通过其他方式,如有其他模块代替操作系统的内核驱动,自行实现满足特定需求的轻量级TCP/IP协议栈,进行数据包的收发及Cookie的解析。
其次,所述通过访问客户端操作系统的内核驱动来完成Cookie解析的方法是一种优选的实施例,进一步,所述内核驱动优选操作系统的网络内核驱动。这样,上述Cookie解析方法就是一种等同于网络内核驱动级的解析,即所有与应用服务器的收发数据流都是通过直接和网络内核通讯来完成,绕过了操作系统应用层网络API,不同于现有技术基于网络应用层级的解析,即通过访问应用层网络API来完成。这样,上述Cookie解析过程就无需访问任何客户端网络应用编程接口,自行实现了Cookie的解析和缓存,可以防止应用层网络拦截、过滤和偷窥,从源头上避免恶意代码在网络应用层或通过网络应用编程接口劫持Cookie、偷窥信息,最大限度地保护了用户隐私。
而且,上述Cookie解析方法是将解析出的Cookie信息保存到客户端内存中,由于内存的读写权限是基于进程权限的,被攻击破坏的难度要大于对文件的读写,因此可以最大程度地防止文件级的恶意代码攻击破坏。
在上述实施例中,关于如何访问操作系统的网络内核驱动来解析Cookie,本发明可以有多种实现方式,下面将通过图2所示示例进行举例说明。当然,本发明的保护范围不限于图2所示的实现方式,其他通过访问操作系统网络内核驱动完成Cookie解析的方法也属于本发明的保护范围。
参照图2,是本发明优选实施例所述一种Cookie解析方法的流程图。
以客户端的应用程序(如浏览器)与应用服务器进行HTTP交互为例,应用程序访问操作系统的网络内核驱动完成所述交互,具体如下:
步骤201,依据浏览器向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;
步骤202,从所述响应的包头的Set-cookie字段中提取出Cookie参数;
所述Cookie参数通常包括5方面的描述信息,如下:
1)名称(The name of the cookie,必选);
2)值(The value of the cookie,必选);
如一些敏感信息,包括:用户名,电脑名,使用的浏览器和曾经访问的网站,等等;
3)失效期(The expiration date of the cookie,可选,默认值-1,表示浏览器关闭则清除);
4)路径(The path the cookie is valid for,一般用于浏览器管理Cookie,用于限定Cookie的作用域);
5)域名(The domain the cookie is valid for,一般用于浏览器管理Cookie,这样,浏览器才知道访问某个url所属的域名时,会在本地Cookie文件中找有没有有效的Cookie信息要传递给服务器)。
除以上5方面的描述信息外,Cookie参数还可能包含其他信息,在此不作限定。
需要说明的是,domain+path是用来限制和匹配Cookie的作用域的。因为用户通过浏览器会去访问许多的站点,也有很多站点都用了Cookie技术,那么浏览器应该记住哪个Cookie对应哪个站点。另外,即使在同一个站点内,还可以通过path来决定同一个站点的Cookie,是否能作用于当前访问的path。比如,当前浏览器中保存了域为.google.com的一个Cookie,那么当访问google时,浏览器先会看看Cookie库中有没有该站点的Cookie信息,如果有应该传给服务器,当然还要通过path做进一步判定,文件中保存的Cookie能不能使用于当前访问的path。path匹配一般是最大匹配原则,比如访问http://code.google.com时,域匹配到.google.com。
步骤203,调用库函数strtok(),根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;
在Set-cookie字段中,Cookie参数中通过分号等分隔符号将所包含的各个子项区分开,其中每个子项对应一方面的描述信息。例如上述的Cookie参数包括5方面的描述信息,则对应5个Cookie子项,每个子项之间通过分隔符号隔开。利用库函数strtok(),就可以根据分隔符号将Cookie参数分隔为Cookie子项。
其中,所述库函数strtok()可将字符串分解为一系列标记(token),标记就是一系列用分隔符(delimiting chracter,通常是空格或标点符号)分开的字符。例如,在一行文本中,每个单词可以作为标记,空格是分隔符。
步骤204,调用函数AllocCookieMem()在内存中为各Cookie子项申请缓存空间;
申请缓存的方式如下:
将Cookie子项初始化为空:
PCHAR pCookieName       =NULL;//Cookie名称
PCHAR pCookieValue      =NULL;//Cookie数值
PCHAR pCookieExpiresDate=NULL;//EXpires Date
PCHAR pCookiePath       =NULL;//Path
PCHAR pCookieDomain     =NULL;//Domain
步骤205,逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对;
步骤206,调用函数IsCookieExpired(),检查所述Cookie是否过期;
如果未过期,则执行步骤207;如果过期,则退出,结束解析过程。
所述函数IsCookieExpired()用于检查Cookie是否过期,其总体思路如下:
所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;
调用库函数GetSystemTime()获得当前系统时间;
将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。
其中,进行格式转换的目的是为了便于比较。
基于所述判断Cookie是否过期的总体思路,一种具体的实现方法如下:
1)将HTTP协议时间/日期格式(如:″Sat,6 Jan 1996 21:22:04 GMT″)转换成数据结构为SYSTEMTIME的数值;
2)调用库函数GetSystemTime()获得当前系统时间;
3)调用函数SystemTimeToFileTime()将当前系统时间转换成数据结构类型为FILETIME格式的文件时间;
4)调用函数CompareFileTime()比较转换后的Cookie文件时间和当前系统时间转换后的文件时间,如果该函数返回小于0,则说明过期,否则认为未过期。
当然,除了上述检查Cookie是否过期的方法外,基于上述的思路,还可以有其他的具体实现方法,在此不作限定。
步骤207,如果未过期,则调用函数SaveCookieToMem(),将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。
基于上述两个实施例的说明,本发明实施例所述的Cookie解析方法可防止以下几种常见的Cookie被拦截的场景中:
1、隐私、安全和广告
Cookie在某种程度上说已经严重危及用户的隐私和安全,其中的一种方法是:一些公司的高层人员为了某种目的(譬如市场调研)而访问了从未去过的网站(通过搜索引擎查到的),而这些网站包含了一种叫做网页臭虫的图片,该图片透明,且只有一个象素大小(以便隐藏),它们的作用是将所有访问过此页面的计算机写入Cookie。而后,电子商务网站将读取这些Cookie信息,并寻找写入这些Cookie的网站,随即发送包含了针对这个网站的相关产品广告的垃圾邮件给这些高级人员。
2、偷窃Cookie和脚本攻击
虽然Cookie没有中电脑病毒那么危险,但它仍包含了一些敏感消息:如用户名、电脑名、使用的浏览器和曾经访问的网站等。用户不希望这些内容泄漏出去,尤其是当其中还包含有私人信息的时候。例如,一种名为Cross site scripting的工具可以达到此目的。在受到Cross site scripting攻击时,Cookie盗贼和Cookie毒药将窃取内容。一旦Cookie落入攻击者手中,它将会重现其价值。
Cookie盗贼是指:搜集用户Cookie并发给攻击者的黑客。攻击者将利用Cookie消息通过合法手段进入用户帐户。
Cookie投毒是指:一般认为,Cookie在储存和传回服务器期间没有被修改过,而攻击者会在Cookie送回服务器之前对其进行修改,达到自己的目的。例如,在一个购物网站的Cookie中包含了顾客应付的款项,攻击者将该值改小,达到少付款的目的。这就是Cookie投毒。
本发明实施例所述的Cookie解析方法由于直接访问操作系统的网络内核驱动而不访问任何客户端网络应用编程接口,并且将解析出的Cookie信息保存到客户端内存中,可以避免上述应用的发生。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
基于上述方法实施例的说明,本发明还提供了相应的装置实施例。
参照图3,是本发明实施例所述一种Cookie解析装置的结构图。
所述一种Cookie解析装置可以包括接收模块31、解析模块32和保存模块33,其中:
接收模块31,用于依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;
解析模块32,用于访问操作系统的网络内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;
保存模块33,用于将所述解析出的Cookie信息写入所述客户端的内存中。
优选的,所述解析模块32是通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。这样,就可以绕过操作系统应用层网络API,直接访问操作系统的内核驱动来进行数据包的收发,并自行从所述数据包中进行Cookie的解析,从而从源头上避免恶意代码在网络应用层或通过网络应用编程接口劫持Cookie、偷窥信息,最大限度地保护了用户隐私。
优选的,所述保存模块33是将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。进一步,所述客户端的标识是所述应用服务器用以区别客户端的标识。
进一步优选的,所述解析模块32可以包括:
参数提取子模块321,用于从所述响应的包头的Set-cookie字段中提取出Cookie参数;
子项分隔子模块322,用于调用库函数strtok(),根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;
解析子模块323,用于逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对。
进一步优选的,所述保存模块33可以包括:
缓存申请子模块331,用于在内存中为各Cookie子项申请缓存空间;
保存子模块332,用于将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。
进一步优选的,所述Cookie解析装置还可以包括:
过期检查模块34,用于调用函数IsCookieExpired(),检查所述Cookie是否过期;如果未过期,则触发所述保存模块33将所述解析出的Cookie信息写入所述客户端的内存中。
其中,所述过期检查模块34进一步可以包括:
所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;
时间获取子模块341,用于调用库函数GetSystemTime()获得当前系统时间;
比较子模块342,用于将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。
进一步优选的,所述Cookie解析装置还可以包括:
读取模块35,用于当所述客户端再次向所述应用服务器发送请求时,从内存中读取相应的Cookie信息,并将所述Cookie信息作为该客户端的标识发送。
为了加强安全性,进一步优选的,所述Cookie解析装置还可以包括:
加密模块36,用于将所述解析模块解析出的Cookie信息进行加密,然后触发所述保存模块写入所述客户端的内存中;
解密模块37,用于当所述读取模块从内存中读取加密的Cookie信息后,对所述加密的Cookie信息进行解密,然后触发所述读取模块将解密后的Cookie信息作为该客户端的标识发送。
综上所述,上述Cookie解析装置由于是直接访问操作系统的网络内核驱动而不访问任何客户端网络应用编程接口,自行实现了Cookie的解析和缓存,从源头上避免恶意代码在网络应用层或通过网络应用编程接口劫持Cookie、偷窥信息,最大限度地保护了用户隐私;而且,将解析出的Cookie信息保存到客户端内存中,由于内存的读写权限是基于进程权限的,被攻击破坏的难度要大于对文件的读写,因此可以最大程度地防止所述文件级的恶意代码攻击破坏。
对于上述Cookie解析装置的实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
基于上述的Cookie解析装置,本发明实施例还提供了一种客户端,该客户端包括上述实施例所述的Cookie解析装置,该Cookie解析装置的具体结构可参见图3所示示例的描述,不再详述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本发明所提供的一种Cookie解析方法、装置及一种客户端,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (21)

1.一种Cookie解析方法,其特征在于,包括:
依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;
从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;
将所述解析出的Cookie信息写入所述客户端的内存中。
2.根据权利要求1所述的方法,其特征在于,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息,包括:
通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。
3.根据权利要求1所述的方法,其特征在于,将所述解析出的Cookie信息写入所述客户端的内存中,包括:
将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。
4.根据权利要求3所述的方法,其特征在于:
所述客户端的标识是所述应用服务器用以区别客户端的标识。
5.根据权利要求2所述的方法,其特征在于,所述通过访问操作系统的内核驱动进行Cookie解析的步骤包括:
从所述响应的包头的Set-cookie字段中提取出Cookie参数;
调用库函数strtok(),根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;
逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对。
6.根据权利要求5所述的方法,其特征在于,所述将所述解析出的Cookie信息写入所述客户端的内存中,包括:
在内存中为各Cookie子项申请缓存空间;
将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。
7.根据权利要求1至6任一所述的方法,其特征在于,还包括:
调用函数IsCookieExpired(),检查所述Cookie是否过期;
如果未过期,则将所述解析出的Cookie信息写入所述客户端的内存中。
8.根据权利要求7所述的方法,其特征在于,所述调用函数IsCookieExpired()检查所述Cookie是否过期,包括:
所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;
调用库函数GetSystemTime()获得当前系统时间;
将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。
9.根据权利要求1或3所述的方法,其特征在于,还包括:
当所述客户端再次向所述应用服务器发送请求时,从内存中读取相应的Cookie信息,并将所述Cookie信息作为该客户端的标识发送。
10.根据权利要求1所述的方法,其特征在于,将所述解析出的Cookie信息写入所述客户端的内存中之前,还包括:
将所述解析出的Cookie信息进行加密,然后写入所述客户端的内存中。
11.一种Cookie解析装置,其特征在于,包括:
接收模块,用于依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;
解析模块,用于从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;
保存模块,用于将所述解析出的Cookie信息写入所述客户端的内存中。
12.根据权利要求11所述的装置,其特征在于:
所述解析模块通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。
13.根据权利要求11所述的装置,其特征在于:
所述保存模块将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。
14.根据权利要求13所述的装置,其特征在于:
所述客户端的标识是所述应用服务器用以区别客户端的标识。
15.根据权利要求12所述的装置,其特征在于,所述解析模块包括:
参数提取子模块,用于从所述响应的包头的Set-cookie字段中提取出Cookie参数;
子项分隔子模块,用于调用库函数strtok(),根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;
解析子模块,用于逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对。
16.根据权利要求15所述的装置,其特征在于,所述保存模块包括:
缓存申请子模块,用于在内存中为各Cookie子项申请缓存空间;
保存子模块,用于将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。
17.根据权利要求11至16任一所述的装置,其特征在于,还包括:
过期检查模块,用于调用函数IsCookieExpired(),检查所述Cookie是否过期;如果未过期,则触发所述保存模块将所述解析出的Cookie信息写入所述客户端的内存中。
18.根据权利要求17所述的装置,其特征在于,所述过期检查模块包括:
所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;
系统时间获取子模块,用于调用库函数GetSystemTime()获得当前系统时间;
比较子模块,用于将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。
19.根据权利要求11或13所述的方法,其特征在于,还包括:
读取模块,用于当所述客户端再次向所述应用服务器发送请求时,从内存中读取相应的Cookie信息,并将所述Cookie信息作为该客户端的标识发送。
20.根据权利要求19所述的装置,其特征在于,还包括:
加密模块,用于将所述解析模块解析出的Cookie信息进行加密,然后触发所述保存模块写入所述客户端的内存中;
解密模块,用于当所述读取模块从内存中读取加密的Cookie信息后,对所述加密的Cookie信息进行解密,然后触发所述读取模块将解密后的Cookie信息作为该客户端的标识发送。
21.一种客户端,其特征在于,包括如上述权利要求11至20任一权利要求所述的Cookie解析装置。
CN201110095267.XA 2011-04-15 2011-04-15 一种Cookie解析方法、装置及一种客户端 Expired - Fee Related CN102158493B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110095267.XA CN102158493B (zh) 2011-04-15 2011-04-15 一种Cookie解析方法、装置及一种客户端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110095267.XA CN102158493B (zh) 2011-04-15 2011-04-15 一种Cookie解析方法、装置及一种客户端

Publications (2)

Publication Number Publication Date
CN102158493A true CN102158493A (zh) 2011-08-17
CN102158493B CN102158493B (zh) 2015-12-09

Family

ID=44439675

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110095267.XA Expired - Fee Related CN102158493B (zh) 2011-04-15 2011-04-15 一种Cookie解析方法、装置及一种客户端

Country Status (1)

Country Link
CN (1) CN102158493B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102546668A (zh) * 2012-02-29 2012-07-04 北京蓝汛通信技术有限责任公司 一种独立访问者的统计方法、装置及系统
CN102932353A (zh) * 2012-11-02 2013-02-13 北京奇虎科技有限公司 一种防止恶意攻击的方法和设备
CN103023869A (zh) * 2012-11-02 2013-04-03 北京奇虎科技有限公司 恶意攻击防止方法和浏览器
CN103078876A (zh) * 2013-01-31 2013-05-01 北京集奥聚合科技有限公司 Http报文隐私保护方法和装置
WO2013143402A1 (zh) * 2012-03-31 2013-10-03 北京奇虎科技有限公司 Cookie信息共享方法及系统
CN103618754A (zh) * 2013-12-20 2014-03-05 山东中创软件商用中间件股份有限公司 一种Cookie防篡改方法及装置
CN103618760A (zh) * 2013-11-07 2014-03-05 北京奇虎科技有限公司 浏览器中cookie信息的处理方法和浏览器
CN104392378A (zh) * 2014-12-10 2015-03-04 北京京东尚科信息技术有限公司 一种添加物品到购物车的方法和系统
CN104579754A (zh) * 2014-12-18 2015-04-29 国云科技股份有限公司 一种统计Web应用用户访问时间特性的方法
CN104680063A (zh) * 2015-03-02 2015-06-03 魅族科技(中国)有限公司 一种信息拦截方法及终端
CN105897694A (zh) * 2016-03-25 2016-08-24 网宿科技股份有限公司 一种客户端会话识别方法及系统
CN106130952A (zh) * 2016-05-31 2016-11-16 美通云动(北京)科技有限公司 一种访问页面的方法及装置
CN106611026A (zh) * 2015-10-27 2017-05-03 北京国双科技有限公司 Cookie种植、处理方法及装置
CN106657184A (zh) * 2015-10-30 2017-05-10 北京国双科技有限公司 日志信息的解析方法及装置
CN107786489A (zh) * 2016-08-24 2018-03-09 腾讯科技(深圳)有限公司 访问请求验证方法及装置
CN109657493A (zh) * 2018-12-17 2019-04-19 郑州云海信息技术有限公司 一种信息处理方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6460079B1 (en) * 1999-03-04 2002-10-01 Nielsen Media Research, Inc. Method and system for the discovery of cookies and other client information
CN1647054A (zh) * 2002-06-19 2005-07-27 艾利森电话股份有限公司 网络设备驱动体系结构
EP1643409A2 (en) * 2004-10-01 2006-04-05 Microsoft Corporation Application programming Interface for Access authorization
CN101626379A (zh) * 2009-08-11 2010-01-13 深圳市融创天下科技发展有限公司 嵌入式系统中访问权限分级的访问管理方法及装置
CN101702647A (zh) * 2009-11-30 2010-05-05 中国电信股份有限公司 Cookie信息的管理方法和Cookie服务器
CN101977224A (zh) * 2010-10-28 2011-02-16 神州数码网络(北京)有限公司 一种基于SSL VPN设备的Web资源认证信息管理方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6460079B1 (en) * 1999-03-04 2002-10-01 Nielsen Media Research, Inc. Method and system for the discovery of cookies and other client information
CN1647054A (zh) * 2002-06-19 2005-07-27 艾利森电话股份有限公司 网络设备驱动体系结构
EP1643409A2 (en) * 2004-10-01 2006-04-05 Microsoft Corporation Application programming Interface for Access authorization
CN101626379A (zh) * 2009-08-11 2010-01-13 深圳市融创天下科技发展有限公司 嵌入式系统中访问权限分级的访问管理方法及装置
CN101702647A (zh) * 2009-11-30 2010-05-05 中国电信股份有限公司 Cookie信息的管理方法和Cookie服务器
CN101977224A (zh) * 2010-10-28 2011-02-16 神州数码网络(北京)有限公司 一种基于SSL VPN设备的Web资源认证信息管理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李馥娟: "《基于Cookies的Web应用分析及其安全研究》", 《网络安全技术与应用》, 31 August 2009 (2009-08-31) *
王川: "《基于过滤驱动的文件保护系统》", 《网络安全技术与应用》, 31 January 2011 (2011-01-31) *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102546668A (zh) * 2012-02-29 2012-07-04 北京蓝汛通信技术有限责任公司 一种独立访问者的统计方法、装置及系统
CN102546668B (zh) * 2012-02-29 2015-02-04 北京蓝汛通信技术有限责任公司 一种独立访问者的统计方法、装置及系统
WO2013143402A1 (zh) * 2012-03-31 2013-10-03 北京奇虎科技有限公司 Cookie信息共享方法及系统
CN102932353A (zh) * 2012-11-02 2013-02-13 北京奇虎科技有限公司 一种防止恶意攻击的方法和设备
CN103023869A (zh) * 2012-11-02 2013-04-03 北京奇虎科技有限公司 恶意攻击防止方法和浏览器
CN102932353B (zh) * 2012-11-02 2016-08-24 北京奇虎科技有限公司 一种防止恶意攻击的方法和设备
CN103023869B (zh) * 2012-11-02 2016-07-06 北京奇虎科技有限公司 恶意攻击防止方法和浏览器
CN103078876B (zh) * 2013-01-31 2015-07-15 北京集奥聚合科技有限公司 Http报文隐私保护方法和装置
CN103078876A (zh) * 2013-01-31 2013-05-01 北京集奥聚合科技有限公司 Http报文隐私保护方法和装置
CN103618760A (zh) * 2013-11-07 2014-03-05 北京奇虎科技有限公司 浏览器中cookie信息的处理方法和浏览器
CN103618760B (zh) * 2013-11-07 2017-05-03 北京奇虎科技有限公司 浏览器中cookie信息的处理方法和浏览器
CN103618754A (zh) * 2013-12-20 2014-03-05 山东中创软件商用中间件股份有限公司 一种Cookie防篡改方法及装置
CN103618754B (zh) * 2013-12-20 2017-02-08 山东中创软件商用中间件股份有限公司 一种Cookie防篡改方法及装置
CN104392378B (zh) * 2014-12-10 2018-02-27 北京京东尚科信息技术有限公司 一种添加物品到购物车的方法和系统
CN104392378A (zh) * 2014-12-10 2015-03-04 北京京东尚科信息技术有限公司 一种添加物品到购物车的方法和系统
CN104579754B (zh) * 2014-12-18 2018-01-26 国云科技股份有限公司 一种统计Web应用用户访问时间特性的方法
CN104579754A (zh) * 2014-12-18 2015-04-29 国云科技股份有限公司 一种统计Web应用用户访问时间特性的方法
CN104680063B (zh) * 2015-03-02 2019-03-15 魅族科技(中国)有限公司 一种信息拦截方法及终端
CN104680063A (zh) * 2015-03-02 2015-06-03 魅族科技(中国)有限公司 一种信息拦截方法及终端
CN106611026A (zh) * 2015-10-27 2017-05-03 北京国双科技有限公司 Cookie种植、处理方法及装置
CN106611026B (zh) * 2015-10-27 2020-03-03 北京国双科技有限公司 Cookie种植、处理方法及装置
CN106657184A (zh) * 2015-10-30 2017-05-10 北京国双科技有限公司 日志信息的解析方法及装置
CN106657184B (zh) * 2015-10-30 2019-09-24 北京国双科技有限公司 日志信息的解析方法及装置
CN105897694A (zh) * 2016-03-25 2016-08-24 网宿科技股份有限公司 一种客户端会话识别方法及系统
CN106130952A (zh) * 2016-05-31 2016-11-16 美通云动(北京)科技有限公司 一种访问页面的方法及装置
CN107786489A (zh) * 2016-08-24 2018-03-09 腾讯科技(深圳)有限公司 访问请求验证方法及装置
CN109657493A (zh) * 2018-12-17 2019-04-19 郑州云海信息技术有限公司 一种信息处理方法和装置

Also Published As

Publication number Publication date
CN102158493B (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
CN102158493B (zh) 一种Cookie解析方法、装置及一种客户端
Bujlow et al. A survey on web tracking: Mechanisms, implications, and defenses
RU2744671C2 (ru) Система и способы для обнаружения сетевого мошенничества
Palaniappan et al. Secure user authentication using honeywords
Bujlow et al. Web tracking: Mechanisms, implications, and defenses
US8719944B2 (en) Detecting secure or encrypted tunneling in a computer network
Carlin et al. You could be mine (d): the rise of cryptojacking
EP3885946B1 (en) Method of monitoring and protecting access to an online service
Hynek et al. Summary of DNS over https abuse
Chorghe et al. A survey on anti-phishing techniques in mobile phones
Akintaro et al. Darknet and black market activities against the cybersecurity: a survey
Fietkau et al. The elephant in the background: A quantitative approachto empower users against web browser fingerprinting
Manjula et al. Pre-Authorization and post-authorization techniques for detecting and preventing the session hijacking
Awan et al. A defensive model to mitigate cyber activities
Guan et al. DangerNeighbor attack: Information leakage via postMessage mechanism in HTML5
EP3885945B1 (en) Method of monitoring and protecting access to an online service
Muhammad et al. Information protection of end users on the web: privacy issues and measures
O'Brien Tunisia invades, censors Facebook, other accounts
Abdulla et al. Consumer Use of E-Banking in Iraq: Security Breaches and Offered Solution
Kimak et al. HTML5 IndexedDB Encryption: Prevention against Potential Attacks
US11973798B2 (en) Methods of monitoring and protecting access to online services
US11985165B2 (en) Detecting web resources spoofing through stylistic fingerprints
Sasnouskaya Unveiling the dark web and the impact of REvil's cyberattacks
Gupta et al. Server side protection against cross site request forgery usingcsrf gateway
Shafie Common Attacks and Trends in Web Application

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20151104

Address after: 100088 Beijing city Xicheng District xinjiekouwai Street 28, block D room 112 (Desheng Park)

Applicant after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Applicant after: Qizhi software (Beijing) Co.,Ltd.

Address before: The 4 layer 100016 unit of Beijing city Chaoyang District Jiuxianqiao Road No. 14 Building C

Applicant before: Qizhi software (Beijing) Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20151209