一种保证Web资源请求有序性的方法及系统与流程

专利2022-06-29  112


本发明涉及计算机网络领域,尤其涉及一种保证web资源请求有序性的方法及系统。



背景技术:

web资源是日常上网中内容服务商提供的资源,web资源请求是指用户向内容服务商发起的资源访问请求,所述资源访问请求通过网址(url)进行。网址分为三部分:协议头、域名(domain)、以及统一资源标识符(uri),比如网址https://www.baidu.com/index.html中,协议头是https,域名是www.baidu.com,uri是/index.html。web网站都具有固有的页面访问顺序,而恶意web资源请求会违反这种固有的web页面访问顺序。

专利号为200810224571.8的中国专利《检测恶意http请求的方法与装置》中,权利要求7公开了一种判断http请求是否符合web网站固有的web页面访问顺序的方法:(b1)从http请求头部中提取referer和uri两个协议字段值;(b2)判断该uri所指向的web页面是否为所述web访问关系网络中的关键节点,如果是,则执行步骤(b3),否则认为该http请求为一个未见异常http请求,流程结束;(b3)检查referer是否同时满足如下三个条件:referer不为空;所述web访问关系网络中存在一个与referer所指向的web页面对应的网络节点;referer所对应的网络节点包含在uri所对应关键节点的父节点集合中,若referer不同时满足以上三个条件,则认为检测到一次恶意http请求。

上述方法存在以下缺点:(1)referer可以随意伪造,没有可信性;(2)该方法无法防止重放;(3)有些网站的服务是嵌入在第三方网站中的,这些网站对应的referer是第三方网站对应的页面,具有不确定性。



技术实现要素:

有鉴于此,本发明提供了一种保证web资源请求有序性的方法及系统,通过在http头部中添加额外信息,来进行web资源请求有序性的验证。

本发明提供一种保证web资源请求有序性的方法,包括以下步骤:

s1、控制服务端根据内容服务商提供的web资源构建web资源有向图,并根据web资源的uri为每个web资源设置一个密码;

s2、当服务端收到客户端的访问请求时,判断所述访问请求要求访问的web资源是否对应web资源有向图中的根节点,若是,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中添加http头部,转s6,否则执行步骤s3;所述http头部包括客户端标识uid、回复的时间戳t、记录当前访问请求的uri的parent、以及校验码key,其中,校验码key为:

key=md5{uid t parent secret(parent)},

式中,secret(parent)表示parent对应的密码;

s3、服务端查看当前访问请求的http头部是否包含uid、t、parent、以及key,若全部存在,则继续执行步骤s4,否则,判定所述访问请求为非法请求,转s5;

s4、服务端依次校验当前访问请求的http头部中的t、parent、以及key是否合法,若校验通过,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中重新添加新的http头部,转s6;否则,判定所述访问请求为非法请求,转s5;

s5、当判定访问请求为非法请求时,服务端向客户端返回错误或者直接丢弃所述访问请求,转s6;

s6、结束本次处理流程。

进一步地,所述web资源有向图包括访问节点以及有向边,其中,每一所述访问节点对应一个web资源,所述有向边表示存在一条从起始访问节点到终止访问节点的直接访问路径;在构建所述web资源有向图的过程中,确定各访问节点对应的父节点。

进一步地,所述步骤s4的具体过程为:

s41、判断t是否在指定范围内,若是,继续执行步骤s42,否则校验不通过;

s42、判断parent记录的uri是否处于当前访问请求的uri对应的访问节点的父节点中,若在,继续执行步骤s43,否则校验不通过;

s43、根据当前访问请求的http头部中的uid、t、parent计算md5{uid t parent secret(parent)},并判断计算结果是否等于所述http头部中的key值,若是,校验通过,否则,校验不通过。

进一步地,所述步骤s4中,所述新的http头部中uid直接从当前访问请求的http头部中获取,t采用回复时的时间,parent为当前访问请求的uri,key利用更新后的uid、t、以及parent通过md5{uid t parent secret(parent)}计算得到。

本发明还提供一种保证web资源请求有序性的系统,包括:

web资源有向图构建模块,用于控制服务端根据内容服务商提供的web资源构建web资源有向图,并根据web资源的uri为每个web资源设置一个密码;

