CN113114513B - 接口防重处理方法、装置、设备及存储介质 - Google Patents
接口防重处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113114513B CN113114513B CN202110482328.1A CN202110482328A CN113114513B CN 113114513 B CN113114513 B CN 113114513B CN 202110482328 A CN202110482328 A CN 202110482328A CN 113114513 B CN113114513 B CN 113114513B
- Authority
- CN
- China
- Prior art keywords
- interface
- request
- request interface
- replay
- reprocessing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及网络安全领域,公开了一种接口防重处理方法、装置、设备及存储介质。该方法包括:获取接口防重请求;根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。本发明通过对接口进行分布式加锁,提高了接口防重处理的效率。
Description
技术领域
本发明涉及网络安全领域,尤其涉及一种接口防重处理方法、装置、设备及存储介质。
背景技术
随着计算机技术的高速发展,利用计算机办公越来越普遍,同一个表单、同样的数据,如果进行多次提交,会给服务器造成不必要的压力,在平时项目中可能会出现由于用户误操作多次点击提交按钮,或由于网速等原因造成页面卡顿,用户重复刷新提交页面,会导致数据的重复提交,造成数据重复,增加服务器负载,严重情况下甚至会造成服务器宕机,因此有效防止重复提交时非常有必要的。
接口防重是后端系统的一个非常重要的功能,几乎所有后端系统都需要对请求的接口做防重,无论是给前端客户端调用的接口,还是作为服务方给第三方系统调用的接口,都需要考虑接口的防重。但是,目前接口防重处理的技术需要修改系统的底层框架代码,对于系统的侵入性较大,从而导致接口防重处理的效率低。
发明内容
本发明的主要目的在于解决目前接口防重处理的效率低的技术问题。
本发明第一方面提供了一种接口防重处理方法,所述接口防重处理方法包括:
获取接口防重请求;
根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。
可选的,在本发明第一方面的第一种实现方式中,所述根据所述接口防重请求,确定对应的请求接口包括:
调用预置拦截器对所述接口防重请求进行拦截;
对拦截到的接口防重请求进行地址解析,得到请求地址;
对所述请求地址进行实际接口地址匹配,得到实际接口地址;
对所述实际接口地址进行接口查询,得到所述接口防重请求对应的请求接口。
可选的,在本发明第一方面的第二种实现方式中,所述判断是否对所述请求接口进行防重处理包括:
配置所述请求接口的参数数据,并判断是否打开预置总开关;
若打开所述总开关,则查询所述请求接口是否在预置数据库中有配置记录,若所述请求接口在所述数据库有配置记录,则对所述请求接口进行防重处理;
若关闭所述总开关,则不对所述请求接口进行防重处理。
可选的,在本发明第一方面的第三种实现方式中,所述若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值包括:
若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据,以及查询所述请求接口的URL;
提取所述配置参数数据中的多个输入参数,并将所述各输入参数拼接为字符串;
对所述字符串进行信息长度填充,得到标准字符串;
对所述标准字符串进行标准幻数分组,得到多个组合字符串;
对所述各组合字符串进行多轮循环运算,得到所述请求接口对应的MD5值。
可选的,在本发明第一方面的第四种实现方式中,所述通过所述分布式锁对所述请求接口进行加锁包括:
通过所述分布式锁设置所述请求接口的分布式缓存,得到分布式缓存;
对所述分布式缓存进行参数更新,并根据参数更新后的分布式缓存,对所述请求接口进行加锁。
可选的,在本发明第一方面的第五种实现方式中,所述设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重包括:
获取所述请求接口加锁后的缓存数据;
监听所述缓存数据中的失效数据,得到失效数据,并对所述失效数据进行移除,得到标准缓存数据;
设置所述标准缓存数据的加锁时长,并在所述加锁时长内对所述请求接口进行防重。
可选的,在本发明第一方面的第六种实现方式中,在所述设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重之后,还包括:
当到达加锁结束时间时,释放所述请求接口,并删除所述接口防重请求。
本发明第二方面提供了一种接口防重处理装置,所述接口防重处理装置包括:
获取模块,用于获取接口防重请求;
判断模块,用于根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
加密运算模块,用于若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
拼接模块,用于拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
防重模块,用于通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。
可选的,在本发明第二方面的第一种实现方式中,所述判断模块还包括:
接口查询单元,用于调用预置拦截器对所述接口防重请求进行拦截;对拦截到的接口防重请求进行地址解析,得到请求地址;对所述请求地址进行实际接口地址匹配,得到实际接口地址;对所述实际接口地址进行接口查询,得到所述接口防重请求对应的请求接口。
可选的,在本发明第二方面的第二种实现方式中,所述判断模块还包括:
防重判断单元,用于配置所述请求接口的参数数据,并判断是否打开预置总开关;若打开所述总开关,则查询所述请求接口是否在预置数据库中有配置记录,若所述请求接口在所述数据库有配置记录,则对所述请求接口进行防重处理;若关闭所述总开关,则不对所述请求接口进行防重处理。
可选的,在本发明第二方面的第三种实现方式中,所述加密运算模块具体用于:
若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据,以及查询所述请求接口的URL;
提取所述配置参数数据中的多个输入参数,并将所述各输入参数拼接为字符串;
对所述字符串进行信息长度填充,得到标准字符串;
对所述标准字符串进行标准幻数分组,得到多个组合字符串;
对所述各组合字符串进行多轮循环运算,得到所述请求接口对应的MD5值。
可选的,在本发明第二方面的第四种实现方式中,所述防重模块还包括:
接口加锁单元,用于通过所述分布式锁设置所述请求接口的分布式缓存,得到分布式缓存;对所述分布式缓存进行参数更新,并根据参数更新后的分布式缓存,对所述请求接口进行加锁。
可选的,在本发明第二方面的第五种实现方式中,所述防重模块还包括:
时长设置单元,用于获取所述请求接口加锁后的缓存数据;监听所述缓存数据中的失效数据,得到失效数据,并对所述失效数据进行移除,得到标准缓存数据;设置所述标准缓存数据的加锁时长,并在所述加锁时长内对所述请求接口进行防重。
可选的,在本发明第二方面的第六种实现方式中,所述接口防重处理装置还包括:
接口释放模块,用于当到达加锁结束时间时,释放所述请求接口,并删除所述接口防重请求。
本发明第三方面提供了一种接口防重处理设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述接口防重处理设备执行上述的接口防重处理方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的接口防重处理方法。
本发明提供的技术方案中,在接收到接口防重请求后,根据请求确定其对应的请求接口,并爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。针对特定请求的防重校验,降低了对已有系统的侵入性,实现不同环境根据不同需求进行防重接口的配置。本发明通过对接口进行分布式加锁,提高了接口防重处理的效率。
附图说明
图1为本发明实施例中接口防重处理方法的第一个实施例示意图;
图2为本发明实施例中接口防重处理方法的第二个实施例示意图;
图3为本发明实施例中接口防重处理方法的第三个实施例示意图;
图4为本发明实施例中接口防重处理装置的第一个实施例示意图;
图5为本发明实施例中接口防重处理装置第二个实施例示意图;
图6为本发明实施例中接口防重处理设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种接口防重处理方法、装置、设备及存储介质。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中接口防重处理方法的第一个实施例包括:
101、获取接口防重请求;
可以理解的是,本发明的执行主体可以为接口防重处理装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。
本实施例中,接口防重请求可以来自客户端,也可以来自多个系统。
102、根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
本实施例中,在接收到接口防重请求之后,确定当前请求对应的请求接口,请求接口与请求是一一对应的关系。预先编写拦截器,用于对用户请求进行拦截,在接收到用户请求后可以采用拦截器对用户请求进行拦截,并对接口防重请求进行解析,以此来确定接口防重请求对应的请求接口。
本实施例中,针对需要做防重处理的接口,通过动态配置的方式对不同的接口进行不同的参数配置,以达到针对每个接口判断是否需要做防重处理。通过设置总开关的方式对接口防重功能实现控制是否使用,总开关如果打开则继续查询,数据中是否有配置记录,若有记录,则确定对所述请求接口进行防重处理。
可选的,在一实施例中,所述根据所述接口防重请求,确定对应的请求接口包括:
调用预置拦截器对所述接口防重请求进行拦截;
对拦截到的接口防重请求进行地址解析,得到请求地址;
对所述请求地址进行实际接口地址匹配,得到实际接口地址;
对所述实际接口地址进行接口查询,得到所述接口防重请求对应的请求接口。
本实施例中,拦截器为预先编写的Spring拦截器,拦截器主要完成对防重接口请求参数、将页面表单参数赋给值栈中相应属性、执行功能检验、程序异常调试等工作。在接收到接口防重处理请求后可利用Spring拦截器对接口防重处理请求进行拦截,并对接口防重处理请求进行解析,以确定接口防重处理请求对应的请求接口。
本实施例中,配置文件首先需要新建一个conf文件夹,在文件夹下面新建一个配置文件,在文件中,要设置一个区域、key、根据它的section和option取对应的值,用python代码封装读取配置文件的类,调用读取配置文件的封装类,传入file路径,根据section和option取对应的值,从配置文件中可以直接读取到实际接口的地址,接口防重处理请求的地址和实际接口的地址进行匹配,得到防重接口请求对应的请求接口。
可选的,在一实施例中,所述判断是否对所述请求接口进行防重处理包括:
配置所述请求接口的参数数据,并判断是否打开预置总开关;
若打开所述总开关,则查询所述请求接口是否在预置数据库中有配置记录,若所述请求接口在所述数据库有配置记录,则对所述请求接口进行防重处理;
若关闭所述总开关,则不对所述请求接口进行防重处理。
本实施例中,对所述请求接口进行参数替换,例如:请求接口的原始参数为101,530,427,对参数中的530进行替换后,得到101,224,427。利用Java注解技术为需要进行防重校验的请求对应总开关添加注解,从而可以通过判断总开关是否预先添加注解,如果是,则确定当前请求接口请求需要进行接口防重处理。
103、若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
本实施例中,所述请求接口的URL可以通过接口直接获取得到,爬取所述请求接口的配置数据,如果有则获取对应接口的配置数据,对接口所有入参做MD5得到入参MD5值。例如,对接口所有入参做MD5得到入参MD5值为:
MD5(tanajiya.tar.gz)=0ca175b9c0f726a831d895e269332461。
104、拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
本实施例中,分布式锁采用Redis分布式锁,按字典序使用URL键值对的格式,拼接MD5值加密签名得到Key值。
例如:MD5值为37d0b4942f074bf1a7289a16ba24d1b6;
URL为https://www.XXXX.com;
拼接得到的Key值为:
37d0b4942f074bf1a7289a16ba24d1b6https://www.XXXX.com。
本实施例中,用接口去查询配置信息,如果查不到配置信息说明这个接口不需要做防重,直接放行;如果能查到配置信息,则将接口URL和请求参数拼接做MD5加密,获得MD5加密值后,使用这个MD5加密值做为Key通过Redis分布式锁对该接口请求进行加锁,这样在再次接收到同样接口同样参数的重复请求时,后面的请求就获取不到这个锁,得到加锁接口。
105、通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。
本实施例中,Redis对请求接口进行加锁,并设置缓存时间,Redis缓存时间的Key一直存在,例如缓存,验证码等数据,因此,在一定时间内自动的被销毁。Redis提供了一些命令,能够让我们对Key设置过期时间,并且让Key过期之后被自动删除。利用Spring拦截器对请求进行统一处理,降低工具的侵入性,使工具的接入与业务脱耦,利用Redis充当存储介质,对于历史存在系统、或者新开发的系统,可以直接通过该后端组件快速实现特定场景下的防重提交,接入成本小,且整个防重过程不需要依赖前端开发介入,仅仅依赖了成熟的Redis以及Spring技术,扩展性强。
可选的,在一实施例中,在所述设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重之后,还包括:
当到达加锁结束时间时,释放所述请求接口,并删除所述接口防重请求。
本实施例中,对请求记录设定一个有效时间,可利用服务器获取用户设定的有效时间,若监测到在加锁结束时间后请求记录仍存储在预设缓存空间中,则自动对请求记录进行删除,防止因程序异常等原因导致预设存储空间中记录长期存储,避免对后续接口防重造成影响。获取Key的缓存时间,如果Key存在过期时间,返回剩余生存时间;如果Key是永久的,返回-1;如果Key不存在或者已过期,返回-2。
本发明实施例中,在接收到接口防重请求后,根据请求确定其对应的请求接口,并爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重。针对特定请求的防重校验,降低了对已有系统的侵入性,实现不同环境根据不同需求进行防重接口的配置。本发明通过对接口进行分布式加锁,提高了接口防重处理的效率。
请参阅图2,本发明实施例中接口防重处理方法的第二个实施例包括:
201、获取接口防重请求;
202、根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
203、若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据,以及查询所述请求接口的URL;
204、提取所述配置参数数据中的多个输入参数,并将所述各输入参数拼接为字符串;
205、对所述字符串进行信息长度填充,得到标准字符串;
206、对所述标准字符串进行标准幻数分组,得到多个组合字符串;
207、对所述各组合字符串进行多轮循环运算,得到所述请求接口对应的MD5值;
本实施例中,对所述字符串进行信息长度填充,得到标准字符串,例如:输入信息的长度(bit)对512求余的结果不等于448,就需要填充使得对512求余的结果等于448,填充的方法是填充一个1和n个0。填充完后,信息的长度就为N*512+448(bit),再用64位来存储填充前信息长度,这64位加在第一步结果的后面,这样信息长度就变为N*512+448+64=(N+1)*512位。创建4个32位的链接变量,分别记为A链接变量、B链接变量、C链接变量、D链接变量;其中,A链接变量=0x01234567,B链接变量=0x89abcdef,C链接变量=0xfedcba98,D链接变量=0x76543210;将A链接变量、B链接变量、C链接变量、D链接变量为4个初始变量经过MD5加密算法的四轮主循环运算,得到与A链接变量对应的第一链接变量、与B链接变量对应的第二链接变量、与C链接变量对应的第三链接变量、与D链接变量对应的第四链接变量;其中,MD5加密算法的四轮主循环运算中每一轮主循环算法的循环次数与所述分组总数相同;按照第四链接变量-第一链接变量的顺序依次级联,得到128位的MD5值,运算过程为:1、把信息分以512位为一分组进行处理。2、每一个分组进行4轮变换,以上面所说4个标准的幻数为起始变量进行计算,重新输出4个变量。3、以这4个变量再进行下一分组的运算,如果已经是最后一个分组,则这4个变量为最后的结果,即MD5值。
208、拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
209、通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。
本发明实施例中,MD5是对请求接口产生信息摘要,以防止被篡改,它的作用就在于确保获得的接口具有高度的安全性和一致性,通过对请求接口进行MD5加密得到MD5值,并将MD5值写入请求接口的URL,得到Key值,该Key值为空值决定了同样的接口防重处理请求是否会被重复注入到浏览器页面,能有效避免接口请求重复注入导致的逻辑混乱。
请参阅图3,本发明实施例中接口防重处理方法的第三个实施例包括:
301、获取接口防重请求;
302、根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
303、若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
304、拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
305、通过所述分布式锁设置所述请求接口的分布式缓存,得到分布式缓存;
306、对所述分布式缓存进行参数更新,并根据参数更新后的分布式缓存,对所述请求接口进行加锁;
本实施例中,Redis缓存中的缓存过期了,但是还需要用到缓存数据,然而如果设置缓存为永不过期的话,数据会越堆越多,严重占用空间。所以需要对过期缓存进行监听。在缓存过期的时候进行处理。如果还需要用到就重新加载缓存,用不到了可以不用处理。解决了有用缓存过期的尴尬,又不会造成数据堆积,其中,失效数据,例如:订单过期自动删除,订单几天后自动好评,这些常用操作可以通过定时任务,数据库轮询做,但是订单量大的情况可能会对数据库产生大的压力。
307、获取所述请求接口加锁后的缓存数据;
308、监听所述缓存数据中的失效数据,得到失效数据,并对所述失效数据进行移除,得到标准缓存数据;
309、设置所述标准缓存数据的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。
本实施例中,移除掉缓存数据中的失效数据,得到标准缓存数据,对标准缓存数据设定一个有效时间,可利用服务器获取用户设定的有效时间,对所述加锁接口进行防重。
本发明实施例中,在接收到接口防重请求后,根据当前请求确定其对应的请求接口,并基于所述请求接口确定是否需要对当前用户请求进行防重校验,进而根据预设缓存空间中是否存在请求记录判断当前用户请求是否重复,实现业务代码和接口防重功能代码解耦,根据不同环境可单独配置防重开关和防重接口,实现不同环境根据不同需求进行防重接口的配置。本发明通过动态化配置接口,提高了接口防重处理的效率。
上面对本发明实施例中接口防重处理方法进行了描述,下面对本发明实施例中接口防重处理装置进行描述,请参阅图4,本发明实施例中接口防重处理装置第一个实施例包括:
获取模块401,用于获取接口防重请求;
判断模块402,用于根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
加密运算模块403,用于若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
拼接模块404,用于拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
防重模块405,用于通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理。
请参阅图5,本发明实施例中接口防重处理装置第二个实施例包括:
获取模块401,用于获取接口防重请求;
判断模块402,用于根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
加密运算模块403,用于若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
拼接模块404,用于拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
防重模块405,用于通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重。
可选的,在一实施例中,所述判断模块402还包括:
接口查询单元4021,用于调用预置拦截器对所述接口防重请求进行拦截;对拦截到的接口防重请求进行地址解析,得到请求地址;对所述请求地址进行实际接口地址匹配,得到实际接口地址;对所述实际接口地址进行接口查询,得到所述接口防重请求对应的请求接口。
可选的,在一实施例中,所述判断模块402还包括:
防重判断单元4022,用于配置所述请求接口的参数数据,并判断是否打开预置总开关;若打开所述总开关,则查询所述请求接口是否在预置数据库中有配置记录,若所述请求接口在所述数据库有配置记录,则对所述请求接口进行防重处理;若关闭所述总开关,则不对所述请求接口进行防重处理。
可选的,在一实施例中,所述加密运算模块403具体用于:
若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据,以及查询所述请求接口的URL;
提取所述配置参数数据中的多个输入参数,并将所述各输入参数拼接为字符串;
对所述字符串进行信息长度填充,得到标准字符串;
对所述标准字符串进行标准幻数分组,得到多个组合字符串;
对所述各组合字符串进行多轮循环运算,得到所述请求接口对应的MD5值。
可选的,在一实施例中,所述防重模块405还包括:
接口加锁单元4051,用于通过所述分布式锁设置所述请求接口的分布式缓存,得到分布式缓存;对所述分布式缓存进行参数更新,并根据参数更新后的分布式缓存,对所述请求接口进行加锁。
可选的,在一实施例中,所述防重模块405还包括:
时长设置单元4052,用于获取所述请求接口加锁后的缓存数据;监听所述缓存数据中的失效数据,得到失效数据,并对所述失效数据进行移除,得到标准缓存数据;设置所述标准缓存数据的加锁时长,并在所述加锁时长内对所述请求接口进行防重。
可选的,在一实施例中,所述接口防重处理装置还包括:
接口释放模块406,用于当到达加锁结束时间时,释放所述请求接口,并删除所述接口防重请求。
本发明实施例中,在接收到接口防重请求后,根据请求确定其对应的请求接口,并爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重。针对特定请求的防重校验,降低了对已有系统的侵入性,实现不同环境根据不同需求进行防重接口的配置。本发明通过对接口进行分布式加锁,提高了接口防重处理的效率。
上面图4和图5从模块化功能实体的角度对本发明实施例中的接口防重处理装置进行详细描述,下面从硬件处理的角度对本发明实施例中接口防重处理设备进行详细描述。
图6是本发明实施例提供的一种接口防重处理设备的结构示意图,该接口防重处理设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对接口防重处理设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在接口防重处理设备500上执行存储介质530中的一系列指令操作。
接口防重处理设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图6示出的接口防重处理设备结构并不构成对接口防重处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种接口防重处理设备,所述接口防重处理设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述接口防重处理方法的步骤。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述接口防重处理方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种接口防重处理方法,其特征在于,所述接口防重处理方法包括:
获取接口防重请求;
根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理;
其中,所述若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值包括:
若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据,以及查询所述请求接口的URL;
提取所述配置参数数据中的多个输入参数,并将所述各输入参数拼接为字符串;
对所述字符串进行信息长度填充,得到标准字符串;
对所述标准字符串进行标准幻数分组,得到多个组合字符串;
对所述各组合字符串进行多轮循环运算,得到所述请求接口对应的MD5值。
2.根据权利要求1所述的接口防重处理方法,其特征在于,所述根据所述接口防重请求,确定对应的请求接口包括:
调用预置拦截器对所述接口防重请求进行拦截;
对拦截到的接口防重请求进行地址解析,得到请求地址;
对所述请求地址进行实际接口地址匹配,得到实际接口地址;
对所述实际接口地址进行接口查询,得到所述接口防重请求对应的请求接口。
3.根据权利要求2所述的接口防重处理方法,其特征在于,所述判断是否对所述请求接口进行防重处理包括:
配置所述请求接口的参数数据,并判断是否打开预置总开关;
若打开所述总开关,则查询所述请求接口是否在预置数据库中有配置记录,若所述请求接口在所述数据库有配置记录,则对所述请求接口进行防重处理;
若关闭所述总开关,则不对所述请求接口进行防重处理。
4.根据权利要求1所述的接口防重处理方法,其特征在于,所述通过所述分布式锁对所述请求接口进行加锁包括:
通过所述分布式锁设置所述请求接口的分布式缓存,得到分布式缓存;
对所述分布式缓存进行参数更新,并根据参数更新后的分布式缓存,对所述请求接口进行加锁。
5.根据权利要求4所述的接口防重处理方法,其特征在于,所述设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重包括:
获取所述请求接口加锁后的缓存数据;
监听所述缓存数据中的失效数据,得到失效数据,并对所述失效数据进行移除,得到标准缓存数据;
设置所述标准缓存数据的加锁时长,并在所述加锁时长内对所述请求接口进行防重。
6.根据权利要求5所述的接口防重处理方法,其特征在于,在所述设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重之后,还包括:
当到达加锁结束时间时,释放所述请求接口,并删除所述接口防重请求。
7.一种接口防重处理装置,其特征在于,所述接口防重处理装置包括:
获取模块,用于获取接口防重请求;
判断模块,用于根据所述接口防重请求,确定对应的请求接口,并判断是否对所述请求接口进行防重处理;
加密运算模块,用于若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据和所述请求接口的URL,并对所述配置参数数据进行加密运算,得到所述请求接口对应的MD5值;
拼接模块,用于拼接所述MD5值和所述请求接口的URL,得到Key值,并以所述Key值为预置分布式锁的标识;
防重模块,用于通过所述分布式锁对所述请求接口进行加锁,并设置所述请求接口的加锁时长,并在所述加锁时长内对所述请求接口进行防重处理;
其中,所述加密运算模块具体用于:
若对所述请求接口进行防重处理,则爬取所述请求接口的配置参数数据,以及查询所述请求接口的URL;
提取所述配置参数数据中的多个输入参数,并将所述各输入参数拼接为字符串;
对所述字符串进行信息长度填充,得到标准字符串;
对所述标准字符串进行标准幻数分组,得到多个组合字符串;
对所述各组合字符串进行多轮循环运算,得到所述请求接口对应的MD5值。
8.一种接口防重处理设备,其特征在于,所述接口防重处理设备包括:存储器和至少一个处理器,所述存储器中存储有指令;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述接口防重处理设备执行如权利要求1-6中任一项所述的接口防重处理方法。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-6中任一项所述的接口防重处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110482328.1A CN113114513B (zh) | 2021-04-30 | 2021-04-30 | 接口防重处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110482328.1A CN113114513B (zh) | 2021-04-30 | 2021-04-30 | 接口防重处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113114513A CN113114513A (zh) | 2021-07-13 |
CN113114513B true CN113114513B (zh) | 2022-11-08 |
Family
ID=76720707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110482328.1A Active CN113114513B (zh) | 2021-04-30 | 2021-04-30 | 接口防重处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113114513B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325196A (zh) * | 2018-07-27 | 2019-02-12 | 四川长虹电器股份有限公司 | 基于redis防止接口重复请求的方法 |
CN110502527A (zh) * | 2019-08-26 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 后台请求防重发的方法、装置、计算机设备及存储介质 |
CN110661863A (zh) * | 2019-09-20 | 2020-01-07 | 政采云有限公司 | 一种请求处理方法、装置及电子设备和存储介质 |
CN111708771A (zh) * | 2020-06-17 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 数据查重方法、装置、设备及计算机存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595523B2 (en) * | 2010-02-12 | 2013-11-26 | Phison Electronics Corp. | Data writing method for non-volatile memory, and controller and storage system using the same |
-
2021
- 2021-04-30 CN CN202110482328.1A patent/CN113114513B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325196A (zh) * | 2018-07-27 | 2019-02-12 | 四川长虹电器股份有限公司 | 基于redis防止接口重复请求的方法 |
CN110502527A (zh) * | 2019-08-26 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 后台请求防重发的方法、装置、计算机设备及存储介质 |
CN110661863A (zh) * | 2019-09-20 | 2020-01-07 | 政采云有限公司 | 一种请求处理方法、装置及电子设备和存储介质 |
CN111708771A (zh) * | 2020-06-17 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 数据查重方法、装置、设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113114513A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102419574B1 (ko) | 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법 | |
US6330588B1 (en) | Verification of software agents and agent activities | |
JP4881348B2 (ja) | 記憶されているデータに対する分散的ウィルススキャン | |
DE112012002624B4 (de) | Regex-Kompilierer | |
DE60113844T2 (de) | Verfahren zur feststellung böswilligen rechnerkodes | |
KR102424014B1 (ko) | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 | |
CN113114513B (zh) | 接口防重处理方法、装置、设备及存储介质 | |
CN111984989B (zh) | 一种自身校验发布和访问url的方法、装置、系统和介质 | |
Matos et al. | Rectify: Black-box intrusion recovery in paas clouds | |
CN112199441A (zh) | 基于大数据平台的数据同步处理方法、装置、设备及介质 | |
CN109785537B (zh) | 一种atm机的安全防护方法及装置 | |
CN109218011B (zh) | 一种基于md5的移动终端多媒体资源验证方法 | |
CN109933351A (zh) | 一种修复和升级Linux系统的方法与装置 | |
Hwang et al. | Proof of violation for trust and accountability of cloud database systems | |
KR102420884B1 (ko) | 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 | |
CN107085681B (zh) | 鲁棒的计算设备标识框架 | |
CN112084522B (zh) | 数据存储方法、装置、设备及存储介质 | |
Zhang et al. | LEDGERBENCH: A Framework for Benchmarking Ledger Databases. | |
Hwang et al. | Fulfilling mutual nonrepudiation for cloud storage | |
US11132335B2 (en) | Systems and methods for file fingerprinting | |
CN100555237C (zh) | 用于检测和防止回放攻击的方法和系统 | |
EP3798873B1 (de) | Verfahren zum schützen einer computer-implementierten anwendung vor manipulation | |
CN113468217A (zh) | 数据查询管理方法、装置、计算机设备及可读存储介质 | |
CN111767577A (zh) | Sql注入风险的检测方法、装置、电子装置和存储介质 | |
Zheng et al. | Compact, tamper-resistant archival of fine-grained provenance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |