一种适用于全局表单请求的统一防重复提交方法与流程

未命名 09-24 阅读:122 评论:0


1.本发明属于系统防御技术领域,具体涉及一种适用于全局表单请求的统一防重复提交方法


背景技术:

2.javaweb技术诞生后,互联网上或公司内部网上已经存在海量java服务端网页,然而相当多的网站无法抵御大量恶意的重复请求。用户大量的重复提交请求往往是恶意的,例如薅羊毛抢券、击垮服务器、盗取数据等等,重复提交会导致数据混乱,甚至可能导致系统崩溃,这种带有攻击性的重复提交请求行为需要资深的开发工程师采取各种手段来进行防御。当已运行良久的系统需要建立统一的防御机制时,后台需做大量的代码变更,无法避免其所带来的系统无法运行等问题,不仅耗时又容易出错。
3.现有技术多采用拦截器防止重复提交,通过拦截器生成独一无二的token保存在session中,当请求通过jsp页面提交数据时,拦截器通过判断请求提交时是否携带token,及携带token与session中的token是否一致,识别并拦截重复提交。其次,专利“一种防止表单重复提交的方法及装置”(申请号:202110426605.7)提出通过在前端接收客户端的提交请求时赋予前端唯一标识码;通过表单提交带有所述标识码的信息;利用锁机制对存在所述标识码的信息进行审核。本发明通过标识码以及锁机制对信息进行审核,对于满足标识码要求的信息再次进行锁机制的判断,使表单在保证唯一的前提下,完成表单的发送,本发明逻辑简单,使防止重复表单提交具备时效性,提升使用可靠性。然而不管是token还是唯一标识符,都有被伪造和破解的可能性,将会带来了更严重的安全问题;而锁机制虽然避免短时间内的重复提交,但这种方式使用受限,只能限制固定时间内重复提交操作,根本无法适用复杂业务系统的重复提交场景;其次,前端拦截重复提交并不能防止某些人员通过修改前端代码实现重复提交。
4.后端防重表多采用redis数据库实现,当用户提交数据时,将数据的唯一标识存储到后端redis数据库中,如果用户再次提交相同的数据,便可以判断出是一次重复提交。专利“一种订单重复提交的控制方法及装置”(申请号:202010104380.9)根据所述订单提交请求信息判断所述订单是否被重复提交;所述订单提交请求信息使用setnx写入redis,若上述写入操作失败,则确定所述订单被重复提交。此发明虽增加了后端拦截机制,使用方便且操作简单,能有效解决订单的重复提交,但需要后端参与判断处理,处理速度将受到请求数、数据库存取延迟等诸多不确定因素影响,导致结果响应延迟,降低防重表的效率降低。
5.用户通过浏览器请求访问服务器中的表单数据时,表单请求既可以通过form表单请求方式提交数据至服务器,也可以通过ajax请求方式提交数据至服务器。针对不同访问的数据提交方式,现有技术采用不同的防重复提交手段,在同一个业务系统中,若采用不同的防重复提交手段,不仅增加技术布局的难度,更是增加了防重过程的繁琐。
6.基于此,需要一种安全性高且处理方式统一的防重请求技术。


技术实现要素:

