接口安全防护的处理方法及装置与流程

文档序号:33386084发布日期:2023-03-08 08:16阅读:40来源:国知局
接口安全防护的处理方法及装置与流程

1.本发明涉及网络安全通讯技术领域,更具体地说,涉及一种接口安全防护的处理方法及装置。


背景技术:

2.当前互联网上大量的系统是基于前后端分离的模式,前端(暨客户端)通过后端(暨服务端)提供的webapi(其中,web即全球广域网;api全称为application program interface,即应用程序接口)接口使用后端提供的相关服务。
3.由于webapi是直接向外部公开暴露,随之而来的,非法人员对webapi接口的攻击越来越频繁,并威胁到前后端交互的数据安全,导致信息泄露和系统崩溃。


技术实现要素:

4.有鉴于此,为解决上述问题,本发明提供一种接口安全防护的处理方法及装置,技术方案如下:
5.一种接口安全防护的处理方法,所述方法应用于客户端,所述方法包括:
6.在处于登录状态的情况下,获取服务访问令牌和非对称加密公钥,所述非对称加密公钥是服务端预先为所述客户端生成的、且相应的非对称加密私钥由所述服务端保存;
7.基于所述服务访问令牌和所述非对称加密公钥组装针对目标业务的请求报文,并调用所述目标业务对应的目标webapi接口向所述服务端发送所述请求报文;
8.通过所述目标webapi接口接收所述服务端返回的应答报文,并对所述应答报文进行完整性验证,所述应答报文中至少包含所述服务端基于所述非对称加密私钥对所述请求报文进行webapi接口安全防护校验的校验结果。
9.优选的,所述基于所述服务访问令牌和所述非对称加密公钥组装针对目标业务的请求报文,包括:
10.生成与所述目标业务对应的对称加密秘钥和随机盐值,并使用所述非对称加密公钥对所述对称加密秘钥和所述随机盐值进行非对称加密,以生成对称加密秘钥字段和随机盐值字段;
11.基于当前系统utc时间获取时间戳,并使用所述对称加密秘钥和所述随机盐值对所述时间戳进行加密,以生成时间戳字段;
12.对所述时间戳字段、所述随机盐值和所述目标业务对应的业务请求数据做消息摘要,以生成第一数据签名字段;
13.使用所述对称加密秘钥和所述随机盐值对所述业务请求数据进行加密,并将加密后的业务请求数据赋值给第一数据字段;
14.使用ajax方式根据所述服务访问令牌设置请求报文头,并对所述请求报文头、所述对称加密秘钥字段、所述随机盐值字段、所述时间戳字段、所述第一数据签名字段和所述第一数据字段进行组装得到所述请求报文。
15.优选的,所述应答报文中包含返回码字段、描述信息字段、第二数据字段和第二数据签名字段;
16.所述对所述应答报文进行完整性验证,包括:
17.根据所述返回码字段确定所述校验结果的类型,所述校验结果的类型包括校验通过和校验未通过;
18.若所述校验结果的类型为校验未通过,则根据所述描述信息字段确定校验未通过原因;若所述校验结果的类型为校验通过,则确定所述描述信息字段为空值,并使用所述对称加密秘钥和所述随机盐值对所述第二数据字段进行解密得到业务返回数据,所述业务返回数据是所述服务端基于所述业务请求数据进行业务处理得到的;
19.对所述返回码字段、所述描述信息字段、所述业务返回数据做消息摘要,以生成相应的数据签名字段;根据消息摘要所得到的数据签名字段对所述第二数据签名字段进行有效性校验;
20.若所述第二数据签名字段的有效性校验通过,确定完整性验证结果为验证通过;
21.若所述第二数据签名字段的有效性校验未通过,确定完整性验证结果为验证未通过。
22.一种接口安全防护的处理装置,所述装置包括:
23.请求组装模块,用于在处于登录状态的情况下,获取服务访问令牌和非对称加密公钥,所述非对称加密公钥是服务端预先为所述客户端生成的、且相应的非对称加密私钥由所述服务端保存;基于所述服务访问令牌和所述非对称加密公钥组装针对目标业务的请求报文,并调用所述目标业务对应的目标webapi接口向所述服务端发送所述请求报文;
24.应答验证模块,用于通过所述目标webapi接口接收所述服务端返回的应答报文,并对所述应答报文进行完整性验证,所述应答报文中至少包含所述服务端基于所述非对称加密私钥对所述请求报文进行webapi接口安全防护校验的校验结果。
25.优选的,用于基于所述服务访问令牌和所述非对称加密公钥组装针对目标业务的请求报文的所述请求组装模块,具体用于:
26.生成与所述目标业务对应的对称加密秘钥和随机盐值,并使用所述非对称加密公钥对所述对称加密秘钥和所述随机盐值进行非对称加密,以生成对称加密秘钥字段和随机盐值字段;基于当前系统utc时间获取时间戳,并使用所述对称加密秘钥和所述随机盐值对所述时间戳进行加密,以生成时间戳字段;对所述时间戳字段、所述随机盐值和所述目标业务对应的业务请求数据做消息摘要,以生成第一数据签名字段;使用所述对称加密秘钥和所述随机盐值对所述业务请求数据进行加密,并将加密后的业务请求数据赋值给第一数据字段;使用ajax方式根据所述服务访问令牌设置请求报文头,并对所述请求报文头、所述对称加密秘钥字段、所述随机盐值字段、所述时间戳字段、所述第一数据签名字段和所述第一数据字段进行组装得到所述请求报文。
27.一种接口安全防护的处理方法,所述方法应用于服务端,所述方法包括:
28.接收客户端通过调用目标webapi接口所发送的请求报文,所述请求报文是所述客户端在处于登录状态的情况下基于所获取的服务访问令牌和非对称加密公钥针对目标业务所组装的、且所述目标webapi接口为所述目标业务对应的webapi接口,所述非对称加密公钥是所述服务端预先为所述客户端生成的、且相应的非对称加密私钥由所述服务端保
存;
29.基于所述非对称加密私钥对所述请求报文进行webapi接口安全防护校验,并至少基于校验结果向所述客户端返回应答报文,以使所述客户端对通过所述目标webapi接口接收到的所述应答报文进行完整性验证。
30.优选的,所述请求报文中包含请求报文头、对称加密秘钥字段、随机盐值字段、时间戳字段、第一数据签名字段和第一数据字段,所述请求报文头中包含所述服务访问令牌;
31.所述基于所述非对称加密私钥对所述请求报文进行webapi接口安全防护校验,包括:
32.对所述请求报文的请求方式进行校验;
33.若所述请求报文的请求方式校验通过,对所述请求报文的ip地址进行ip地址黑/白名单的校验;
34.若所述请求报文的ip地址校验通过,对所述请求报文头进行校验;
35.若所述请求报文头校验通过,对所述服务访问令牌进行合法性校验;
36.若所述服务访问令牌的合法性校验通过,则使用所述非对称加密私钥对所述对称加密秘钥字段和所述随机盐值字段进行解密,以获得对称加密秘钥和随机盐值;使用所述对称加密秘钥和所述随机盐值对所述时间戳字段进行解密得到时间戳;根据当前系统utc时间对所述时间戳进行有效性校验;
37.若所述时间戳的有效性校验通过,使用所述对称加密秘钥和所述随机盐值对所述第一数据字段进行解密,以获得业务请求数据;对所述时间戳字段、所述随机盐值和所述业务请求数据做消息摘要,以生成相应的数据签名字段;根据消息摘要所得到的数据签名字段对所述第一数据签名字段进行有效性校验;
38.若所述第一数据签名字段的有效性校验通过,确定校验结果的类型为校验通过;
39.若所述请求报文的请求方式校验未通过/所述请求报文的ip地址校验未通过/所述请求报文头校验未通过/所述服务访问令牌校验未通过/所述服务访问令牌的合法性校验未通过/所述时间戳的有效性校验未通过/所述第一数据签名字段的有效性校验未通过,确定校验结果的类型为校验未通过,并输出相应的校验未通过原因。
40.优选的,所述至少基于校验结果向所述客户端返回应答报文,包括:
41.根据校验结果的类型赋值返回码字段;
42.若校验结果的类型为校验未通过,根据所述校验未通过原因赋值描述信息字段;若校验结果的类型为校验通过,将空值赋值描述信息字段,并对所述业务请求数据进行业务处理得到业务返回数据;使用所述对称加密秘钥和所述随机盐值对所述业务返回数据进行加密,以生成第二数据字段;
43.对所述返回码字段、所述描述信息字段、所述业务返回数据做消息摘要,得到第二数据签名字段;
44.对所述返回码字段、所述描述信息字段、所述第二数据字段和所述第二数据签名字段进行组装得到所述应答报文,并向所述客户端返回所述应答报文。
45.一种接口安全防护的处理装置,所述装置包括:
46.请求接收模块,用于接收客户端通过调用目标webapi接口所发送的请求报文,所述请求报文是所述客户端在处于登录状态的情况下基于所获取的服务访问令牌和非对称
加密公钥针对目标业务所组装的、且所述目标webapi接口为所述目标业务对应的webapi接口,所述非对称加密公钥是所述服务端预先为所述客户端生成的、且相应的非对称加密私钥由所述服务端保存;
47.接口校验模块,用于基于所述非对称加密私钥对所述请求报文进行webapi接口安全防护校验,并至少基于校验结果向所述客户端返回应答报文,以使所述客户端对通过所述目标webapi接口接收到的所述应答报文进行完整性验证。
48.优选的,所述请求报文中包含请求报文头、对称加密秘钥字段、随机盐值字段、时间戳字段、第一数据签名字段和第一数据字段,所述请求报文头中包含所述服务访问令牌;
49.用于基于所述非对称加密私钥对所述请求报文进行webapi接口安全防护校验的所述接口校验模块,具体用于:
50.对所述请求报文的请求方式进行校验;若所述请求报文的请求方式校验通过,对所述请求报文的ip地址进行ip地址黑/白名单的校验;若所述请求报文的ip地址校验通过,对所述请求报文头进行校验;若所述请求报文头校验通过,对所述服务访问令牌进行合法性校验;若所述服务访问令牌的合法性校验通过,则使用所述非对称加密私钥对所述对称加密秘钥字段和所述随机盐值字段进行解密,以获得对称加密秘钥和随机盐值;使用所述对称加密秘钥和所述随机盐值对所述时间戳字段进行解密得到时间戳;根据当前系统utc时间对所述时间戳进行有效性校验;若所述时间戳的有效性校验通过,使用所述对称加密秘钥和所述随机盐值对所述第一数据字段进行解密,以获得业务请求数据;对所述时间戳字段、所述随机盐值和所述业务请求数据做消息摘要,以生成相应的数据签名字段;根据消息摘要所得到的数据签名字段对所述第一数据签名字段进行有效性校验;若所述第一数据签名字段的有效性校验通过,确定校验结果的类型为校验通过;若所述请求报文的请求方式校验未通过/所述请求报文的ip地址校验未通过/所述请求报文头校验未通过/所述服务访问令牌校验未通过/所述服务访问令牌的合法性校验未通过/所述时间戳的有效性校验未通过/所述第一数据签名字段的有效性校验未通过,确定校验结果的类型为校验未通过,并输出相应的校验未通过原因。
51.相较于现有技术,本发明实现的有益效果为:
52.本发明提供一种接口安全防护的处理方法及装置,客户端处于登录状态下,可以基于所获取的服务访问令牌和非对称加密公钥针对目标业务组装请求报文,并调用目标业务对应的目标webapi接口向服务端发送该请求报文,其中,非对称加密公钥是服务端预先为客户端生成的、且相应的非对称加密私钥由服务端保存;服务端基于非对称加密私钥对所接收到的请求报文进行webapi接口安全防护校验,并至少基于校验结果向客户端返回应答报文;客户端对通过目标webapi接口接收到的应答报文进行完整性验证。基于本发明,能够有效提高webapi接口的安全防护能力,防止非法攻击和信息泄露。
附图说明
53.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
54.图1为本发明实施例提供的接口安全防护的处理方法的方法流程图;
55.图2为本发明实施例提供的接口安全防护的处理装置的结构示意图;
56.图3为本发明实施例提供的接口安全防护的处理方法的另一方法流程图;
57.图4为本发明实施例提供的接口安全防护的处理装置的另一结构示意图。
具体实施方式
58.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
59.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
60.本发明针对现有技术存在的不足,提供了一种接口安全防护的处理方法,涉及前后端程序安全交互,能够实现webapi接口安全防护,可有效提高webapi接口的安全防护能力,防止非法攻击和信息泄露。
61.参见图1,图1为本发明实施例提供的接口安全防护的处理方法的方法流程图,该接口安全防护的处理方法应用于客户端,包括如下步骤:
62.s101,在处于登录状态的情况下,获取服务访问令牌和非对称加密公钥,非对称加密公钥是服务端预先为客户端生成的、且相应的非对称加密私钥由服务端保存。
63.本发明实施例中,客户端登录后,可以获取服务访问令牌acctocken和服务端为客户端生成的非对称加密公钥publickey。其中,非对称加密公钥publickey是服务端基于特定非对称加密算法(国密算法、非国密算法均可)为客户端所生成的,而该非对称加密公钥publickey相应的非对称加密私钥privatekey则由服务端保存。
64.需要说明的是,不同客户端的非对称加密公钥publickey和非对称加密公钥publickey也是不同的。服务端可以基于客户端的标识userid保存该客户端的非对称加密私钥privatekey。
65.s102,基于服务访问令牌和非对称加密公钥组装针对目标业务的请求报文,并调用目标业务对应的目标webapi接口向服务端发送请求报文。
66.本发明实施例中,客户端通过ajax(异步javascript和xml)方式调用webapi接口,webapi接口都基于https协议的post方法请求服务端的服务。
67.此外,本发明实施例中,请求报文和应答报文均为json字符串。其中:
68.请求报文的格式如下所示:
69.[0070][0071]
应答报文的格式如下所示:
[0072][0073]
具体实现过程中,步骤s102中“基于服务访问令牌和非对称加密公钥组装针对目标业务的请求报文”可以采用如下步骤:
[0074]
生成与目标业务对应的对称加密秘钥和随机盐值,并使用非对称加密公钥对对称加密秘钥和随机盐值进行非对称加密,以生成对称加密秘钥字段和随机盐值字段;
[0075]
基于当前系统utc时间获取时间戳,并使用对称加密秘钥和随机盐值对时间戳进行加密,以生成时间戳字段;
[0076]
对时间戳字段、随机盐值和目标业务对应的业务请求数据做消息摘要,以生成第一数据签名字段;
[0077]
使用对称加密秘钥和随机盐值对业务请求数据进行加密,并将加密后的业务请求数据赋值给第一数据字段;
[0078]
使用ajax方式根据服务访问令牌设置请求报文头,并对请求报文头、对称加密秘钥字段、随机盐值字段、时间戳字段、第一数据签名字段和第一数据字段进行组装得到请求报文。
[0079]
本发明实施例中,客户端组装请求报文调用具体的webapi接口(即目标webapi接口)发送该请求报文。其中,请求报文的组成过程如下:
[0080]
1)客户端生成与目标业务的业务数据对应的对称加密秘钥secretkey和随机盐值salt;进而,客户端使用上述非对称加密公钥publickey,按照sm2算法(即椭圆曲线公钥密码算法)对对称加密秘钥secretkey和随机盐值salt进行非对称加密,生成请求报文中的对称加密秘钥字段secretkey-encrypted和随机盐值字段salt-encrypted;
[0081]
2)客户端使用基于其当前系统utc(universal time coordinated,世界协调时)时间获取当前时间的时间戳;进而,客户端使用对称加密秘钥secretkey和随机盐值salt,按照sm4算法(国家密码局认定的一种分组算法)对该时间戳进行加密,生成请求报文中的时间戳字段timestamp;
[0082]
3)客户端按照sm3算法(即哈希函数算法)对上述时间戳字段timestamp、随机盐值salt、业务请求数据(与目标业务相对应)data做消息摘要,生成请求报文中的数据签名字段(后续称之为第一数据签名字段)datasign;
[0083]
4)客户端使用上述对称加密秘钥secretkey和随机盐值salt,按照sm4算法对业务
请求数据data的内容进行加密,并将加密后的内容赋值给data字段(后续称之为第一数据字段);
[0084]
5)客户端使用ajax方式,根据服务访问令牌acctocken设置请求报文头acctocken:’acctocken’,type:’post’,host:'你的域名',进而将请求报文头acctocken:’acctocken’,type:’post’,host:'你的域名'、对称加密秘钥字段secretkey-encrypted、随机盐值字段salt-encrypted、时间戳字段timestamp、第一数据签名字段datasign和第一数据字段data进行组装得到请求报文,并根据目标webapi接口的接口地址发送该请求报文。
[0085]
s103,通过目标webapi接口接收服务端返回的应答报文,并对应答报文进行完整性验证,应答报文中至少包含服务端基于非对称加密私钥对请求报文进行webapi接口安全防护校验的校验结果。
[0086]
本发明实施例中,服务端接收到客户端的请求报文后,可以基于该客户端的非对称加密私钥对请求报文进行webapi接口安全防护校验,webapi接口安全防护校验的具体实现可以参见后续实施例说明,在此不再赘述。服务端基于校验结果向客户端返回应答报文;客户端则在通过目标webapi接口接收到该应答报文后,对该应答报文进行完整性验证,并在应答报文验证通过后,客户端执行后续的业务逻辑。
[0087]
具体实现过程中,应答报文中包含返回码字段、描述信息字段、第二数据字段和第二数据签名字段。步骤s103中“对应答报文进行完整性验证”可以采用如下步骤:
[0088]
根据返回码字段确定校验结果的类型,校验结果的类型包括校验通过和校验未通过;
[0089]
若校验结果的类型为校验未通过,则根据描述信息字段确定校验未通过原因;若校验结果的类型为校验通过,则确定描述信息字段为空值,并使用对称加密秘钥和随机盐值对第二数据字段进行解密得到业务返回数据,业务返回数据是服务端基于业务请求数据进行业务处理得到的;
[0090]
对返回码字段、描述信息字段、业务返回数据做消息摘要,以生成相应的数据签名字段;根据消息摘要所得到的数据签名字段对第二数据签名字段进行有效性校验;
[0091]
若第二数据签名字段的有效性校验通过,确定完整性验证结果为验证通过;
[0092]
若第二数据签名字段的有效性校验未通过,确定完整性验证结果为验证未通过。
[0093]
本发明实施例中,客户端收到应答报文后,可以根据其中返回码字段code和描述信息字段message判断目标webapi接口返回消息情况,并根据上述对称加密秘钥secretkey和随机盐值salt对应答报文中的数据字段(即第二数据字段)data进行解密,进而验证应答报文完整性。具体的:
[0094]
客户端根据返回码字段code确定校验结果的类型。
[0095]
如果返回码字段code不为0000,则表示服务端进行webapi接口安全防护校验的校验结果为校验未通过,进而可以根据描述信息字段message确定校验未通过原因,此时,第二数据字段data为空值(即第二数据字段data的内容为空),具体的,
[0096]
返回码字段code为0001时,描述信息字段message的内容为“非法的请求方式”;返回码字段code为0002时,描述信息字段message的内容为“非法的请求ip地址”;返回码字段code为0003时,描述信息字段message的内容为“请求头不符合要求规则”;返回码字段code为0004时,描述信息字段message的内容为“非法的请求acctocken”;返回码字段code为
0005时,描述信息字段message的内容为“非法的时间戳”;返回码字段code为0006时,描述信息字段message的内容为“签名验签失败”。
[0097]
如果返回码字段code为0000,则表示服务端进行webapi接口安全防护校验的校验结果为校验通过,此时,描述信息字段message为空值(即描述信息字段message的内容为空),进而使用对称加密秘钥secretkey和随机盐值salt,按照sm4算法对第二数据字段data进行解密得到业务返回数据,该业务返回数据是客户端基于业务请求数据进行目标业务的业务处理得到的。
[0098]
无论校验结果的类型为校验未通过,还是校验通过,客户端按照sm3算法对上述返回码字段code、描述信息字段message、业务返回数据做消息摘要生成数据签名字段;进而比对做消息摘要所生成的数据签名字段与第二签名字段datasign以此验证返回报文的完整性;如果两者相同,则说明第二签名字段datasign有效性校验通过,相应的,完整性验证结果为验证通过,反之,如果两者不同,则说明第二签名字段datasign有效性校验未通过,相应的,完整性验证结果为验证未通过。
[0099]
本发明实施例提供的接口安全防护的处理方法,客户端处于登录状态下,可以基于所获取的服务访问令牌和非对称加密公钥针对目标业务组装请求报文,并调用目标业务对应的目标webapi接口向服务端发送该请求报文,其中,非对称加密公钥是服务端预先为客户端生成的、且相应的非对称加密私钥由服务端保存;服务端基于非对称加密私钥对所接收到的请求报文进行webapi接口安全防护校验,并至少基于校验结果向客户端返回应答报文;客户端对通过目标webapi接口接收到的应答报文进行完整性验证。基于本发明,能够有效提高webapi接口的安全防护能力,防止非法攻击和信息泄露。
[0100]
基于上述实施例提供的接口安全防护的处理方法,本发明实施例则对应提供执行上述接口安全防护的处理方法的装置,该装置的结构示意图如图2所示,包括:
[0101]
请求组装模块101,用于在处于登录状态的情况下,获取服务访问令牌和非对称加密公钥,非对称加密公钥是服务端预先为客户端生成的、且相应的非对称加密私钥由服务端保存;基于服务访问令牌和非对称加密公钥组装针对目标业务的请求报文,并调用目标业务对应的目标webapi接口向服务端发送请求报文;
[0102]
应答验证模块102,用于通过目标webapi接口接收服务端返回的应答报文,并对应答报文进行完整性验证,应答报文中至少包含服务端基于非对称加密私钥对请求报文进行webapi接口安全防护校验的校验结果。
[0103]
可选的,用于基于服务访问令牌和非对称加密公钥组装针对目标业务的请求报文的请求组装模块101,具体用于:
[0104]
生成与目标业务对应的对称加密秘钥和随机盐值,并使用非对称加密公钥对对称加密秘钥和随机盐值进行非对称加密,以生成对称加密秘钥字段和随机盐值字段;基于当前系统utc时间获取时间戳,并使用对称加密秘钥和随机盐值对时间戳进行加密,以生成时间戳字段;对时间戳字段、随机盐值和目标业务对应的业务请求数据做消息摘要,以生成第一数据签名字段;使用对称加密秘钥和随机盐值对业务请求数据进行加密,并将加密后的业务请求数据赋值给第一数据字段;使用ajax方式根据服务访问令牌设置请求报文头,并对请求报文头、对称加密秘钥字段、随机盐值字段、时间戳字段、第一数据签名字段和第一数据字段进行组装得到请求报文。
[0105]
可选的,应答报文中包含返回码字段、描述信息字段、第二数据字段和第二数据签名字段;
[0106]
用于对应答报文进行完整性验证的应答验证模块102,具体用于:
[0107]
根据返回码字段确定校验结果的类型,校验结果的类型包括校验通过和校验未通过;若校验结果的类型为校验未通过,则根据描述信息字段确定校验未通过原因;若校验结果的类型为校验通过,则确定描述信息字段为空值,并使用对称加密秘钥和随机盐值对第二数据字段进行解密得到业务返回数据,业务返回数据是服务端基于业务请求数据进行业务处理得到的;对返回码字段、描述信息字段、业务返回数据做消息摘要,以生成相应的数据签名字段;根据消息摘要所得到的数据签名字段对第二数据签名字段进行有效性校验;若第二数据签名字段的有效性校验通过,确定完整性验证结果为验证通过;若第二数据签名字段的有效性校验未通过,确定完整性验证结果为验证未通过。
[0108]
需要说明的是,本发明实施例中各模块的细化功能可以参见上述接口安全防护的处理方法实施例对应公开部分,在此不再赘述。
[0109]
参见图3,图3为本发明实施例提供的接口安全防护的处理方法的另一方法流程图,该接口安全防护的处理方法应用于服务端,包括如下步骤:
[0110]
s201,接收客户端通过调用目标webapi接口所发送的请求报文,请求报文是客户端在处于登录状态的情况下基于所获取的服务访问令牌和非对称加密公钥针对目标业务所组装的、且目标webapi接口为目标业务对应的webapi接口,非对称加密公钥是服务端预先为客户端生成的、且相应的非对称加密私钥由服务端保存。
[0111]
本发明实施例中,客户端登录后,通过所获取的服务访问令牌acctocken和非对称加密公钥publickey组装针对目标业务的请求报文,并调用目标webapi接口向服务端发送该请求报文,客户端组装请求报文的具体实现可以参见上述实施例说明,在此不再赘述。
[0112]
s202,基于非对称加密私钥对请求报文进行webapi接口安全防护校验,并至少基于校验结果向客户端返回应答报文,以使客户端对通过目标webapi接口接收到的应答报文进行完整性验证。
[0113]
本发明实施例中,服务端接收到客户端发送的请求报文后,可以根据该客户端的标识userid确定其非对称加密私钥privatekey,进而基于该非对称加密私钥privatekey对请求报文进行包括请求方式、ip地址黑/白名单、请求头、服务访问令牌有效性、时间有效性、数据签名有效性的校验,并基于校验结果生成应答报文返回给客户端,由客户端对该应答报文进行完整性校验,而客户端对应答报文进行完整性校验的具体实现可以参见上述实施例说明,在此不再赘述。
[0114]
具体实现过程中,请求报文中包含请求报文头、对称加密秘钥字段、随机盐值字段、时间戳字段、第一数据签名字段和第一数据字段,请求报文头中包含服务访问令牌。步骤s202中“基于非对称加密私钥对请求报文进行webapi接口安全防护校验”可以采用如下步骤:
[0115]
对请求报文的请求方式进行校验;
[0116]
若请求报文的请求方式校验通过,对请求报文的ip地址进行ip地址黑/白名单的校验;
[0117]
若请求报文的ip地址校验通过,对请求报文头进行校验;
[0118]
若请求报文头校验通过,对服务访问令牌进行合法性校验;
[0119]
若服务访问令牌的合法性校验通过,则使用非对称加密私钥对对称加密秘钥字段和随机盐值字段进行解密,以获得对称加密秘钥和随机盐值;使用对称加密秘钥和随机盐值对时间戳字段进行解密得到时间戳;根据当前系统utc时间对时间戳进行有效性校验;
[0120]
若时间戳的有效性校验通过,使用对称加密秘钥和随机盐值对第一数据字段进行解密,以获得业务请求数据;对时间戳字段、随机盐值和业务请求数据做消息摘要,以生成相应的数据签名字段;根据消息摘要所得到的数据签名字段对第一数据签名字段进行有效性校验;
[0121]
若第一数据签名字段的有效性校验通过,确定校验结果的类型为校验通过;
[0122]
若请求报文的请求方式校验未通过/请求报文的ip地址校验未通过/请求报文头校验未通过/服务访问令牌校验未通过/服务访问令牌的合法性校验未通过/时间戳的有效性校验未通过/第一数据签名字段的有效性校验未通过,确定校验结果的类型为校验未通过,并输出相应的校验未通过原因。
[0123]
本发明实施例中,服务端对请求报文进行webapi接口安全防护校验的过程如下:
[0124]
1)服务端对请求报文的请求方式进行校验。举例来说,本发明中可以校验请求报文头中accept字段是否包含“json”、请求方法是否为post;如果accept字段包含“json”、且请求方法为post,则表示请求报文的请求方式校验通过,进行下一步;反之,如果accept字段不包含“json”、或者请求方法为post,则表示请求报文的请求方式校验未通过,需要返回校验失败信息,此时可以确定校验结果的类型为校验未通过,并输出相应的校验未通过原因“非法的请求方式”。
[0125]
2)服务端对请求报文的ip地址进行ip地址黑/白名单的校验。本发明中可以根据服务端设置的ip黑/白名单的地址清单校验请求报文的ip地址(该请求报文的ip地址通过解析请求报文的报文头所获得)是否为该地址清单内;如果请求报文的ip地址在该地址清单内,则表示请求报文的ip地址校验通过,进行下一步;反之,如果请求报文的ip地址不在该地址清单内,则表示请求报文的ip地址校验未通过,需要返回校验失败信息,此时可以确定校验结果的类型为校验未通过,并输出相应的校验未通过原因“非法的请求ip地址”。
[0126]
3)服务端对请求报文头进行校验。本发明中根据服务端设置的报文头校验清单,校验请求报文中是否包含必须的请求报文头或者受限制的请求报文头。举例来说,本发明可以校验请求报文头中是否包含host字段和acctocken字段、且host字段是否是指定值、且不允许包含cookie字段;如果请求报文头中包含host字段和acctocken字段、且host字段是指定值、且不包含cookie字段,则表示请求报文头校验通过,进行下一步;反之,如果请求报文头中不包含host字段或者acctocken字段、或者host字段不是指定值、或者包含cookie字段,则表示请求报文头校验未通过,需要返回校验失败信息,此时可以确定校验结果的类型为校验未通过,并输出相应的校验未通过原因“请求头不符合要求规则”。
[0127]
4)服务端对服务访问令牌acctocken进行合法性校验。本发明中可以通过请求报文头获取服务访问令牌acctocken,由于服务访问令牌acctocken是有服务端所发放的,因此服务端可以根据数据库或者缓存redis中是否存在该服务访问令牌acctocken来校验合法性。以缓存redis为例,服务端可以查询缓存redis中是否存在服务访问令牌acctocken对应的key、且其value为客户端的标识userid;如果缓存redis中存在服务访问令牌
acctocken、且其key的value为客户端的标识userid,则表示服务访问令牌的合法性校验通过,进行下一步;反之,如果缓存redis中不存在服务访问令牌acctocken、或者其key的value为客户端的标识userid,则表示服务访问令牌的合法性校验未通过,需要返回校验失败信息,此时可以确定校验结果的类型为校验未通过,并输出相应的校验未通过原因“非法的请求acctocken”。
[0128]
5)服务端进行请求报文的时间有效性校验。本发明中服务端可以通过服务访问令牌acctocken获取客户端的标识userid,进而可以通过该客户端的标识userid查询该客户端的非对称加密私钥privatekey。使用非对称加密私钥privatekey,按照sm2算法对请求报文中的对称加密秘钥字段secretkey-encrypted和随机盐值字段salt-encrypted进行解密,得到对称加密秘钥secretkey和随机盐值salt。进而服务端使用对称加密秘钥secretkey和随机盐值salt,按照sm4算法对时间戳字段timestamp进行解密,得到时间戳。进一步服务端将其当前系统utc时间与时间戳进行比较;如果两者在有效的时间间隔内(比如1分钟),则表示时间戳的有效性校验通过,进行下一步;反之,如果两者不在有效的时间间隔内(比如1分钟),则表示时间戳的有效性校验未通过,需要返回校验失败信息,此时可以确定校验结果的类型为校验未通过,并输出相应的校验未通过原因“非法的时间戳”。
[0129]
6)服务端进行数据签名有效性校验。本发明中服务端使用对称加密秘钥secretkey和随机盐值salt,按照sm4算法对第一数据字段data进行解密,得到业务请求数据。进而服务端按照sm3算法对上述时间戳字段timestamp、随机盐值salt、业务请求数据做消息摘要,生成数据签名字段,比对所生成的数据签名字段与请求报文中的第一数据签名字段datasign;如果两者相同,则表示第一数据签名字段的有效性校验通过,服务端可以进行后续的业务处理;如果两者不同,则表示第一数据签名字段的有效性校验未通过,需要返回校验失败信息,此时可以确定校验结果的类型为校验未通过,并输出相应的校验未通过原因“签名验签失败”。
[0130]
在此基础上,步骤s202中“至少基于校验结果向客户端返回应答报文”可以采用如下步骤:
[0131]
根据校验结果的类型赋值返回码字段;
[0132]
若校验结果的类型为校验未通过,根据校验未通过原因赋值描述信息字段;若校验结果的类型为校验通过,将空值赋值描述信息字段,并对业务请求数据进行业务处理得到业务返回数据;使用对称加密秘钥和随机盐值对业务返回数据进行加密,以生成第二数据字段;
[0133]
对返回码字段、描述信息字段、业务返回数据做消息摘要,得到第二数据签名字段;
[0134]
对返回码字段、描述信息字段、第二数据字段和第二数据签名字段进行组装得到应答报文,并向客户端返回应答报文。
[0135]
本发明实施例中,服务端可以根据校验结果的类型赋值返回码字段。其中,
[0136]
若校验结果的类型为校验未通过,则可以以校验未通过原因赋值描述信息字段message。具体的,若请求报文的请求方式校验未通过,返回码字段code为0001、且描述信息字段message的内容为“非法的请求方式”;若请求报文的ip地址校验未通过,返回码字段code为0002、且描述信息字段message的内容为“非法的请求ip地址”;若请求报文头校验未
通过,返回码字段code为0003、且描述信息字段message的内容为“请求头不符合要求规则”;若服务访问令牌校验未通过,返回码字段code为0004、且描述信息字段message的内容为“非法的请求acctocken”;若时间戳的有效性校验未通过,返回码字段code为0005、且描述信息字段message的内容为“非法的时间戳”;若第一数据签名字段的有效性校验未通过,返回码字段code为0006时、且描述信息字段message的内容为“签名验签失败”。此时,服务端将第二数据字段data赋值为空值(即信息字段message的内容为空)。
[0137]
若校验结果的类型为校验通过,则返回码字段code为0000、且描述信息字段message为空值(即描述信息字段message的内容为空)。进而,服务端对业务请求数据进行目标业务的业务处理得到业务返回数据,进一步使用对称加密秘钥secretkey和随机盐值salt,按照sm4算法对业务返回数据进行加密,生成第二数据字段data。
[0138]
无论校验结果的类型为校验未通过,还是校验通过,服务端对返回码字段code、描述信息字段message和业务返回数据,按照sm3算法据做消息摘要,得到第二数据签名字段datasign。进一步,服务端对返回码字段code、描述信息字段message、第二数据字段data、第二数据签名字段datasign进行组装得到应答报文,并向客户端返回该应答报文。
[0139]
基于上述实施例提供的接口安全防护的处理方法,本发明实施例则对应提供执行上述接口安全防护的处理方法的装置,该装置的结构示意图如图4所示,包括:
[0140]
请求接收模块201,用于接收客户端通过调用目标webapi接口所发送的请求报文,请求报文是客户端在处于登录状态的情况下基于所获取的服务访问令牌和非对称加密公钥针对目标业务所组装的、且目标webapi接口为目标业务对应的webapi接口,非对称加密公钥是服务端预先为客户端生成的、且相应的非对称加密私钥由服务端保存;
[0141]
接口校验模块202,用于基于非对称加密私钥对请求报文进行webapi接口安全防护校验,并至少基于校验结果向客户端返回应答报文,以使客户端对通过目标webapi接口接收到的应答报文进行完整性验证。
[0142]
可选的,请求报文中包含请求报文头、对称加密秘钥字段、随机盐值字段、时间戳字段、第一数据签名字段和第一数据字段,请求报文头中包含服务访问令牌;
[0143]
用于基于非对称加密私钥对请求报文进行webapi接口安全防护校验的接口校验模块202,具体用于:对请求报文的请求方式进行校验;若请求报文的请求方式校验通过,对请求报文的ip地址进行ip地址黑/白名单的校验;若请求报文的ip地址校验通过,对请求报文头进行校验;若请求报文头校验通过,对服务访问令牌进行合法性校验;若服务访问令牌的合法性校验通过,则使用非对称加密私钥对对称加密秘钥字段和随机盐值字段进行解密,以获得对称加密秘钥和随机盐值;使用对称加密秘钥和随机盐值对时间戳字段进行解密得到时间戳;根据当前系统utc时间对时间戳进行有效性校验;若时间戳的有效性校验通过,使用对称加密秘钥和随机盐值对第一数据字段进行解密,以获得业务请求数据;对时间戳字段、随机盐值和业务请求数据做消息摘要,以生成相应的数据签名字段;根据消息摘要所得到的数据签名字段对第一数据签名字段进行有效性校验;若第一数据签名字段的有效性校验通过,确定校验结果的类型为校验通过;若请求报文的请求方式校验未通过/请求报文的ip地址校验未通过/请求报文头校验未通过/服务访问令牌校验未通过/服务访问令牌的合法性校验未通过/时间戳的有效性校验未通过/第一数据签名字段的有效性校验未通过,确定校验结果的类型为校验未通过,并输出相应的校验未通过原因。
[0144]
可选的,至少基于校验结果向客户端返回应答报文的接口校验模块202,具体用于:
[0145]
根据校验结果的类型赋值返回码字段;若校验结果的类型为校验未通过,根据校验未通过原因赋值描述信息字段;若校验结果的类型为校验通过,将空值赋值描述信息字段,并对业务请求数据进行业务处理得到业务返回数据;使用对称加密秘钥和随机盐值对业务返回数据进行加密,以生成第二数据字段;对返回码字段、描述信息字段、业务返回数据做消息摘要,得到第二数据签名字段;对返回码字段、描述信息字段、第二数据字段和第二数据签名字段进行组装得到应答报文,并向客户端返回应答报文。
[0146]
需要说明的是,本发明实施例中各模块的细化功能可以参见上述接口安全防护的处理方法实施例对应公开部分,在此不再赘述。
[0147]
以上对本发明所提供的一种接口安全防护的处理方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
[0148]
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0149]
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素,或者是还包括为这些过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0150]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1