[发明专利]通过Session进行请求的方法有效
申请号: | 201410200631.8 | 申请日: | 2014-05-13 |
公开(公告)号: | CN103973797B | 公开(公告)日: | 2017-04-12 |
发明(设计)人: | 李超;张琦;刘志宇;李秋香;徐晓军;吴薇;印晓天 | 申请(专利权)人: | 公安部第一研究所;杭州安恒信息技术有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F17/30 |
代理公司: | 北京中海智圣知识产权代理有限公司11282 | 代理人: | 杨树芬 |
地址: | 100048*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了通过Session进行请求的方法,本发明主要利用了Session的作用机制,通过分析Http请求中的Session数据,进而通过关联分析,寻找到属于同一个会话周期的所有的HTTP请求,旨在解决OSI七层架构的应用层的审计业务的解决方案中访问业务系统的Session数据的关键技术问题;本发明能够将数量庞大、错综复杂的诸多HTTP请求,关联梳理成为一个个会话,而每个会话能够拥有清晰、明确的相关HTTP请求,从而使得审计系统能够在宛如数据海洋般的众多HTTP请求中,将各个会话、HTTP请求之间的归属、关联、时间顺序、请求回应等等各种关系,掌握的清清楚楚、一目了然,从而使得审计系统能够从各个角度进行全面的审计。 | ||
搜索关键词: | 通过 session 进行 请求 方法 | ||
【主权项】:
通过Session进行请求的方法,其特征在于,包括以下步骤:1)分析所有HTTP请求的数据,获得其中最大的HTTP请求的长度MaxReqLen,获得HTTP请求的总数量CntReq;HTTP请求的信息包括:HTTP请求发生的时间,HTTP请求的客户端的IP地址、端口,HTTP请求的服务端的IP地址、端口,HTTP请求的明文数据记录;2)建立存储HTTP请求的数组ArrayHttp;数组的容量设定为CntReq,以便能够保存所有的HTTP请求的记录;数组的开始下标为0,结束下标为CntReq‑1;数组的每个项目采用结构类型,包含以下成员变量:a.sTime,精确到毫秒的时间,采用“2013‑11‑25 09:34:59.012”格式进行表示;b.sClientIP,客户端IP地址,采用“192.168.1.23”字符串格式进行表示;c.nClientPort,客户端端口,采用整数类型表示;d.sServerIP,服务端IP地址,采用“192.168.1.23”字符串格式进行表示;e.nServerPort,服务端端口,采用整数类型表示;f.sHttpReq,HTTP请求的明文数据,采用长度为MaxReqLen+1的字符串类型;g.nFlag,处理完成标志,整数类型,等于0表示未处理,不等于0表示已经处理;h.sSessionID,存储本HTTP请求解析出来的SessionID,初始化为空字符串;3)将所有的HTTP请求的数据,按照HTTP请求发生的时间从小到大进行排序,并按照顺序将HTTP请求的信息复制到数组ArrayHttp的相应项目中,并将成员变量nFlag赋值为0;4)预设一个长度变量LenSessionID,预设一个长度大小,以使得该长度变量的值能够大于任何一个HTTP请求的JSESSIONID的值的字符串长度;5)建立存储Session数据的数组ArraySession;数组的容量设定为CntReq,数组的开始下标为0,结束下标为CntReq‑1;数组的每个项目采用结构类型,包含以下成员变量:a)sSessionID,采用长度为LenSessionID的字符串类型;b)nIndexStt,当前会话开始下标,采用整数类型;c)nIndexEnd,当前会话结束下标,采用整数类型;6)初始化数组ArraySession,将数组的每个项目进行一下初始化:a.清空sSessionID成员变量,赋值为空字符串””;b.nIndexStt赋值为‑1;c.nIndexEnd赋值为‑1;7)设定ArraySession数组的遍历游标变量CursorIndex,用来当前循环所在的数组下标,并初始化为‑1;8)通过循环方式,进行遍历:a)如果CursorIndex大于等于0并且小于等于CntReq‑1,将CursorHttp对应的nFlag设置为1;b)将CursorIndex递增,然后判别CursorIndex,是否小于0或者大于CntReq‑1,如果符 合任何一个判断,中断当前循环,进入步骤9;c)选取ArraySession数组的下标为CursorIndex的项目CursorHttp;d)判别CursorHttp的nFlag,如果不为0,跳到循环开始步骤8的步骤a,继续;e)分析CursorHttp的sHttpReq,在该字符串中,寻找字符串”/x0D/x0A/x0D/x0A”,对应四个字符,依次的ASCII码值为13、10、13、10,如果找不到,跳到循环开始步骤8的步骤a,继续;f)找到之后,相应的位置通过字符指针变量pcHeadEnd保存,并进行字符串截断处理;g)通过字符串匹配函数,在sHttpReq中,忽略大小写寻找字符串”JSESSIONID”,如果寻找不到,跳到循环开始步骤8的步骤a,继续;h)找到之后,相应的位置通过字符指针变量pcJSess保存,然后将pcJSess正向移动10个字符;i)跳过所有的空白字符;j)如果pcJSess所指的字符不为’=’,跳到循环开始步骤8的步骤a,继续;否则将pcJSess正向移动1个字符;k)跳过所有的空白字符;l)设定整数变量nLen=0,然后获取从pcJSess所指向的位置开始,连续的数字或者’a’~’f’、’A’~’F’的字符的数量,并将数量赋值到nLen;m)如果nLen小于等于0,跳到循环开始步骤8的步骤a,继续;n)设定临时变量sSess,并初始化为空字符串;然后通过定长拷贝的方式,将从pcJSess开始nLen指定的长度的内容复制给sSess;o)将sSess拷贝给CursorHttp的成员变量sSessionID;p)获取CursorHttp在数组ArrayHttp中对应的下标nIndexHttp;q)遍历数组ArraySession,如果其中有某个项目CursorSession对应的sSessionID的值与sSess相同:i.如果CursorSession的成员变量nIndexStt小于0,将nIndexStt赋值为nIndexHttp;ii.如果CursorSession的成员变量nIndexEnd小于nIndexHttp,将nIndexEnd赋值为nIndexHttp;r)如果在遍历数组ArraySession之后,都找不到符合有某个项目CursorSession对应的sSessionID的值与sSess相同的条件的记录,那么从数组中找到第一条sSessionID为空字符串的记录CursorSession:i.将sSess复制给sSessionID;ii.将nIndexHttp赋值给nIndexStt和nIndexEnd;s)跳到循环开始步骤8的步骤a,继续;9)在上述循环结束之后,在ArraySession中,就已经汇总得到了所有根据HTTP请求的JSESSIONID进行关联的分析结果,ArraySession数组中,每一条非空记录CursorFilled,都描述了一组Session的相关汇总信息:a)sSessionID是这个会话的SessionID;b)nIndexStt表示了这个会话对应的第一个HTTP请求在ArrayHttp中对应的记录的下标;c)nIndexEnd表示了这个会话对应的最后一个HTTP请求在ArrayHttp中对应的记录的下标;d)而在nIndexStt、nIndexEnd两个下标之间,ArrayHttp数组中,其成员变量sSessionID与CursorFilled的成员变量sSessionID相同的项目CursorHttpBelong,都是属于这个会话的HTTP请求。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于公安部第一研究所;杭州安恒信息技术有限公司,未经公安部第一研究所;杭州安恒信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410200631.8/,转载请声明来源钻瓜专利网。
- 上一篇:一种间隙尺
- 下一篇:一种槽型钢轨轨头与沟槽头部高度差的测量样板