发明内容
本发明的主要目的在于提供一种网络应用中的数据提交方法及装置,以解决利用服务端实现防止请求重复提交拓展性差的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种网络应用中的数据提交方法。该方法包括:接收用户请求,该用户请求用于请求提交网络数据;获取第一网络地址,其中,第一网络地址是上述用户请求对应的地址;获取用户请求对应的网络会话标识;基于第一网络地址和网络会话标识进行哈希计算,生成第一哈希值;在预设时间内判断队列中是否存储有与第一哈希值相同的哈希值,其中,该队列存储有预先提交的网络数据对应的哈希值;以及如果预设时间内队列中存储有与第一哈希值相同的哈希值,则拒绝用户请求提交网络数据。
进一步地,获取用户请求对应的网络会话标识包括:判断用户请求对应的用户的状态;如果用户请求对应的用户的状态为登陆状态,则将用户的标识作为网络会话标识;如果用户请求对应的用户的状态为游客状态,则将用户登录的客户端的网络地址作为网络会话标识。
进一步地,通过以下方式获取预设时间:查找配置文件,配置文件用于存储网络地址与时间的对应关系;从配置文件中查找第一网络地址对应的时间,并将查找到的时间作为预设时间。
进一步地,用户请求在网络入口处进行过滤,包括:获取预先设置的重复提交判断条件;判断用户请求是否满足重复提交判断条件;其中,如果用户请求满足重复提交判断条件,拒绝用户请求,如果用户请求不满足重复提交判断条件,接收用户请求。
进一步地,获取预先设置的重复提交判断条件包括:获取预先存储的用户访问网络地址的记录;判断用户在预设时间内是否再次访问网络地址;其中,如果用户在预设时间内再次访问网络地址,拒绝用户的请求;如果用户在预设时间内没有再次访问网络地址,接收用户的请求。
为了实现上述目的,根据本发明的另一方面,提供了一种网络应用中的数据提交装置。该装置包括:接收模块,用于接收用户请求,该用户请求用于请求提交网络数据;第一获取模块,用于获取第一网络地址,其中,第一网络地址是用户请求对应的地址;第二获取模块,用于获取用户请求对应的网络会话标识;计算模块,用于基于第一网络地址和网络会话标识进行哈希计算,生成第一哈希值;第一判断模块,用于在预设时间内判断队列中是否存储有与第一哈希值相同的哈希值,其中,队列存储有预先提交的网络数据对应的哈希值;以及拒绝模块,用于如果预设时间内队列中存储有与第一哈希值相同的哈希值,则拒绝用户请求提交网络数据。
进一步地,第二获取模块包括:第二判断模块,用于判断用户请求对应的用户的状态;第一设置模块,用于如果用户请求对应的用户的状态为登陆状态,则将用户的标识作为网络会话标识;第二设置模块,用于如果用户请求对应的用户的状态为游客状态,则将用户登录的客户端的网络地址作为网络会话标识。
进一步地,该网络应用中的数据提交装置还包括:第一查找模块,用于查找配置文件,配置文件用于存储网络地址与时间的对应关系;第二查找模块,用于从配置文件中查找第一网络地址对应的时间,并将查找到的时间作为预设时间。
进一步地,该网络应用中的数据提交装置还包括:第三获取模块,用于获取预先设置的重复提交判断条件;第三判断模块,用于判断用户请求是否满足重复提交判断条件;其中,如果用户请求满足重复提交判断条件,拒绝用户请求;如果用户请求不满足重复提交判断条件,接收用户请求。
进一步地,第三获取模块包括:第四获取模块,用于获取预先存储的用户访问网络地址的记录;第四判断模块,用于判断用户在预设时间内是否再次访问网络地址;其中,如果用户在预设时间内再次访问网络地址,拒绝用户的请求;如果用户在预设时间内没有再次访问网络地址,接收用户的请求。
本发明采用接收用户请求,该用户请求用于请求提交网络数据;获取第一网络地址;获取用户请求对应的网络会话标识;基于第一网络地址和网络会话标识进行哈希计算,生成第一哈希值;在预设时间内判断队列中是否存储有与第一哈希值相同的哈希值,其中,该队列存储有预先提交的网络数据对应的哈希值;以及如果预设时间内队列中存储有与第一哈希值相同的哈希值,则拒绝用户请求提交网络数据。本发明利用时间进行请求重复提交的判定解决了利用服务端实现防止请求重复提交拓展性差的问题,进而达到了既能够防止请求重复提交,又能够提高拓展性的效果。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1是根据本发明网络应用中的数据提交方法的第一实施例的流程图。如图1所示,该网络应用中的数据提交方法包括如下的步骤S101至步骤S106:
步骤S101,接收用户请求,用户请求用于请求提交网络数据。
服务端接收的用户请求主要用于请求提交网络数据,该用户请求信息中包括用户信息,用户请求的内容,请求方法等。请求方法GET和HEAD被通用的网络服务器支持,而其他请求方法通常是可选的。GET方法取回请求资源标识信息,例如,在浏览器地址栏输入网址访问网页时,浏览器采用GET方法向服务器获取网络资源。HEAD方法也是取回请求资源标识信息,只是在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向数据库发送消息等。
步骤S102,获取第一网络地址,其中,第一网络地址是用户请求对应的地址。
当用户请求访问网页时,服务器端会自动获取用户访问的网页的地址。第一网络地址是用户请求对应的网页地址。获取用户请求对应的网页地址是为了利用该网络地址与用户请求对应的网络会话标识进行哈希计算。除此之外,获取用户请求对应的地址是为了根据用户访问的网页的业务或者是用户请求的内容确定与该网页地址对应的预设时间,本发明优选地将不同网页网址对应的预设时间设置为不同,例如,对于在线支付网页,需要将其对应的预设时间设置的很长,这样才能防止请求重复提交造成地重复支付问题。对于普通网页,比如用户注册页面,其对应的预设时间会比在线支付网页对应的预设时间稍微短些。
优选地,本发明将用户请求对应的网络地址,与该地址所对应的预设时间存储与服务器中的配置文件中,服务器通过该配置文件对每个网络地址的预设时间进行管理。
优选地,与用户请求对应的第一网络地址相对应的预设时间可以通过以下方式获得:查找配置文件,配置文件用于存储网络地址与时间的对应关系;从配置文件中查找第一网络地址对应的时间,并将查找到的时间作为预设时间。
步骤S103,获取用户请求对应的网络会话标识。
获取用户请求对应的网络会话标识是为了将该网络标识与用户请求对应的网络地址进行哈希,进而达到区分用户请求以及区分用户请求所访问的网络地址的目的。
优选地,本发明实施例中获取用户请求对应的网络会话标识是通过判断用户请求对应的用户的状态确定的。如果用户请求对应的用户的状态为登陆状态,则将用户的标识作为网络会话标识;如果用户请求对应的用户的状态为游客状态,则将用户登录的客户端的网络地址作为网络会话标识。
步骤S104,基于第一网络地址和网络会话标识进行哈希计算,生成第一哈希值。
在获取用户请求对应的第一网络地址以及网络会话标识之后,将这两者进行哈希计算,生成第一哈希值。哈希就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出。将用户请求对应的第一网络地址和网络会话标识进行哈希,有利于节省服务器空间,而且可以方便判断出访问同一网络地址的不同用户,或者是同一用户访问的不同网站。
步骤S105,在预设时间内判断队列中是否存储有与第一哈希值相同的哈希值,其中,队列存储有预先提交的网络数据对应的哈希值。
这里的队列是指时间过期自动消失队列,即队列中原来存储的哈希值超多预设时间将会自动消失,其中,时间指的是与用户请求的网络地址对应的预设时间。每次接收的用户请求的网络会话标识(可以是用户的标识,也可以是用户登录的客户端的网络地址)都将会与用户请求对应的网络地址进行哈希,所得的哈希值将会存储与该队列中。
步骤S106,如果预设时间内队列中存储有与第一哈希值相同的哈希值,则拒绝用户请求提交网络数据。
如果在预设时间内队列中存在与第一哈希值相同的哈希值,则证明用户请求在预设时间内重复提交,服务器将会拒绝该用户请求提交网络数据;如果预设时间内队列中不存在与第一哈希值相同的哈希值,则证明用户请求在预设时间内没有重复提交,服务器将会接收该用户请求,并接收该用户请求所要提交的数据交由服务器其他模块进行相应的处理。
通过对用户请求对应的网络地址设置不同的预设时间,在预设时间内判断新接收的用户请求的网络会话标识与对应的第一网络地址进行哈希所得的第一哈希值是否与队列中已经存在的哈希值相同,如果相同,则证明在预设时间内用户请求重复提交,服务器拒绝该用户请求提交数据;如果在预设时间内新接收的用户请求的网络会话标识与对应的第一网络地址进行哈希所得的第一哈希值与队列中已经存在的哈希值不相同,那么将新接收的用户请求的网络会话标识与对应的第一网络地址进行哈希所得的第一哈希值存储与队列中,且该第一哈希值超过预设时间将会自动消失。
本发明网络应用中的数据提交方法采用接收用户请求,该用户请求用于请求提交网络数据;获取第一网络地址,其中,第一网络地址是上述用户请求对应的地址;获取用户请求对应的网络会话标识;基于第一网络地址和网络会话标识进行哈希计算,生成第一哈希值;在预设时间内判断队列中是否存储有与第一哈希值相同的哈希值,其中,该队列存储有预先提交的网络数据对应的哈希值;以及如果预设时间内队列中存储有与第一哈希值相同的哈希值,则拒绝用户请求提交网络数据,通过配置文件管理不同网络地址对应的预设时间,根据该预设时间服务器对用户请求进行重复提交判断,解决了利用服务端实现防止请求重复提交拓展性差的问题,利用该方法可以防止请求重复提交,而且该方法具有良好的拓展性。
图2是根据本发明服务端对客户端用户请求在网络入口处进行过滤的第二实施例的流程图。如图2所示,该网络应用中的数据提交方法对客户端用户请求在网络入口处进行过滤,具体包括如下的步骤S201至步骤S204:
步骤S201,获取预先设置的重复提交判断条件。
服务器端在网络的入口处对客户端的用户请求进行全局过滤。在Asp.net中可以使用HttpModule进行扩展,如果使用Asp.net MVC可以使用Filter来进行扩展,其他语言与此类似。在Asp.net客户端的所有用户请求都需要经过HttpModel来处理,通过HttpModel扩展可以实现截获所有的用户请求。
优选地,本发明中获取预先设置的重复提交判断条件包括:
获取预先存储的用户访问网络地址的记录。如果用户是第一次访问该网络地址,则将用户首次访问信息存储与队列中,并从配置文件中查找与该网络地址对应的预设时间。判断用户在预设时间内是否再次访问网络地址。其中,如果用户在预设时间内再次访问该网络地址,服务器检测到存在该用户的访问记录,服务器将会拒绝用户的请求,返回给客户端提示信息,告知用户请求重复提交。如果用户超过预设时间访问该网络地址,服务器检测不到用户访问记录,服务器将接收该用户请求,将该用户请求交给其他模块进行处理,并将此次的用户访问记录存储在队列中。
步骤S202,判断用户请求是否满足重复提交判断条件。
步骤S203,如果用户请求满足重复提交判断条件,拒绝用户请求。
步骤S204,如果用户请求不满足重复提交判断条件,接收用户请求。
本发明网络应用中的数据提交方法通过设置请求重复提交判断条件,根据请求重复提交判断条件服务器在网络入口处对客户端的所有用户请求进行过滤,采用获取预先设置的重复提交判断条件;判断用户请求是否满足重复提交判断条件;如果用户请求满足重复提交判断条件,拒绝用户请求;如果用户请求不满足重复提交判断条件,接收用户请求,解决了利用服务端实现防止请求重复提交拓展性差的问题,达到了防止请求重复提交,保证良好的拓展性的效果。
从以上的描述中,可以看出,本发明实现了如下技术效果:
本发明网络应用中的数据提交方法采用将用户请求对应的网络会话标识与第一网络地址进行哈希得到的第一哈希值与队列中存储的哈希值进行判定,如果在预设时间内第一哈希值与队列中存储的哈希值相同,则说明用户请求重复提交,服务器端拒绝该用户请求提交网络数据;如果在预设时间内第一哈希值与队列中存储的哈希值不相同,服务器接收该用户请求。本发明利用时间来进行判定,在服务器端进行重复提交过滤,具有良好的拓展性。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明的实施例,提供了一种网络应用中的数据提交装置。图3是根据本发明网络应用中的数据提交装置的第一实施例的示意图,如图3所示,该网络应用中的数据提交装置包括:接收模块10,第一获取模块20,第二获取模块30,计算模块40,第一判断模块50和拒绝模块60。
接收模块10,用于接收用户请求,该用户请求用于请求提交网络数据;
第一获取模块20,用于获取第一网络地址,其中,第一网络地址是用户请求对应的地址;
第二获取模块30,用于获取用户请求对应的网络会话标识;
计算模块40,用于基于第一网络地址和网络会话标识进行哈希计算,生成第一哈希值;
第一判断模块50,用于在预设时间内判断队列中是否存储有与第一哈希值相同的哈希值,其中,队列存储有预先提交的网络数据对应的哈希值;
拒绝模块60,用于如果预设时间内队列中存储有与第一哈希值相同的哈希值,则拒绝用户请求提交网络数据。
优选地,该网络应用中的数据提交装置中的第二获取模块30可以包括:第二判断模块,用于判断用户请求对应的用户的状态;第一设置模块,用于如果用户请求对应的用户的状态为登陆状态,则将用户的标识作为网络会话标识;第二设置模块,用于如果用户请求对应的用户的状态为游客状态,则将用户登录的客户端的网络地址作为网络会话标识。
本发明网络应用中的数据提交装置包括接收模块10,第一获取模块20,第二获取模块30,计算模块40,第一判断模块50和拒绝模块60。通过该装置,本发明解决了服务端防止请求重复提交拓展性差的问题,不仅可以防止用户请求重复提交网络数据,还可以防止用户恶意灌水等某段时间重复提交的过滤。
图4是根据本发明网络应用中的数据提交装置的第二实施例的示意图,如图4所示,该网络应用中的数据提交装置包括:接收模块10,第一获取模块20,第二获取模块30,计算模块40,第一判断模块50,拒绝模块60,第一查找模块70,第二查找模块80,第三获取模块90和第三判断模块110。其中,第三获取模块90包括:第四获取模块901和第四判断模块902。
第一查找模块70,用于查找配置文件,配置文件用于存储网络地址与时间的对应关系;
第二查找模块80,用于从配置文件中查找第一网络地址对应的时间,并将查找到的时间作为预设时间。
第三获取模块90,用于获取预先设置的重复提交判断条件;
第三判断模块110,用于判断用户请求是否满足重复提交判断条件;其中,如果用户请求满足重复提交判断条件,拒绝用户请求;如果用户请求不满足重复提交判断条件,接收用户请求。
第四获取模块901,用于获取预先存储的用户访问网络地址的记录;
第四判断模块902,用于判断用户在预设时间内是否再次访问网络地址;其中,如果用户在预设时间内再次访问网络地址,拒绝用户的请求;如果用户在预设时间内没有再次访问网络地址,接收用户的请求。
本发明网络应用中的数据提交装置包括:接收模块10,第一获取模块20,第二获取模块30,计算模块40,第一判断模块50,拒绝模块60,第一查找模块70,第二查找模块80,第三获取模块90和第三判断模块110。其中,第三获取模块90包括:第四获取模块901和第四判断模块902。该网络应用中的数据提交装置利用时间来进行判定,在服务端对客户端的用户请求进行重复提交过滤,具有良好的拓展性。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。