根节点判断模块,用于当服务端收到客户端的访问请求时,判断所述访问请求要求访问的web资源是否对应web资源有向图中的根节点,若所述根节点判断模块的判断结果为是,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中添加http头部,转到流程结束模块,否则转到http头部判断模块;所述http头部包括客户端标识uid、回复的时间戳t、记录当前访问请求的uri的parent、以及校验码key=md5{uid t parent secret(parent)},其中,secret(parent)表示parent对应的密码;

http头部判断模块,用于服务端判断当前访问请求的http头部是否包含完整的uid、t、parent、以及key,若所述http头部判断模块的判断结果为是,则转到http头部校验模块,否则,判定所述访问请求为非法请求,转到非法请求处理模块;

http头部校验模块,用于服务端依次校验当前访问请求的http头部中的t、parent、以及key是否合法,若所述http头部校验模块的校验通过,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中重新添加新的http头部,并转到流程结束模块;否则,判定所述访问请求为非法请求,转到非法请求处理模块;

非法请求处理模块,用于当判定访问请求为非法请求时,服务端向客户端返回错误或者直接丢弃所述访问请求,并转到流程结束模块;

流程结束模块,用于结束一次处理流程。

进一步地,所述web资源有向图构建模块构建的web资源有向图包括访问节点以及有向边,其中,每一访问节点对应一个web资源,所述有向边表示存在一条从起始访问节点到终止访问节点的直接访问路径;所述web资源有向图构建模块还确定各访问节点对应的父节点。

进一步地,所述http头部校验模块包括:

第一判断子模块,用于判断t是否在指定范围内,若所述第一判断子模块的判断结果为是,转到第二判断子模块,否则所述http头部校验模块的校验不通过;

第二判断子模块,用于判断parent记录的uri是否处于当前访问请求的uri对应的访问节点的父节点中,若所述第二判断子模块的判断结果为是时,转到第三判断子模块,否则所述http头部校验模块的校验不通过;

第三判断子模块,用于根据当前访问请求的http头部中的uid、t、parent计算md5{uid t parent secret(parent)},并判断计算结果是否等于所述http头部中的key值,若所述第三判断子模块的判断结果为是时,所述http头部校验模块的校验通过,否则,所述http头部校验模块的校验不通过。

进一步地,所述http头部校验模块中添加的新的http头部中uid直接从当前访问请求的http头部中获取,t采用回复时的时间,parent为当前访问请求的uri,key利用更新后的uid、t、以及parent根据计算式md5{uid t parent secret(parent)}得到。

本发明提供的技术方案带来的有益效果是:在交互中使用服务端生成的可检验信息以及时间戳,可以有效防止请求伪造和重放,且适用场景更多、通用性更好。

附图说明

图1是本发明实施例提供的保证web资源有序性的方法的流程图;

图2是本发明实施例构建得到的web资源有向图;

图3是本发明实施例提供的保证web资源有序性的系统结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。

请参考图1,本发明的实施例提供了一种保证web资源请求有序性的方法,包括以下步骤:

s1、控制服务端根据内容服务商提供的web资源构建web资源有向图,并根据web资源的统一资源标识符(uri)为每个web资源设置一个密码secret,用于后续加密处理。

例如,一个域名为https://www.buy.com的购物网站,包括登录(/login)、浏览商品(/view)、下单(/order)、取消下单(/cancelorder)、付款(/pay)、退出登录(/loginout)等web资源页面,假设该购物网站要求登录之后才能进行商品浏览,那么简化的正常访问逻辑如下:用户先登录,然后才能浏览商品;浏览商品可以重复点击,只有先浏览商品,才会选择某件商品下单;下单之后选择去支付或者取消下单;同时,用户在登录成功之后的任意阶段都可以选择退出登录。

基于上述访问逻辑构建web资源有向图,如图2所示,所述web资源有向图包括访问节点以及有向边,其中,每一访问节点对应一个web资源,所述有向边表示存在一条从起始访问节点到终止访问节点的直接访问路径;根据uri为每个web资源设置密码,并根据所述web资源有向图,确定图中每个访问节点的父节点,如表1所示。

表1web资源及对应的密码

在构建所述web资源有向图的过程中,还需确定根节点;表1中,访问节点“/login”没有对应的父节点,即为所述web资源有向图的根节点。

s2、当服务端收到客户端的访问请求时,判断所述访问请求要求访问的web资源是否对应web资源有向图中的根节点,若是,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中添加http头部,转s6,所述http头部包括客户端标识uid、回复的时间戳t、代表当前访问请求的uri的parent、以及校验码key,其中:

