一种Cookie解析方法、装置及一种客户端的制作方法

文档序号:7640269阅读:186来源:国知局
专利名称:一种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解析的步骤包括从所述响应的包头的kt-cookie字段中提取出Cookie参数;调用库函数strtokO,根据Cookie 参数中的分隔符号从Cookie参数解析出Cookie子项;逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对。优选的,所述将所述解析出的Cookie信息写入所述客户端的内存中,包括在内存中为各Cookie子项申请缓存空间;将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。优选的,所述方法还包括调用函数IsCookieExpiredO,检查所述Cookie是否过期;如果未过期,则将所述解析出的Cookie信息写入所述客户端的内存中。优选的,所述调用函数IsCookieExpiredO检查所述Cookie是否过期,包括所述 Cookie参数的一个Cookie子项中包含该Cookie的失效期;调用库函数GetSystemTime () 获得当前系统时间;将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较, 如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。优选的,所述方法还包括当所述客户端再次向所述应用服务器发送请求时,从内存中读取相应的Cookie信息,并将所述Cookie信息作为该客户端的标识发送。优选的,将所述解析出的Cookie信息写入所述客户端的内存中之前,还包括将所述解析出的Cookie信息进行加密,然后写入所述客户端的内存中。本发明还提供了一种Cookie解析装置,包括接收模块,用于依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;解析模块,用于从所述响应中解析出所述应用服务器发给所述客户端的Cookie fn息;保存模块,用于将所述解析出的Cookie信息写入所述客户端的内存中。优选的,所述解析模块通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。优选的,所述保存模块将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。其中,所述客户端的标识是所述应用服务器用以区别客户端的标识。优选的,所述解析模块包括参数提取子模块,用于从所述响应的包头的kt-cookie字段中提取出Cookie参数;子项分隔子模块,用于调用库函数strtokO,根据Cookie参数中的分隔符号从 Cookie参数解析出Cookie子项;解析子模块,用于逐个解析Cookie子项,得到对应每个Cookie子项的“名/值” 对。优选的,所述保存模块包括缓存申请子模块,用于在内存中为各Cookie子项申请缓存空间;保存子模块,用于将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。优选的,所述装置还包括过期检查模块,用于调用函数IsCookieExpiredO,检查所述Cookie是否过期;如果未过期,则触发所述保存模块将所述解析出的Cookie信息写入所述客户端的内存中。优选的,所述过期检查模块包括所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;系统时间获取子模块,用于调用库函数GetSystemTimeO获得当前系统时间;比较子模块,用于将所述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信息是用来和应用服务器交互的。基于上述流程,进一步,当所述客户端再次向所述应用服务器发送请求时,可以调用函数LoadCookieFromMemO从内存中读取相应的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,从所述响应的包头的kt-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,调用库函数StrtokO,根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;在kt-cookie字段中,Cookie参数中通过分号等分隔符号将所包含的各个子项区分开,其中每个子项对应一方面的描述信息。例如上述的Cookie参数包括5方面的描述信息,则对应5个Cookie子项,每个子项之间通过分隔符号隔开。利用库函数strtok (),就可以根据分隔符号将Cookie参数分隔为Cookie子项。
其中,所述库函数StrtokO可将字符串分解为一系列标记(token),标记就是一系列用分隔符(delimiting chracter,通常是空格或标点符号)分开的字符。例如,在一行文本中,每个单词可以作为标记,空格是分隔符。步骤204,调用函数AllocCookieMemO在内存中为各Cookie子项申请缓存空间;申请缓存的方式如下将Cookie子项初始化为空PCHAR pCookieName= NULL ;//Cookie 名称PCHAR pCookieValue= NULL ;//Cookie 数值PCHAR pCookieExpiresDate = NULL ;//EXpires DatePCHAR pCookiePath= NULL ;//PathPCHAR pCookieDomain = NULL ;//Domain步骤205,逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对;步骤206,调用函数IsCookieExpiredO,检查所述Cookie是否过期;如果未过期,则执行步骤207 ;如果过期,则退出,结束解析过程。所述函数IsCookieExpiredO用于检查Cookie是否过期,其总体思路如下所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;调用库函数GetSystemTimeO获得当前系统时间;将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。其中,进行格式转换的目的是为了便于比较。基于所述判断Cookie是否过期的总体思路,一种具体的实现方法如下1)将 HTTP 协议时间 / 日期格式(如“Sat,6 Jan 1996 21:22:04 GMT")转换成数据结构为SYSTEMTIME的数值;2)调用库函数GetSystemTimeO获得当前系统时间;3)调用函数SystemTimeToFiIeTimeO将当前系统时间转换成数据结构类型为 FILETIME格式的文件时间;4)调用函数CompareFiIeTimeO比较转换后的Cookie文件时间和当前系统时间转换后的文件时间,如果该函数返回小于0,则说明过期,否则认为未过期。当然,除了上述检查Cookie是否过期的方法外,基于上述的思路,还可以有其他的具体实现方法,在此不作限定。步骤207,如果未过期,则调用函数MveCookieToMem(),将所述解析出的各 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信息作为该客户端的标识写入所述客户端的内存中。进一步,所述客户端的标识是所述应用服务器用以区别客户端的标识。
12
进一步优选的,所述解析模块32可以包括参数提取子模块321,用于从所述响应的包头的kt-cookie字段中提取出Cookie 参数;子项分隔子模块322,用于调用库函数StrtokO,根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;解析子模块323,用于逐个解析Cookie子项,得到对应每个Cookie子项的“名/ 值”对。进一步优选的,所述保存模块33可以包括缓存申请子模块331,用于在内存中为各Cookie子项申请缓存空间;保存子模块332,用于将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。进一步优选的,所述Cookie解析装置还可以包括过期检查模块34,用于调用函数IsCookieExpiredO,检查所述Cookie是否过期; 如果未过期,则触发所述保存模块33将所述解析出的Cookie信息写入所述客户端的内存中。其中,所述过期检查模块34进一步可以包括所述Cookie参数的一个Cookie子项中包含该Cookie的失效期;时间获取子模块341,用于调用库函数GetSystemTimeO获得当前系统时间;比较子模块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解析方法、装置及一种客户端,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种Cookie解析方法,其特征在于,包括依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应; 从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息; 将所述解析出的Cookie信息写入所述客户端的内存中。
2.根据权利要求1所述的方法,其特征在于,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息,包括通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。
3.根据权利要求1所述的方法,其特征在于,将所述解析出的Cookie信息写入所述客户端的内存中,包括将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。
4.根据权利要求3所述的方法,其特征在于所述客户端的标识是所述应用服务器用以区别客户端的标识。
5.根据权利要求2所述的方法,其特征在于,所述通过访问操作系统的内核驱动进行 Cookie解析的步骤包括从所述响应的包头的kt-cookie字段中提取出Cookie参数;调用库函数strtok (),根据Cookie参数中的分隔符号从Cookie参数解析出Cookie子项;逐个解析Cookie子项,得到对应每个Cookie子项的“名/值”对。
6.根据权利要求5所述的方法,其特征在于,所述将所述解析出的Cookie信息写入所述客户端的内存中,包括在内存中为各Cookie子项申请缓存空间;将所述解析出的各Cookie子项的“名/值”对保存到对应的缓存空间中。
7.根据权利要求1至6任一所述的方法,其特征在于,还包括 调用函数IsCookieExpiredO,检查所述Cookie是否过期;如果未过期,则将所述解析出的Cookie信息写入所述客户端的内存中。
8.根据权利要求7所述的方法,其特征在于,所述调用函数IsCookieExpiredO检查所述Cookie是否过期,包括所述Cookie参数的一个Cookie子项中包含该Cookie的失效期; 调用库函数GetSystemTime ()获得当前系统时间;将所述Cookie的失效期和当前系统时间转换为统一格式后进行比较,如果当前系统时间小于Cookie的失效期,则该Cookie未过期;否则,该Cookie过期。
9.根据权利要求1或3所述的方法,其特征在于,还包括当所述客户端再次向所述应用服务器发送请求时,从内存中读取相应的Cookie信息, 并将所述Cookie信息作为该客户端的标识发送。
10.根据权利要求1所述的方法,其特征在于,将所述解析出的Cookie信息写入所述客户端的内存中之前,还包括将所述解析出的Cookie信息进行加密,然后写入所述客户端的内存中。
11.一种Cookie解析装置,其特征在于,包括 2接收模块,用于依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;解析模块,用于从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息; 保存模块,用于将所述解析出的Cookie信息写入所述客户端的内存中。
12.根据权利要求11所述的装置,其特征在于所述解析模块通过访问操作系统的内核驱动,从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息。
13.根据权利要求11所述的装置,其特征在于所述保存模块将所述解析出的Cookie信息作为该客户端的标识写入所述客户端的内存中。
14.根据权利要求13所述的装置,其特征在于所述客户端的标识是所述应用服务器用以区别客户端的标识。
15.根据权利要求12所述的装置,其特征在于,所述解析模块包括参数提取子模块,用于从所述响应的包头的kt-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解析装置。
全文摘要
本发明提供了一种Cookie解析方法、装置及一种客户端,以解决现有技术中Cookie易被篡改的问题。所述方法包括依据客户端向应用服务器发出的请求,从所述应用服务器接收所述请求的响应;从所述响应中解析出所述应用服务器发给所述客户端的Cookie信息;将所述解析出的Cookie信息写入所述客户端的内存中。本发明提供的Cookie解析方法可以防止恶意代码通过跟踪、截获Cookie来偷窥用户信息、修改用户账号,从而保护用户的隐私信息。
文档编号H04L29/06GK102158493SQ20111009526
公开日2011年8月17日 申请日期2011年4月15日 优先权日2011年4月15日
发明者唐曦, 董斌雁 申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1