7.为解决现有的技术问题,本发明提供一种适用于全局表单请求的统一防重复提交方法,本发明通过针对from表单请求及ajax表单请求提交的不同处理逻辑及处理结果,一方面将校验重复提交的加密密钥通过http响应头传给浏览器,另一方面通过分析表单页面,将加密密钥通过html dom结构传给浏览器,使浏览器提交任一种表单请求时都能携带加密密钥,执行后续的防重判断,保证了两种表单请求提交的统一防重处理;此外本发明中的加密密钥通过加盐值及加密算法,双重的加密机制保证了密钥私密性,增强了防重过程的安全性。
8.为解决上述技术问题,本发明提供一种适用于全局表单请求的统一防重复提交方法,其特征在于,具体步骤包括:
9.步骤1:拦截服务器返回浏览器的表单页面,浏览器在页面渲染过程中,分析表单页面并执行表单请求的密钥拦截,具体是在:在表单页面的html结构的dom节点中插入一段javascript代码,用于传递加密密钥至浏览器端,并将所述加密密钥添加在表单请求的请求参数中;
10.步骤2:对于浏览器端发出的表单请求,从请求参数中获取加密密钥,解密所述加密密钥,校验所述加密密钥的正确性,具体包含:服务端拦截并获取所述请求参数中的加密密钥,利用base64算法解密所述加密密钥,以特殊字符为分隔标记,将解密后的加密密钥分割为前后2个部分的字符串;所述前半部分的字符串经md5算法加密后,与后半部分的字符串比对;若比对不一致,则判定加密密钥不正确,拒绝表单请求;若比对一致,则判定加密密钥正确;
11.步骤3:筛查表单请求,拒绝重复的表单请求,提交非重复的表单请求至服务器处理,具体包含:根据所述加密密钥是否存在密钥存储器中,判断表单请求是否重复;若密钥存储器中存有所述加密密钥,则判定表单请求为非重复,服务器处理请求,密钥存储器删除所述密钥,继续执行步骤4;若密钥存储器不存在所述密钥,则判定表单请求为重复,服务器拒绝处理;
12.步骤4:监听服务器对表单请求的处理过程,基于表单请求的请求时间生成新的加密密钥,并将所述新的加密密钥及请求处理结果一同传给浏览器。
13.所述步骤1的具体流程包含:
14.步骤1-1:生成加密密钥:对请求时间和随机数的拼接值进行加盐算法后,生成初始密钥;利用md5算法加密初始密钥,将初始密钥与所述加密生成的字符串进行前后拼接,再利用base64算法加密拼接后的字符串,生成加密密钥并保存在密钥存储器中;所述密钥存储器是数据库和内存的其中任意一个;
15.步骤1-2:将所述加密密钥写入javascript代码;待页面渲染时执行所述javascript代码,在表单页面的from标签内插入所述加密密钥;具体是:在所有form标签内插入表单元素input,设置所述input的元素值为所述加密密钥;
16.步骤1-3:获取浏览器端提交的表单请求,调用ajax请求的提交方法时,执行javascript代码,在请求头的请求参数中写入加密密钥;调用from表单请求的提交方法时,获取所述input的元素值为请求参数。
17.在所述步骤1中,所述密钥存储器根据业务场景配置,在分布式场景中,所述密钥
存储器配置优选redis数据库,在单机场景中,所述密钥存储器配置优选内存;
18.所述dom节点的优选顺序依次为《head》节点、《body》节点、《html》节点;
19.在所述步骤1中,所述执行javascript时,在请求头中写入x-requested-with头阈值为xmlhttprequest。
20.所述步骤4的具体流程包含:
21.步骤4-1:确定表单请求的提交方式:根据表单请求的请求时间,按照步骤1-1密钥生成方法生成新的加密密钥并保存;依据http请求头中x-requested-with头阈值区分表单请求的提交方式,若所述提交方式是ajax请求提交,执行步骤4-2;若提交方式是form表单请求提交,执行步骤4-3;
22.步骤4-2:监听服务器响应ajax请求的过程,在http响应头中插入所述新的加密密钥;所述javascript代码解析http响应头,获取新的加密密钥,并更新当前表单页面中所有input的元素值为所述新的加密密钥;
23.步骤4-3:服务端响应from表单请求时,监听服务器端重新创建表单页面的过程,按照步骤1的方式,插入javascript代码,并在表单页面的html结构中写入新的加密密钥。
24.通过配置拦截器拦截浏览器端发出的表单请求及拦截服务器返回浏览器的表单页面,监听服务器对表单请求的处理全过程;所述拦截器配置在服务端。
25.所述步骤1-2中,将所述加密密钥写入javascript代码具体为:
26.unction injecttokenattribute(element,attr)
27.{var location=element.attributes[attr]&&element.attributes[attr].value;
[0028]
if(location &&!isunprotectedextension(location))
[0029]
{var tokens={};
[0030]
if(tokenholder.mastertoken)
[0031]
{tokens[tokenname]=tokenholder.mastertoken}
[0032]
for(var name in tokens)
[0033]
{var value=tokens[name];
[0034]
var tokenvaluematcher=new regexp('/((\\?|&)'+name+'=)([^?#&]*)/i');
[0035]
var ismatch=tokenvaluematcher.test(location);
[0036]
if(!ismatch)
[0037]
{var anchorindex=location.indexof('#');
[0038]
if(anchorindex!==-1){var baselocation=location.split('#')[0];
[0039]
var anchor=location.substring(anchorindex);
[0040]
location=addtokentolocation(baselocation,name,value)+anchor;}else{location=addtokentolocation(location,name,value);}}
[0041]
else{location.replace(tokenvaluematcher,'$1'+value)}}element.attributes&&element.attributes[attr]&&(element.attributes[attr].value=location);}}
[0042]
其中,tokenholder.mastertoken为写入的加密密钥。
[0043]
本发明所达到的有益效果:
[0044]
1)本发明通过分析服务端返回的表单页面,在页面的html结构中插入javascript代码,待页面渲染时执行javascript代码,浏览器获得密钥,并使浏览器在提交任一种表单请求时都能获取当前服务端返回的加密密钥,执行统一的密钥校验及防重判断流程,实现两种表单请求提交的统一防重处理,简化了部署防重架构,同时提高了防重表的效率;
[0045]
2)本发明通过监听服务器处理表单请求的提交过程,针对from表单请求及ajax表单请求的不同处理逻辑,通过javascript代码将服务端新生成的密钥传递给浏览器端,由于不涉及服务器端的判断处理,更没有增加服务器的处理负担,相对于现有的防重表技术,本发明提高了服务端性能,也减少了各种因素导致的延迟;
[0046]
3)本发明将加密密钥生成置于服务后端,在监听服务器对表单请求处理的过程中,综合利用加盐值及加密算法执行加密,双重的加密机制保证了密钥私密性,增加人为破解的难度,增强了防重过程的安全性。
附图说明
[0047]
图1为本发明实施例中一种适用于全面表单请求的统一防重复提交方法流程图;
[0048]
图2为本发明实施例中分析表单页面及拦截表单请求的流程图;
[0049]
图3为本发明实施例监听表单请求的处理流程图;
[0050]
图4为本发明实施例中一种适用于全局表单请求的统一防重度提交的系统结构示意图。
具体实施方式
[0051]
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0052]
ajax请求和form表单请求的区别在于表单页面是否发生跳转。form表单请求提交时,会舍弃浏览器当前显示的表单页面,后台服务器将创建一个新的表单页面并返回给浏览器,适用于提交并刷新当前页面,或者提交后跳转到其他页面。ajax请求提交是在浏览器新创建一个请求,后台服务器只需要处理请求,适用于提交数据并展示后台返回的处理信息。由于两种表单提交方式的存在差异,而且ajax请求发展晚于form表单请求,因此现有技术通常采用不同的技术手段分别防止这2种表单提交方式的重复提交,无论是技术布局还是防重流程都增加了困难。
[0053]
在本发明实施例中,用户通过浏览器请求访问表单页面,并以form表单和ajax请求的方式提交表单请求。
[0054]
图1为本发明实施例中一种适用于全面表单请求的统一防重复提交方法流程图,具体步骤包含:
[0055]
步骤101:拦截服务器返回浏览器的表单页面,浏览器在页面渲染过程中,分析表单页面并执行表单请求的密钥拦截,具体是在:在表单页面的html结构的dom节点中插入一段javascript代码,由所述javascript代码传递加密密钥至浏览器端,并将所述加密密钥添加在表单请求的请求参数中;
[0056]
在所述步骤1中,所述执行javascript时,在请求头中写入x-requested-with头阈值为xmlhttprequest,避免部分旧版浏览器不会自动添加x-requested-with头阈值。
[0057]
在本发明实施例中,通过在所述html页面的dom结点处插入javascript代码,所述dom结点的优选顺序依次为《head》节点、《body》节点、《html》节点,这是由于html规范支持javascript代码放置在《head》节点或《body》节点中,在同时存在《head》节点和《body》节点时,优先考虑在《head》节点是因为head节点位于html文档的上部,《head》节点会比《body》节点优先被检测,检测需要额外的服务端资源来处理,因此越早停止检测越能加快服务端请求处理速度。而《html》节点不属于html规范支持的范围,但目前各大浏览器端都支持《html》节点插入javascript代码,由于并非html的标准处理方式,为保险起见,在缺失《head》节点、《body》节点时,使用《html》节点来插入javascript代码。
[0058]
参见图2为本发明实施例中分析表单页面及拦截表单请求的流程图,步骤101的具体流程包含:
[0059]
步骤101-1:为表单请求生成加密密钥:对请求时间和随机数的拼接值加盐值后,生成初始密钥;利用md5算法加密初始密钥,将初始密钥与所述加密生成的字符串进行前后拼接,再利用base64算法加密拼接后的字符串,生成加密密钥并保存在密钥存储器中;所述密钥存储器是数据库和内存的其中任一个;在本发明实施例中,所述密钥存储器根据业务场景配置,在分布式的业务场景中,所述密钥存储器配置优选redis数据库,在单机的业务场景中,所述密钥存储器配置优选内存;
[0060]
步骤101-2:插入并执行javascript代码,传递加密密钥至浏览器端:将所述加密密钥写入所述javascript代码;待页面渲染时执行所述javascript代码,在表单页面的from标签内插入所述加密密钥;具体是:在所有form标签内插入表单元素input元素,设置所述元素值为所述加密密钥;
[0061]
如下为插入的所述javascript代码,其中“tokenholder.mastertoken”为写入的加密密钥。所述代码经实施例验证发现,代码运行效率高、可靠性及稳定性好,运行过程降低bug出现率;其次代码量少且简洁,易于后期维护。
[0062]
unction injecttokenattribute(element,attr)
[0063]
{var location=element.attributes[attr]&&element.attributes[attr].value;
[0064]
if(location&&!isunprotectedextension(location))
[0065]
{var tokens={};
[0066]
if(tokenholder.mastertoken)
[0067]
{tokens[tokenname]=tokenholder.mastertoken}//写入加密密钥
[0068]
for(var name in tokens)
[0069]
{var value=tokens[name];
[0070]
var tokenvaluematcher=new regexp('/((\\?|&)'+name+'=)([^?#&]*)/i');
[0071]
var ismatch=tokenvaluematcher.test(location);
[0072]
if(!ismatch)
[0073]
{var anchorindex=location.indexof('#');
[0074]
if(anchorindex!==-1){var baselocation=location.split('#')[0];
[0075]
var anchor=location.substring(anchorindex);
[0076]
location=addtokentolocation(baselocation,name,value)+anchor;}else
{location=addtokentolocation(location,name,value);}}
[0077]
else{location.replace(tokenvaluematcher,'$1'+value)}}element.attributes&&element.attributes[attr]&&(element.attributes[attr].value=location);}}
[0078]
步骤101-3:拦截表单请求中写入加密密钥:获取浏览器端提交的表单请求,调用ajax请求的提交方法时,执行javascript代码,在请求头的请求参数中写入加密密钥;调用from表单请求的提交方法时,获取所述input元素值为请求参数;
[0079]
步骤102:校验密钥,判断密钥有效性:拦截浏览器端发出的表单请求,从请求参数中获取所述加密密钥,解密加密密钥后校验加密密钥的正确性,具体包含服务端拦截并获取所述请求参数中的加密密钥,利用base64算法解密所述加密密钥,以特殊字符为分隔标记,将解密后的加密密钥分割为前后2个部分;所述前半部分字符串经md5算法加密后,与后半部分字符串比对;若比对不一致,则判定加密密钥不正确,拒绝表单请求;若比对一致,则判定加密密钥正确;
[0080]
步骤103:筛查重复请求,拒绝重复的表单请求,提交非重复请求至服务器处理,具体包含:根据所述加密密钥是否存在密钥存储器中,判断表单请求是否为重复请求;若密钥存储器中存有所述加密密钥,则表单请求为非重复请求,服务器处理请求,密钥存储器删除所述密钥,继续执行步骤104;若密钥存储器不存在所述密钥,则表单请求为重复请求,服务器拒绝处理;
[0081]
步骤104:密钥刷新及返回:监听服务器对表单请求的处理过程,基于表单请求的请求时间生成新的加密密钥,并将所述新的加密密钥及请求处理结果一同传给浏览器;
[0082]
图3为本发明实施例监听表单请求的处理流程图,具体步骤包含:
[0083]
步骤104-1:确定表单请求的提交方式:根据表单请求的请求时间,按照步骤101-1密钥生成方法生成新的加密密钥并保存;依据http请求头中x-requested-with头阈值区分表单请求的提交方式,若所述提交方式是ajax请求提交,执行步骤104-2;若提交方式是form表单请求提交,执行步骤104-3;
[0084]
步骤104-2:监听服务器响应ajax请求的过程,通过响应头传递新密钥:在http响应头中插入所述新的加密密钥;所述javascript代码解析http响应头,获取新的加密密钥,并更新当前表单页面中所有input元素值为所述新的加密密钥;
[0085]
步骤104-3:监听服务端响应from表单请求时,通过javascript代码传递新密钥:监听服务器端重新创建表单页面的过程,按照步骤1的方式,插入所述javascript代码,并在在表单页面的html结构中写入新的加密密钥;
[0086]
步骤105:新提交的表单请求提交时,将携带新的加密密钥访问服务器。
[0087]
在本发明实施例中,通过配置拦截器拦截浏览器端发出的表单请求及拦截服务器返回浏览器的表单页面,监听服务器对表单请求的处理过程;所述拦截器是servlet拦截器,配置在服务端。设置拦截服务器返回给浏览器端的数据,所述数据包含表单的html页面和响应头;具体是在servlet拦截器的配置文件web.xml中配置自动监听服务器端返回给用户浏览器的数据,包含网页内容、响应头的数据。
[0088]
图4为本发明实施例中一种适用于全局表单请求的统一防重度提交的系统结构示意图,具体包含:servlet拦截器、浏览器、服务器及redis数据库;
[0089]
所述浏览器用于接收加密密钥,页面渲染时寻找并执行所述javascript代码;所述浏览器支持旧版浏览器、现代版本浏览器任一种,比如可支持最低版本的微软ie浏览器6.0版本;
[0090]
所述servlet拦截器用于监听浏览器提交表单请求及服务器处理表单请求的过程,并通过调用密钥生成模块、密钥校验模块、密钥存储模块、目标检测模块及目标识别模块,执行密钥生成、插入、传递及校验。
[0091]
所述密钥生成模块,通过内置加密算法,用于根据请求提交时间生成加密密钥;
[0092]
所述密钥校验模块,用于获取表单请求的请求参数中的加密密钥,判断加密密钥的有效性;
[0093]
所述密钥存储模块,用于将生成的加密密钥存入所述redis数据库中,同时在获取表单请求时,执行加密密钥的比对,判断表单请求是否重复提交;
[0094]
所述目标检验模块,用于寻找表单页面的dom节点,并在所述节点处插入javascript代码;
[0095]
所述服务器用于处理浏览器提交的页面访问请求及表单请求;
[0096]
所述redis数据库用于存储加密密钥。
[0097]
本发明所达到的有益效果:
[0098]
1)本发明通过分析服务端返回的表单页面,在页面的html结构中插入javascript代码,待页面渲染时执行javascript代码,浏览器获得密钥,并使浏览器在提交任一种表单请求时都能获取当前服务端返回的加密密钥,执行统一的密钥校验及防重判断流程,实现两种表单请求提交的统一防重处理,简化了部署防重架构,同时提高了防重表的效率;
[0099]
2)本发明通过监听服务器处理表单请求的提交过程,针对from表单请求及ajax表单请求的不同处理逻辑,通过javascript代码将服务端新生成的密钥传递给浏览器端,由于不涉及服务器端的判断处理,更没有增加服务器的处理负担,相对于现有的防重表技术,本发明提高了服务端性能,也减少了各种因素导致的延迟;
[0100]
3)本发明将加密密钥生成置于服务后端,在监听服务器对表单请求处理的过程中,综合利用加盐值及加密算法执行加密,双重的加密机制保证了密钥私密性,增加人为破解的难度,增强了防重过程的安全性。
[0101]
以上实施例不以任何方式限定本发明,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围,本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。