key=md5{uid t parent secret(parent)},

式中,secret(parent)表示parent对应的密码;否则执行步骤s3。对于图2所示的根节点“/login”,参考表1,其parent为“/login”,parent所对应的密码为“loginexamplekey”。

s3、服务端查看当前访问请求的http头部是否包含uid、t、parent、以及key,若全部存在,则继续执行步骤s4;否则,判定所述访问请求为非法请求。

s4、服务端依次校验当前访问请求的http头部中的t、parent、以及key是否合法,若校验通过,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中重新添加新的http头部,转s6;否则,判定所述访问请求为非法请求,转s5。

具体地,步骤s4的过程为:

s41、判断t是否在指定范围内,比如t是否在当前时间1分钟内,若是,继续执行步骤s42,否则判定所述访问请求为非法请求;

s42、参考表1,判断parent记录的uri是否处于当前访问请求的uri对应的访问节点的父节点中,若在,继续执行步骤s43,否则判定所述访问请求为非法请求;

s43、检验当前访问请求的key值是否正确,具体地,根据当前访问请求的http头部中的uid、t、parent计算md5{uid t parent secret(parent)},并判断计算结果是否等于所述http头部中的key值,若是,则通过所述访问请求并处理请求,并回复客户端在下次访问请求中重新添加新的http头部,其中,所述新的http头部中uid直接从当前访问请求的http头部中获取,t采用回复时的时间,parent为当前访问请求的uri,key利用更新后的uid、t、以及parent通过计算式md5{uid t parent secret(parent)}得到;否则,判定所述访问请求为非法请求。

s5、当判定访问请求为非法请求时,服务端向客户端返回错误或者直接丢弃所述访问请求,转s6。

s6、结束本次处理流程。

对于图2所示的web资源有向图,合法的时间戳t满足0<(当前时间-t)<60s,一个具体应用实例如下:用户登录所述网站https://www.buy.com,客户端发送访问请求1“/login”,服务端收到所述访问请求1后,判定其为所述web资源有向图的根节点,当前时间为1000,回复所述客户端在下次访问请求中添加:

http头部1:uid=user1,t=1000,parent=/login,key=md5(1000 user1 secret[/login]);

接着,用户正常浏览商品,客户端发送访问请求2“/view”,服务端收到所述访问请求2后,首先确定所述访问请求2并非根节点,且具有完整的http头部,进一步判断当前时间与所述访问请求2的http头部中的时间戳t=1000的时间差是否小于60s,并参考表1,确定parent记录的“/login”为当前访问请2“/view”对应的访问节点的父节点,最后校验key值正确后,判定当前访问请问2合法,时间1002时,回复客户端在下次访问请求中重新添加:

http头部2:uid=user1,t=1002,parent=/view,key=md5(1002 user1 secret[/view]);

同样地,用户继续正常浏览商品,客户端再次发送访问请求3“/view”,服务端确定所述访问请求3合法后,时间1004时,回复客户端在下次访问请求中重新添加:

http头部3:uid=user1,t=1004,parent=/view,key=md5(1004 user1 secret[/view]);

由此保持正常访问顺序,需要说明的是,恶意的重放会导致当前访问请求一直沿用所重放的访问请求的http头部,比如在时间1004时,用户重放访问请求2,将继续采用所述访问请求2带有的http头部1,恶意用户若持续重放访问请求,根据http头部中的时间戳t与当前时间的差值可以成功识别所述恶意用户。

请参考图3,本实施例还提供一种保证web资源请求有序性的系统,包括web资源有向图构建模块1、根节点判断模块2、http头部判断模块3、http头部校验模块4、非法请求处理模块5、以及流程结束模块6。

web资源有向图构建模块1用于控制服务端根据内容服务商提供的web资源构建web资源有向图,并根据web资源的uri为每个web资源设置一个密码;所述web资源有向图包括访问节点以及有向边,其中,每一访问节点对应一个web资源,所述有向边表示存在一条从起始访问节点到终止访问节点的直接访问路径;所述web资源有向图构建模块1还确定各访问节点对应的父节点。

根节点判断模块2用于当服务端收到客户端的访问请求时,判断所述访问请求要求访问的web资源是否对应web资源有向图中的根节点,若判断结果为是,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中添加http头部,转到流程结束模块6,否则转到http头部判断模块3;所述http头部包括客户端标识uid、回复的时间戳t、记录当前访问请求的uri的parent、以及校验码key=md5{uid t parent secret(parent)},其中,secret(parent)表示parent对应的密码。

http头部判断模块3用于服务端判断当前访问请求的http头部是否包含完整的uid、t、parent、以及key,若判断结果为是,则转到http头部校验模块4,否则,判定所述访问请求为非法请求,转到非法请求处理模块5。

http头部校验模块4用于服务端依次校验当前访问请求的http头部中的t、parent、以及key是否合法,若所述http头部校验模块的校验通过,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中重新添加新的http头部,并转到流程结束模块6;否则,判定所述访问请求为非法请求,转到非法请求处理模块5;

需要说明的是,所述新的http头部中uid直接从当前访问请求的http头部中获取,t采用回复时的时间,parent为当前访问请求的uri,key利用更新后的uid、t、以及parent通过md5{uid t parent secret(parent)}计算得到。

具体地,所述http头部校验模块4还包括:

第一判断子模块,用于判断t是否在指定范围内,若判断结果为是,转到第二判断子模块,否则所述http头部校验模块4的校验不通过;

第二判断子模块,用于判断parent记录的uri是否处于当前访问请求的uri对应的访问节点的父节点中,若判断结果为是,转到第三判断子模块,否则所述http头部校验模块4的校验不通过;

第三判断子模块,用于根据当前访问请求的http头部中的uid、t、parent计算md5{uid t parent secret(parent)},并判断计算结果是否等于所述http头部中的key值,若判断结果为是,所述http头部校验模块4的校验通过,否则,所述http头部校验模块4的校验不通过。

非法请求处理模块5用于当判定访问请求为非法请求时,服务端向客户端返回错误或者直接丢弃所述访问请求,并转到流程结束模块6;

流程结束模块6用于结束一次处理流程。

在本文中,所涉及的前、后、上、下等方位词是以附图中零部件位于图中以及零部件相互之间的位置来定义的,只是为了表达技术方案的清楚及方便。应当理解,所述方位词的使用不应限制本申请请求保护的范围。

在不冲突的情况下,本文中上述实施例及实施例中的特征可以相互结合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


技术特征:

1.一种保证web资源请求有序性的方法,其特征在于,包括以下步骤:

s1、控制服务端根据内容服务商提供的web资源构建web资源有向图,并根据web资源的uri为每个web资源设置一个密码;

s2、当服务端收到客户端的访问请求时,判断所述访问请求要求访问的web资源是否对应web资源有向图中的根节点,若是,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中添加http头部,转s6,否则执行步骤s3;所述http头部包括客户端标识uid、回复的时间戳t、记录当前访问请求的uri的parent、以及校验码key,其中,校验码key为:

key=md5{uid t parent secret(parent)},

式中,secret(parent)表示parent对应的密码;

s3、服务端查看当前访问请求的http头部是否包含uid、t、parent、以及key,若全部存在,则继续执行步骤s4,否则,判定所述访问请求为非法请求,转s5;

s4、服务端依次校验当前访问请求的http头部中的t、parent、以及key是否合法,若校验通过,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中重新添加新的http头部,转s6;否则,判定所述访问请求为非法请求,转s5;

s5、当判定访问请求为非法请求时,服务端向客户端返回错误或者直接丢弃所述访问请求,转s6;

s6、结束本次处理流程。

2.根据权利要求1所述的保证web资源请求有序性的方法,其特征在于,所述步骤s1中,所述web资源有向图包括访问节点以及有向边,其中,每一所述访问节点对应一个web资源,所述有向边表示存在一条从起始访问节点到终止访问节点的直接访问路径;在构建所述web资源有向图的过程中,确定各访问节点对应的父节点。

3.根据权利要求1或2所述的保证web资源请求有序性的方法,其特征在于,所述步骤s4的具体过程为:

s41、判断t是否在指定范围内,若是,继续执行步骤s42,否则校验不通过;

s42、判断parent记录的uri是否处于当前访问请求的uri对应的访问节点的父节点中,若在,继续执行步骤s43,否则校验不通过;

s43、根据当前访问请求的http头部中的uid、t、parent计算md5{uid t parent secret(parent)},并判断计算结果是否等于所述http头部中的key值,若是,校验通过,否则,校验不通过。

