【技术实现步骤摘要】
一种服务端API调用方法、装置及存储介质
本专利技术涉及互联网API安全
,尤其是涉及一种服务端API调用方法、装置及存储介质。
技术介绍
Kong是一种在客户端和(微)服务间转发API通信的API网关,主要通过插件来扩展功能,Kong有两个主要组件:1、KongServer——基于nginx的服务器,用来接收API请求。2、ApacheCassandra——用来存储操作数据。在实际应用中,用户可通过多个KongServer机器对Kong服务进行水平扩展,并通过前置的负载均衡器向这些机器分发请求,且两个Cassandra节点就足以支撑绝大多数情况,除非网络非常拥挤,可以考虑适当增加更多节点。对于开源社区来说,Kong中最诱人的一个特性是可以通过插件扩展已有功能,这些插件在API请求响应循环的生命周期中被执行,插件使用Lua编写,而且Kong还可以具有以下几个基础功能:Http基本认证、密钥认证、CORS、TCP、UDP、文件日志、API请求限流、请求转发以及nginx监控。为保证API调用的安全性,目前通常借助Kong的HAMC技术给消息进行签名处理,以防止消息在传递的过程中被人修改,具体的处理方式是对消息进行一个MAC算法,得到一个摘要字串,然后,接收方得到的消息后,进行同样的计算,最后通过比较MAC字符串是否一致,以保证数据的安全性、防止重放攻击。然而在实际应用中,如果攻击者获取到客户端请求信息,就能够在一定时间内进行接口重复调用攻击,导致API调用过程中存在安全隐患。 >
技术实现思路
本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种服务端API调用方法、装置及存储介质,能够防止攻击者的恶意重复操作,且给数据提供安全保证。本专利技术的目的可以通过以下技术方案来实现:一种服务端API调用方法,包括以下步骤:S1、客户端发送API访问请求;S2、服务端接收API访问请求,并对API访问请求进行解析,得到对应的解析数据;S3、根据解析数据,判断是否存在重复调用事件,若判断为是,则执行步骤S4,否则执行步骤S5;S4、终止API调用进程,并输出相应警示信息给客户端;S5、基于配置文件中的过期时间,设置API调用信息,以调用服务端API,并将调用结果返回至客户端。进一步地,所述步骤S1的具体过程为:客户端发送API访问请求,并在请求头中设置一个唯一值。进一步地,所述步骤S2具体包括以下步骤:S21、服务端接收API访问请求;S22、对API访问请求进行解析,以获取请求头中的唯一值,即为解析数据。进一步地,所述步骤S3具体是通过校验幂等性,以判断是否存在重复调用事件。进一步地,所述步骤S3具体包括以下步骤:S31、采用lua脚本的方式,判断redis事务中是否存在唯一值;S32、若判断为是,则表明存在重复调用事件,之后执行步骤S4;S33、若判断为否,则表明不存在重复调用事件,之后执行步骤S5。进一步地,所述步骤S4中警示信息具体为“请勿重复提交”。进一步地,所述步骤S5具体包括以下步骤:S51、获取配置文件中的过期时间;S52、根据过期时间,在redis事务中设置对应的API调用信息;S53、根据设置的API调用信息,从服务端调用API,并将调用结果返回至客户端。进一步地,所述API调用信息包括唯一值及其存活时间。一种服务端API调用装置,包括:接收模块,用于接收客户端发送的API访问请求;解析模块,用于解析接收的API访问请求,获取解析数据;处理模块,用于根据解析数据判断是否存在重复调用事件,以及根据配置文件中的过期时间设置对应的API调用信息;调用模块,用于根据API调用信息,以从服务端调用相应的API。一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一项所述的服务端API调用方法。与现有技术相比,本专利技术通过在客户端发送的API访问请求头中设置唯一值,并采用redis事务结合lua脚本的方式,通过判断redis事务中是否存在该唯一值,以实现对API的幂等性校验,即使攻击者获取到客户端的请求信息,也无法进行接口重复调用攻击,即能够防止攻击者的恶意重复操作、避免接口被重复调用攻击,从而有效保证数据的安全性。附图说明图1为本专利技术的方法流程示意图;图2为实施例中的应用流程示意图;图3为本专利技术API调用装置的结构示意图;图中标记说明:201、接收模块,202、解析模块,203、处理模块,204、调用模块。具体实施方式下面结合附图和具体实施例对本专利技术进行详细说明。实施例如图1所示,一种服务端API调用方法,包括以下步骤:S1、客户端发送API访问请求,该API访问请求头中设置有一个唯一值;S2、服务端接收API访问请求,并对API访问请求进行解析,得到对应的解析数据,该解析数据即为API访问请求头中的唯一值;S3、根据解析数据,通过检验幂等性,以判断是否存在重复调用事件,若判断为是,则执行步骤S4,否则执行步骤S5,具体的:采用lua脚本的方式,判断redis事务中是否存在唯一值;若判断为是,则表明存在重复调用事件,之后执行步骤S4;若判断为否,则表明不存在重复调用事件,之后执行步骤S5;S4、终止API调用进程,并输出相应警示信息给客户端,本实施例中,警示信息被设置为“请勿重复提交”;S5、基于配置文件中的过期时间,在redis事务中设置API调用信息,以调用服务端API,并将调用结果返回至客户端,其中,API调用信息包括唯一值及其存活时间。本实施例应用上述方法,其具体应用流程如图2所示:客户端在请求头传递一个唯一值key;服务端获取请求头中的唯一值key,然后使用lua来校验redis事务的幂等性:lua脚本中,判断redis事务中是否存在该唯一值key,若存在,则返回请勿重复提交提示给客户端;若不存在,则获取配置文件中的过期时间,以在redis事务中设置该唯一值key及存活时间,之后调用服务端API,并肩调用结果返回至客户端。本专利技术的实施例还提供一种服务端API调用装置,包括依次连接的接收模块201、解析模块202、处理模块203和调用模块204,接收模块201的输入端与客户端连接,调用模块204的输出端与客户端连接,具体的,接收模块201,用于接收客户端发送的API访问请求;解析模块202,用于解析接收的API访问请求,获取解析数据;处理模块203,用于根据解析数据判断是否存在重复调用事件,以及根据配置文件中的过期时间设置对应的API调用信息;调用模块204,用于根据API调用信息,以从服务端调用相应的API。本专利技术的另一实本文档来自技高网...
【技术保护点】
1.一种服务端API调用方法,其特征在于,包括以下步骤:/nS1、客户端发送API访问请求;/nS2、服务端接收API访问请求,并对API访问请求进行解析,得到对应的解析数据;/nS3、根据解析数据,判断是否存在重复调用事件,若判断为是,则执行步骤S4,否则执行步骤S5;/nS4、终止API调用进程,并输出相应警示信息给客户端;/nS5、基于配置文件中的过期时间,设置API调用信息,以调用服务端API,并将调用结果返回至客户端。/n
【技术特征摘要】
1.一种服务端API调用方法,其特征在于,包括以下步骤:
S1、客户端发送API访问请求;
S2、服务端接收API访问请求,并对API访问请求进行解析,得到对应的解析数据;
S3、根据解析数据,判断是否存在重复调用事件,若判断为是,则执行步骤S4,否则执行步骤S5;
S4、终止API调用进程,并输出相应警示信息给客户端;
S5、基于配置文件中的过期时间,设置API调用信息,以调用服务端API,并将调用结果返回至客户端。
2.根据权利要求1所述的一种服务端API调用方法,其特征在于,所述步骤S1的具体过程为:客户端发送API访问请求,并在请求头中设置一个唯一值。
3.根据权利要求2所述的一种服务端API调用方法,其特征在于,所述步骤S2具体包括以下步骤:
S21、服务端接收API访问请求;
S22、对API访问请求进行解析,以获取请求头中的唯一值,即为解析数据。
4.根据权利要求3所述的一种服务端API调用方法,其特征在于,所述步骤S3具体是通过校验幂等性,以判断是否存在重复调用事件。
5.根据权利要求4所述的一种服务端API调用方法,其特征在于,所述步骤S3具体包括以下步骤:
S31、采用lua脚本的方式,判断redis事务中是否存在唯一值;
S32、若判断为是,则表明存在重复...
【专利技术属性】
技术研发人员:李虎,曾毅峰,刘佳利,韩伟伟,
申请(专利权)人:上海浦东发展银行股份有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。