技术特征:
1.一种适用于全局表单请求的统一防重复提交方法,其特征在于,包括:步骤1:拦截服务器返回浏览器的表单页面,浏览器在页面渲染过程中,分析表单页面并执行表单请求的密钥拦截,具体是在:在表单页面的html结构的dom节点中插入一段javascript代码,用于传递加密密钥至浏览器端,并将所述加密密钥添加在表单请求的请求参数中;步骤2:对于浏览器端发出的表单请求,从请求参数中获取加密密钥,解密所述加密密钥,校验所述加密密钥的正确性,具体包含:服务端拦截并获取所述请求参数中的加密密钥,利用base64算法解密所述加密密钥,以特殊字符为分隔标记,将解密后的加密密钥分割为前后2个部分的字符串;所述前半部分的字符串经md5算法加密后,与后半部分的字符串比对;若比对不一致,则判定加密密钥不正确,拒绝表单请求;若比对一致,则判定加密密钥正确;步骤3:筛查表单请求,拒绝重复的表单请求,提交非重复的表单请求至服务器处理,具体包含:根据所述加密密钥是否存在密钥存储器中,判断表单请求是否重复;若密钥存储器中存有所述加密密钥,则判定表单请求为非重复,服务器处理请求,密钥存储器删除所述密钥,继续执行步骤4;若密钥存储器不存在所述密钥,则判定表单请求为重复,服务器拒绝处理;步骤4:监听服务器对表单请求的处理过程,基于表单请求的请求时间生成新的加密密钥,并将所述新的加密密钥及请求处理结果一同传给浏览器。2.如权利要求1所述的一种适用于全局表单请求的统一防重复提交方法,其特征在于,所述步骤1的具体流程包含:步骤1-1:生成加密密钥:对请求时间和随机数的拼接值进行加盐算法后,生成初始密钥;利用md5算法加密初始密钥,将初始密钥与所述加密生成的字符串进行前后拼接,再利用base64算法加密拼接后的字符串,生成加密密钥并保存在密钥存储器中;所述密钥存储器是数据库和内存的其中任意一个;步骤1-2:将所述加密密钥写入javascript代码;待页面渲染时执行所述javascript代码,在表单页面的from标签内插入所述加密密钥;具体是:在所有form标签内插入表单元素input,设置所述input的元素值为所述加密密钥;步骤1-3:获取浏览器端提交的表单请求,调用ajax请求的提交方法时,执行javascript代码,在请求头的请求参数中写入加密密钥;调用from表单请求的提交方法时,获取所述input的元素值为请求参数。3.如权利要求2所述的一种适用于全局表单请求的统一防重复提交方法,其特征在于,在所述步骤1中,所述密钥存储器根据业务场景配置,在分布式场景中,所述密钥存储器配置优选redis数据库,在单机场景中,所述密钥存储器配置优选内存;所述dom节点的优选顺序依次为<head>节点、<body>节点、<html>节点;在所述步骤1中,所述执行javascript时,在请求头中写入x-requested-with头阈值为xmlhttprequest。4.如权利要求3所述的一种适用于全局表单请求的统一防重复提交方法,其特征在于,所述步骤4的具体流程包含:步骤4-1:确定表单请求的提交方式:根据表单请求的请求时间,按照步骤1-1密钥生成
方法生成新的加密密钥并保存;依据http请求头中x-requested-with头阈值区分表单请求的提交方式,若所述提交方式是ajax请求提交,执行步骤4-2;若提交方式是form表单请求提交,执行步骤4-3;步骤4-2:监听服务器响应ajax请求的过程,在http响应头中插入所述新的加密密钥;所述javascript代码解析http响应头,获取新的加密密钥,并更新当前表单页面中所有input的元素值为所述新的加密密钥;步骤4-3:服务端响应from表单请求时,监听服务器端重新创建表单页面的过程,按照步骤1的方式,插入javascript代码,并在表单页面的html结构中写入新的加密密钥。5.如权利要求4所述的一种适用于全局表单请求的统一防重复提交方法,其特征在于,通过配置拦截器拦截浏览器端发出的表单请求及拦截服务器返回浏览器的表单页面,监听服务器对表单请求的处理全过程;所述拦截器配置在服务端。6.如权利要求5所述的一种适用于全局表单请求的统一防重复提交方法,其特征在于,所述步骤1-2中,将所述加密密钥写入javascript代码具体为:2中,将所述加密密钥写入javascript代码具体为:其中,tokenholder.mastertoken为写入的加密密钥。

技术总结
本发明公开了一种适用于全局表单请求的统一防重复提交方法,其特征在于,拦截服务器返回浏览器的表单页面,分析表单页面的HTML结构并插入密钥,执行表单请求的密钥拦截;校验密钥,判断密钥有效性;利用密钥筛查重复请求,拒绝重复的表单请求,提交非重复请求至服务器处理;监听服务器对表单请求的处理过程,基于请求时间生成新的加密密钥并返回浏览器;新提交的表单请求提交时,将携带新的密钥访问服务器。本发明在提交任一种表单请求时都能获取当前服务端返回的加密密钥,执行统一的密钥校验及防重判断流程,实现两种表单请求提交的统一防重处理,提高了防重表的效率,增强了防重过程的安全性。程的安全性。程的安全性。


技术研发人员:袁霸 孟伸
受保护的技术使用者:焦点科技股份有限公司
技术研发日:2023.07.26
技术公布日:2023/9/22
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