4.根据权利要求1所述的保证web资源请求有序性的方法,其特征在于,所述步骤s4中,所述新的http头部中uid直接从当前访问请求的http头部中获取,t采用回复时的时间,parent为当前访问请求的uri,key利用更新后的uid、t、以及parent通过md5{uid t parent secret(parent)}计算得到。

5.一种保证web资源请求有序性的系统,其特征在于,包括:

web资源有向图构建模块,用于控制服务端根据内容服务商提供的web资源构建web资源有向图,并根据web资源的uri为每个web资源设置一个密码;

根节点判断模块,用于当服务端收到客户端的访问请求时,判断所述访问请求要求访问的web资源是否对应web资源有向图中的根节点,若所述根节点判断模块的判断结果为是,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中添加http头部,转到流程结束模块,否则转到http头部判断模块;所述http头部包括客户端标识uid、回复的时间戳t、记录当前访问请求的uri的parent、以及校验码key=md5{uid t parent secret(parent)},其中,secret(parent)表示parent对应的密码;

http头部判断模块,用于服务端判断当前访问请求的http头部是否包含完整的uid、t、parent、以及key,若所述http头部判断模块的判断结果为是,则转到http头部校验模块,否则,判定所述访问请求为非法请求,转到非法请求处理模块;

http头部校验模块,用于服务端依次校验当前访问请求的http头部中的t、parent、以及key是否合法,若所述http头部校验模块的校验通过,服务端通过所述访问请求并处理请求,同时回复客户端在下次访问请求中重新添加新的http头部,并转到流程结束模块;否则,判定所述访问请求为非法请求,转到非法请求处理模块;

非法请求处理模块,用于当判定访问请求为非法请求时,服务端向客户端返回错误或者直接丢弃所述访问请求,并转到流程结束模块;

流程结束模块,用于结束一次处理流程。

6.根据权利要求5所述的保证web资源请求有序性的系统,其特征在于,所述web资源有向图构建模块构建的web资源有向图包括访问节点以及有向边,其中,每一访问节点对应一个web资源,所述有向边表示存在一条从起始访问节点到终止访问节点的直接访问路径;所述web资源有向图构建模块还确定各访问节点对应的父节点。

7.根据权利要求5或6所述的保证web资源请求有序性的系统,其特征在于,所述http头部校验模块包括:

第一判断子模块,用于判断t是否在指定范围内,若所述第一判断子模块的判断结果为是,转到第二判断子模块,否则所述http头部校验模块的校验不通过;

第二判断子模块,用于判断parent记录的uri是否处于当前访问请求的uri对应的访问节点的父节点中,若所述第二判断子模块的判断结果为是,转到第三判断子模块,否则所述http头部校验模块的校验不通过;

第三判断子模块,用于根据当前访问请求的http头部中的uid、t、parent计算md5{uid t parent secret(parent)},并判断计算结果是否等于所述http头部中的key值,若所述第三判断子模块的判断结果为是,所述http头部校验模块的校验通过,否则,所述http头部校验模块的校验不通过。

8.根据权利要求5所述的保证web资源请求有序性的系统,其特征在于,所述http头部校验模块中添加的新的http头部中uid直接从当前访问请求的http头部中获取,t采用回复时的时间,parent为当前访问请求的uri,key利用更新后的uid、t、以及parent根据计算式md5{uid t parent secret(parent)}得到。

技术总结
本发明提供一种保证Web资源请求有序性的方法及系统,所述方法为:构建Web资源有向图,并为每个Web资源设置一个密码;当服务端收到访问请求时,判断所述访问请求要求访问的Web资源是否对应Web资源有向图中的根节点,若是,通过所述访问请求并处理请求,同时在回复时添加HTTP头部;否则,检验当前访问请求的HTTP头部是否合法,若检验通过,通过所述访问请求并处理请求,同时在回复时重新添加HTTP头部,若检验不通过,判定所述访问请求为非法请求,返回错误或者直接丢弃所述访问请求。本发明的有益效果:在交互中使用服务端生成的可检验信息以及时间戳,可以有效防止请求伪造和重放,且适用场景更多、通用性更好。

技术研发人员:郭黎明;谢强;陈国庆
受保护的技术使用者:武汉极意网络科技有限公司
技术研发日:2020.01.14
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-23056.html

最新回复(0)