CN117640109A - Api接口安全访问方法、装置、电子设备及存储介质 - Google Patents
Api接口安全访问方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117640109A CN117640109A CN202410111009.3A CN202410111009A CN117640109A CN 117640109 A CN117640109 A CN 117640109A CN 202410111009 A CN202410111009 A CN 202410111009A CN 117640109 A CN117640109 A CN 117640109A
- Authority
- CN
- China
- Prior art keywords
- target
- request
- signature
- encryption
- key
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012795 verification Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 abstract description 8
- 239000000243 solution Substances 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 241000283973 Oryctolagus cuniculus Species 0.000 description 2
- 235000014510 cooky Nutrition 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000010561 standard procedure Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供一种API接口安全访问方法、装置、电子设备及存储介质,涉及通信安全技术领域,该方法包括:获取需要通过API接口传输的请求体中的请求参数;基于动态密钥和请求参数生成加密参数,采用公共密钥对动态密钥进行加密获得加密动态密钥,并基于加密参数和加密动态密钥确定目标请求体,其中,公共密钥为目标服务器生成的;进而通过预设签名规则,基于加密参数生成第一目标签名,并基于第一目标签名和请求体对应的请求头确定目标请求头;将目标请求头和目标请求体发送至目标服务器。本发明实现了请求参数的加密,使得请求参数不容易被泄露,并且目标服务器对第一目标签名校验失败时,可以拦截请求消息,降低了请求消息被篡改的可能性。
Description
技术领域
本发明涉及通信安全技术领域,尤其涉及一种API接口安全访问方法、装置、电子设备及存储介质。
背景技术
API接口(Application Programming Interface,应用程序编程接口)是一种定义如何与软件组件进行交互的标准方法。随着互联网的快速发展,API接口的安全性无比重要。
在客户端通过API接口访问服务器的过程中,仅在客户端中采用接口签名的方式虽然可以防止参数被修改,但请求参数会暴露在API接口中,导致能看到请求参数的值,此种情况会为攻击者提供一些攻击方法及思路,进而攻击者可以根据接口参数构造SQL注入(SQL Injection)或跨站脚本(XSS,Cross-site Scripting)等攻击,又或是会出现抓包拦截接口请求信息的情况,导致请求参数泄露或者使得请求信息被攻击者篡改。
发明内容
本发明提供一种API接口安全访问方法、装置、电子设备及存储介质,用以解决现有技术中请求参数暴露在API接口中,容易被攻击进而导致请求参数泄露或请求消息被篡改的缺陷,实现请求参数的加密,使得请求参数不容易泄露,降低请求消息被篡改的可能性。
本发明提供一种API接口安全访问方法,包括:
获取需要通过API接口传输的请求体中的请求参数;
基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
根据本发明提供的一种API接口安全访问方法,所述基于动态密钥和所述请求参数生成加密参数,包括:
生成所述动态密钥;
将所述动态密钥和所述请求参数结合获得第一字符串信息;
基于所述动态密钥对所述第一字符串信息进行加密,获得所述加密参数。
根据本发明提供的一种API接口安全访问方法,所述通过预设签名规则,基于所述加密参数生成第一目标签名,包括:
生成唯一标识和当前的时间戳;
通过预设签名规则,基于请求URL、所述加密参数、所述唯一标识和所述当前的时间戳生成所述第一目标签名。
根据本发明提供的一种API接口安全访问方法,所述基于所述第一目标签名和所述请求体对应的请求头确定目标请求头,包括:
将所述第一目标签名、所述唯一标识和所述当前的时间戳加入所述请求体对应的请求头中获得目标请求头。
根据本发明提供的一种API接口安全访问方法,所述基于请求URL、所述加密参数、所述唯一标识和所述当前的时间戳生成所述第一目标签名,包括:
基于所述请求URL、所述加密参数和所述唯一标识生成第二字符串信息;
基于第一预设加密方式对所述第二字符串信息进行加密获得第一签名;
基于第二预设加密方式对所述第一签名进行加密获得第二签名;
基于所述当前的时间戳和所述第二签名确定第三签名;
基于第三预设加密方式对所述第三签名进行加密获得第四签名;
基于第四预设加密方式对所述第四签名进行加密获得所述第一目标签名。
根据本发明提供的一种API接口安全访问方法,所述第一预设加密方式包括SHA256,所述第二预设加密方式包括Base64,所述第三预设加密方式包括HmacSHA256,所述第四预设加密方式包括Base64。
根据本发明提供的一种API接口安全访问方法,所述获取需要通过API接口传输的请求体中的请求参数之前,所述方法还包括:
通过请求接口向所述目标服务器请求所述公共密钥,并存储所述公共密钥;
与所述目标服务器约定所述预设签名规则。
本发明还提供一种API接口安全访问装置,包括:
获取模块,用于获取需要通过API接口传输的请求体中的请求参数;
加密模块,用于基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
生成模块,用于通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
发送模块,用于将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述API接口安全访问方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述API接口安全访问方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述API接口安全访问方法。
本发明提供的API接口安全访问方法、装置、电子设备及存储介质,通过获取需要通过API接口传输的请求体中的请求参数,基于动态密钥和请求参数生成加密参数,采用公共密钥对动态密钥进行加密获得加密动态密钥,并基于加密参数和加密动态密钥确定目标请求体,进而通过预设签名规则,基于加密参数生成第一目标签名,并基于第一目标签名和请求体对应的请求头确定目标请求头,最终将目标请求头和目标请求体发送至目标服务器,目标请求头和目标请求体用于目标服务器通过预设签名规则对第一目标签名进行校验。因为基于动态密钥和请求参数生成加密参数,实现了请求参数的加密,使得请求参数不再暴露在API接口中,进而使得请求参数不容易被泄露,并基于加密参数生成第一目标签名进而确定目标请求头,使得目标服务器可以通过预设签名规则对第一目标签名进行校验,在对第一目标签名校验失败的情况下,可以拦截该请求消息,降低了请求消息被篡改的可能性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的API接口安全访问方法的流程示意图;
图2是本发明实施例提供的API接口安全访问装置的结构示意图;
图3是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术中请求参数暴露在API接口中,容易被攻击进而导致请求参数泄露或请求消息被篡改的问题,本发明提供了一种API接口安全访问方法。图1是本发明实施例提供的API接口安全访问方法的流程示意图,如图1所示,该API接口安全访问方法包括下述步骤:
步骤110:获取需要通过API接口传输的请求体中的请求参数。
具体地,该API接口安全访问方法可以应用于客户端,客户端获取需要通过API接口传输的请求体中的请求参数params。
步骤120:基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的。
具体地,客户端可以基于动态密钥和请求参数生成加密参数。与客户端对应的目标服务器可以使用内置一套证书的公共密钥文件public.pem进行Base64(一种基于64个可打印字符来表示二进制数据的方法)加密进而生成公共密钥和私有密钥,目标服务器可以预先将公共密钥发送至客户端。进而客户端可以采用公共密钥对动态密钥进行加密获得加密动态密钥,并可以基于加密参数和加密动态密钥确定目标请求体,该目标请求体中包括加密参数和加密动态密钥。
在一个实施例中,所述基于动态密钥和所述请求参数生成加密参数,包括:
生成所述动态密钥;
将所述动态密钥和所述请求参数结合获得第一字符串信息;
基于所述动态密钥对所述第一字符串信息进行加密,获得所述加密参数。
具体地,客户端可以基于CryptoJS(JavaScript加密库)生成动态密钥,容易理解的是,也可以基于其他方式生成动态密钥,本发明在此不做具体的限定。该生成动态密钥的过程可以通过如下代码进行表示:
dynamicKey1= crypto.randomBytes(16).toString('hex')
其中,dynamicKey1表示客户端生成的动态密钥。
进而客户端可以将生成的动态密钥和请求参数结合获得第一字符串信息,该过程可以通过如下代码表示:
msg1=JSON.stringify({params,dynamicKey1})
其中,msg1表示第一字符串信息。
客户端进一步可以基于动态密钥对第一字符串信息进行加密,获得加密参数,该过程可以通过如下代码表示:
msg2= CryptoJS.AES.encrypt(msg1, dynamicKey1).toString()
其中,msg2表示加密参数。
进一步地,客户端可以采用公共密钥对动态密钥进行加密获得加密动态密钥,该过程可以通过如下代码表示:
dynamicKey2= CryptoJS.RSA.encrypt(dynamicKey1, publicKey)
其中,dynamicKey2表示加密动态密钥,publicKey表示公共密钥。
最终基于加密参数和加密动态密钥确定的目标请求体中可以包括msg2和dynamicKey2。
在上述实施例中,客户端将动态密钥和请求参数结合获得第一字符串信息,进而基于动态密钥对第一字符串信息进行加密,获得所述加密参数,使得请求参数不再直接暴露在API接口中,保障了请求参数的安全,降低了请求参数泄露的可能性。
步骤130:通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头。
在一个实施例中,所述通过预设签名规则,基于所述加密参数生成第一目标签名,包括:
生成唯一标识和当前的时间戳;
通过预设签名规则,基于请求URL、所述加密参数、所述唯一标识和所述当前的时间戳生成所述第一目标签名。
具体地,客户端可以基于UUID v4(一种生成全局唯一标识符的标准方法)生成唯一标识,容易理解的是,客户端也可以基于其他生成标识符的方法生成唯一标识,本发明在此不做具体的限定。客户端还可以基于当前时间生成当前的时间戳。进而客户端可以通过预设签名规则,基于请求URL(Uniform Resource Locator,统一资源定位符)、加密参数、唯一标识和当前的时间戳生成第一目标签名,该预设签名规则可以是客户端与目标服务器预先约定的,客户端可以通过该预设签名规则生成第一目标签名,目标服务器可以通过该预设签名规则生成第二目标签名。
在上述实施例中,客户端通过生成唯一标识和当前的时间戳,并通过预设签名规则,基于请求URL、加密参数、唯一标识和当前的时间戳生成第一目标签名,使得第一目标签名更加复杂,提高了签名校验的难度,降低了请求消息被篡改的风险。
在一个实施例中,所述基于请求URL、所述加密参数、所述唯一标识和所述当前的时间戳生成所述第一目标签名,包括:
基于所述请求URL、所述加密参数和所述唯一标识生成第二字符串信息;
基于第一预设加密方式对所述第二字符串信息进行加密获得第一签名;
基于第二预设加密方式对所述第一签名进行加密获得第二签名;
基于所述当前的时间戳和所述第二签名确定第三签名;
基于第三预设加密方式对所述第三签名进行加密获得第四签名;
基于第四预设加密方式对所述第四签名进行加密获得所述第一目标签名。
具体地,第一预设加密方式,第二预设加密方式,第三预设加密方式和第四预设加密方式可以根据实际需要进行设定,四种预设加密方式可以完全不同也可以部分相同,本发明在此不做具体的限定。容易理解的是,当四种预设加密方式完全不同时,最终获得的第一目标签名的复杂程度较高。客户端可以基于请求URL、加密参数和唯一标识生成第二字符串信息,例如可以将请求URL和唯一标识添加到加密参数中,进而生成第二字符串信息,该过程可以通过如下代码表示:
msg3=msg2+URL+nouce
其中,msg3表示第二字符串信息,URL表示请求URL(例如可以为目标服务器的地址),nouce表示唯一标识。
进而客户端可以基于第一预设加密方式对第二字符串信息进行加密获得第一签名,例如在第一预设加密方式为SHA256(SecureHashAlgorithm256,安全三列算法256)的情况下,该过程可以通过如下代码表示:
Sign1=SHA256(msg3)
其中,Sign1表示第一签名。
进一步客户端可以基于第二预设加密方式对第一签名进行加密获得第二签名,例如在第二预设加密方式为Base64(一种基于64个可打印字符来表示二进制数据的数据编码方式)的情况下,该过程可以通过如下代码表示:
Sign2=Base64(Sign1)
其中,Sign2表示第二签名。
在客户端获得第二签名之后,还可以基于当前的时间戳和第二签名确定第三签名,该过程可以通过如下代码表示:
Sign3='time:'+time+'sign2:'+sign2
其中,Sign3表示第三签名,time表示当前的时间戳。
进而客户端可以基于第三预设加密方式对第三签名进行加密获得第四签名,例如在第三预设加密方式为HmacSHA256(Hash-based Message Authentication Code 256,基于SHA-256的密钥相关的哈希运算消息认证码)的情况下,该过程可以通过如下代码表示:
Sign4=HmacSHA256(Sign3,secret)
其中,Sign4表示第四签名。
最终客户端可以基于第四预设加密方式对第四签名进行加密获得第一目标签名,例如在第四预设加密方式为Base64的情况下,该过程可以通过如下代码表示:
Sign=Base64(Sign4)
其中,Sign表示第一目标签名。
在上述实施例中,客户端基于请求URL、加密参数和唯一标识生成第二字符串信息,并基于第一预设加密方式,第二预设加密方式,第三预设加密方式和第四预设加密方式对第二字符串信息进行逐步加密,获得第一目标签名,提高了第一目标签名的复杂性,后续目标服务器通过预设签名规则对第一目标签名进行校验时,在对第一目标签名校验失败的情况下,目标服务器可以拦截该请求消息,在对第一目标签名校验成功的情况下,目标服务器才会对加密动态密钥和加密参数解密进而获得请求参数,进而降低了请求消息被篡改的可能性。
在一个实施例中,所述第一预设加密方式包括SHA256,所述第二预设加密方式包括Base64,所述第三预设加密方式包括HmacSHA256,所述第四预设加密方式包括Base64。
具体地,第一预设加密方式可以包括SHA256(SecureHashAlgorithm256,安全三列算法256),还可以包括MD5、SHA-1、AES、RSA、Rabbit、MARC4、Hmac、Hmac-MD5、Hmac-SHA1、Hmac-SHA256和PBKDF2等加密算法,第一预设加密方式包括何种加密方式可以根据需要设定,本发明在此不做具体的限定。
第二预设加密方式可以包括Base64(一种基于64个可打印字符来表示二进制数据的数据编码方式),还可以包括其他的数据编码方式,第二预设加密方式包括何种加密方式可以根据需要设定,本发明在此不做具体的限定。
第三预设加密方式可以包括HmacSHA256(Hash-based Message AuthenticationCode,基于SHA-256的密钥相关的哈希运算消息认证码),还可以包括MD5、SHA-1、AES、RSA、Rabbit、MARC4、Hmac、Hmac-MD5、Hmac-SHA1、SHA256和PBKDF2等加密算法,第三预设加密方式包括何种加密方式可以根据需要设定,本发明在此不做具体的限定。
第四预设加密方式可以包括Base64(一种基于64个可打印字符来表示二进制数据的数据编码方式),还可以包括其他的数据编码方式,第四预设加密方式包括何种加密方式可以根据需要设定,本发明在此不做具体的限定。
在上述实施例中,使用了三种不同的预设加密方式,使得获得的第一目标签名具有较高复杂性,加大了对第一目标签名校验的难度,进而使得数据难以被篡改。
在一个实施例中,所述基于所述第一目标签名和所述请求体对应的请求头确定目标请求头,包括:
将所述第一目标签名、所述唯一标识和所述当前的时间戳加入所述请求体对应的请求头中获得目标请求头。
具体地,客户端可以将第一目标签名、唯一标识和当前的时间戳加入请求体对应的请求头中获得目标请求头,旨在使得目标服务器可以基于唯一标识和当前的时间戳生成第二目标签名,进而基于第二目标签名,并通过预设签名规则对第一目标签名进行校验。
步骤140:将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
具体地,客户端可以通过fetch函数将目标请求头和目标请求体封装为请求消息,并将该请求消息发送至目标服务器。该目标请求头和该目标请求体用于目标服务器通过预设签名规则对第一目标签名进行校验,该目标请求体还用于目标服务器在对第一目标签名校验成功的情况下基于私有密钥和目标请求体获得请求参数,该私有密钥为目标服务器生成且与公共密钥对应的密钥。
本发明提供的API接口安全访问方法,通过获取需要通过API接口传输的请求体中的请求参数,基于动态密钥和请求参数生成加密参数,采用公共密钥对动态密钥进行加密获得加密动态密钥,并基于加密参数和加密动态密钥确定目标请求体,进而通过预设签名规则,基于加密参数生成第一目标签名,并基于第一目标签名和请求体对应的请求头确定目标请求头,最终将目标请求头和目标请求体发送至目标服务器,目标请求头和目标请求体用于目标服务器通过预设签名规则对第一目标签名进行校验。因为基于动态密钥和请求参数生成加密参数,实现了请求参数的加密,使得请求参数不再暴露在API接口中,进而使得请求参数不容易被泄露,并基于加密参数生成第一目标签名进而确定目标请求头,使得目标服务器可以通过预设签名规则对第一目标签名进行校验,在对第一目标签名校验失败的情况下,可以拦截该请求消息,降低了请求消息被篡改的可能性。
在一个实施例中,所述获取需要通过API接口传输的请求体中的请求参数之前还包括:
通过请求接口向所述目标服务器请求所述公共密钥,并存储所述公共密钥;
与所述目标服务器约定所述预设签名规则。
具体地,客户端可以向目标服务器发起一个公开无校验的请求接口,并可以通过该请求接口向目标服务器请求公共密钥。目标服务器接收到请求后,可以将预先生成的公共密钥发送至客户端。进而客户端可以接收该公共密钥,并将公共密钥存储至浏览器缓存中。
客户端还可以预先与目标服务器约定相同的预设签名规则。
在上述实施例中,客户端将公共密钥存储至浏览器缓存中,该缓存方式是由Redux(一种应用的状态容器)实现的一种数据状态管理,相比cookie(一种存储在用户计算机上的小文本文件)或者localstorage(一种在客户端持久化存储数据的方法,与cookie类似)存储更加安全,使得攻击者无法在浏览器控制台中查看存储的公共密钥。
可选地,目标服务器为客户端的请求消息需要访问的服务器。该目标服务器在接收到客户端发送的目标请求头和目标请求体对应的请求消息之后,可以通过预设签名规则对第一目标签名进行校验,在对第一目标签名校验成功的情况下,目标服务器可以对目标请求体中的加密动态密钥和加密参数进行解密,以获得请求参数。
具体地,目标服务器可以基于请求URL(例如可以是目标服务器自身的地址)、加密参数和目标请求头中的唯一标识生成第三字符串信息,进而可以基于第一预设加密方式对第三字符串信息进行加密获得第五签名,基于第二预设加密方式对第五签名进行加密获得第六签名,基于当前的时间戳(该当前的时间戳为客户端生成该时间戳时的当前时间戳)和第六签名确定第七签名,基于第三预设加密方式对第七签名进行加密获得第八签名,基于第四预设加密方式对第八签名进行加密获得第二目标签名,显而易见的,因为目标服务器与客户端约定了预设签名规则,所以该第一预设加密方式、第二预设加密方式、第三预设加密方式和第四预设加密方式为目标服务器与客户端预先约定的,并且目标服务器基于请求URL、加密参数、唯一标识和当前的时间戳生成第二目标签名的方法与客户端生产第一目标签名的方法是相同的。
进一步地,目标服务器可以对第一目标签名进行校验,例如可以将第二目标签名与目标请求头中的第一目标签名进行对比,若第一目标签名与第二目标签名是相同的,则说明请求消息未被篡改,此时对第一目标签名校验成功。若第一目标签名与第二目标签名是不同的,则说明请求消息被篡改,此时对第一目标签名校验失败。
进一步地,在对第一目标签名校验成功的情况下,目标服务器可以基于私有密钥(该私有密钥为目标服务器在生成公共密钥的同时生成并存储的,且该私有密钥与公共密钥是对应的)对目标请求体中的加密动态密钥进行解密,获得动态密钥,进而可以基于该动态密钥对加密参数进行解密获得第一字符串信息,进一步可以从第一字符串信息中获取请求参数,因为第一字符串信息中请求参数与动态密钥的字段不同,因此目标服务器可以基于字段确定请求参数。
可选地,在对第一目标签名校验失败的情况下,目标服务器可以拦截该请求消息。
下面对本发明提供的API接口安全访问装置进行描述,下文描述的API接口安全访问装置与上文描述的API接口安全访问方法可相互对应参照。
图2是本发明实施例提供的API接口安全访问装置的结构示意图,如图2所示,该API接口安全访问装置200包括:
获取模块210,用于获取需要通过API接口传输的请求体中的请求参数;
加密模块220,用于基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
生成模块230,用于通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
发送模块240,用于将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
本发明提供的API接口安全访问装置,通过获取需要通过API接口传输的请求体中的请求参数,基于动态密钥和请求参数生成加密参数,采用公共密钥对动态密钥进行加密获得加密动态密钥,并基于加密参数和加密动态密钥确定目标请求体,进而通过预设签名规则,基于加密参数生成第一目标签名,并基于第一目标签名和请求体对应的请求头确定目标请求头,最终将目标请求头和目标请求体发送至目标服务器,目标请求头和目标请求体用于目标服务器通过预设签名规则对第一目标签名进行校验。因为基于动态密钥和请求参数生成加密参数,实现了请求参数的加密,使得请求参数不再暴露在API接口中,进而使得请求参数不容易被泄露,并基于加密参数生成第一目标签名进而确定目标请求头,使得目标服务器可以通过预设签名规则对第一目标签名进行校验,在对第一目标签名校验失败的情况下,可以拦截该请求消息,降低了请求消息被篡改的可能性。
在一个实施例中,加密模块220具体用于:
生成所述动态密钥;
将所述动态密钥和所述请求参数结合获得第一字符串信息;
基于所述动态密钥对所述第一字符串信息进行加密,获得所述加密参数。
在一个实施例中,生成模块230具体用于:
生成唯一标识和当前的时间戳;
通过预设签名规则,基于请求URL、所述加密参数、所述唯一标识和所述当前的时间戳生成所述第一目标签名。
在一个实施例中,生成模块230具体用于:
将所述第一目标签名、所述唯一标识和所述当前的时间戳加入所述请求体对应的请求头中获得目标请求头。
在一个实施例中,生成模块230具体用于:
基于所述请求URL、所述加密参数和所述唯一标识生成第二字符串信息;
基于第一预设加密方式对所述第二字符串信息进行加密获得第一签名;
基于第二预设加密方式对所述第一签名进行加密获得第二签名;
基于所述当前的时间戳和所述第二签名确定第三签名;
基于第三预设加密方式对所述第三签名进行加密获得第四签名;
基于第四预设加密方式对所述第四签名进行加密获得所述第一目标签名。
在一个实施例中,所述第一预设加密方式包括SHA256,所述第二预设加密方式包括Base64,所述第三预设加密方式包括HmacSHA256,所述第四预设加密方式包括Base64。
在一个实施例中,该API接口安全访问装置还包括存储模块和约定模块,所述获取需要通过API接口传输的请求体中的请求参数之前,该存储模块用于通过请求接口向所述目标服务器请求所述公共密钥,并存储所述公共密钥;
约定模块用于与所述目标服务器约定所述预设签名规则。
图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行API接口安全访问方法,该方法包括:
获取需要通过API接口传输的请求体中的请求参数;
基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的API接口安全访问方法,该方法包括:
获取需要通过API接口传输的请求体中的请求参数;
基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的API接口安全访问方法,该方法包括:
获取需要通过API接口传输的请求体中的请求参数;
基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种API接口安全访问方法,其特征在于,包括:
获取需要通过API接口传输的请求体中的请求参数;
基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
2.根据权利要求1所述的API接口安全访问方法,其特征在于,所述基于动态密钥和所述请求参数生成加密参数,包括:
生成所述动态密钥;
将所述动态密钥和所述请求参数结合获得第一字符串信息;
基于所述动态密钥对所述第一字符串信息进行加密,获得所述加密参数。
3.根据权利要求1所述的API接口安全访问方法,其特征在于,所述通过预设签名规则,基于所述加密参数生成第一目标签名,包括:
生成唯一标识和当前的时间戳;
通过预设签名规则,基于请求URL、所述加密参数、所述唯一标识和所述当前的时间戳生成所述第一目标签名。
4.根据权利要求3所述的API接口安全访问方法,其特征在于,所述基于所述第一目标签名和所述请求体对应的请求头确定目标请求头,包括:
将所述第一目标签名、所述唯一标识和所述当前的时间戳加入所述请求体对应的请求头中获得目标请求头。
5.根据权利要求3所述的API接口安全访问方法,其特征在于,所述基于请求URL、所述加密参数、所述唯一标识和所述当前的时间戳生成所述第一目标签名,包括:
基于所述请求URL、所述加密参数和所述唯一标识生成第二字符串信息;
基于第一预设加密方式对所述第二字符串信息进行加密获得第一签名;
基于第二预设加密方式对所述第一签名进行加密获得第二签名;
基于所述当前的时间戳和所述第二签名确定第三签名;
基于第三预设加密方式对所述第三签名进行加密获得第四签名;
基于第四预设加密方式对所述第四签名进行加密获得所述第一目标签名。
6.根据权利要求5所述的API接口安全访问方法,其特征在于,所述第一预设加密方式包括SHA256,所述第二预设加密方式包括Base64,所述第三预设加密方式包括HmacSHA256,所述第四预设加密方式包括Base64。
7.根据权利要求1至6任一项所述的API接口安全访问方法,其特征在于,所述获取需要通过API接口传输的请求体中的请求参数之前还包括:
通过请求接口向所述目标服务器请求所述公共密钥,并存储所述公共密钥;
与所述目标服务器约定所述预设签名规则。
8.一种API接口安全访问装置,其特征在于,包括:
获取模块,用于获取需要通过API接口传输的请求体中的请求参数;
加密模块,用于基于动态密钥和所述请求参数生成加密参数,采用公共密钥对所述动态密钥进行加密获得加密动态密钥,并基于所述加密参数和所述加密动态密钥确定目标请求体,其中,所述公共密钥为目标服务器生成的;
生成模块,用于通过预设签名规则,基于所述加密参数生成第一目标签名,并基于所述第一目标签名和所述请求体对应的请求头确定目标请求头;
发送模块,用于将所述目标请求头和所述目标请求体发送至所述目标服务器,所述目标请求头和所述目标请求体用于所述目标服务器通过所述预设签名规则对所述第一目标签名进行校验,所述目标请求体还用于所述目标服务器在对所述第一目标签名校验成功的情况下基于私有密钥和所述目标请求体获得所述请求参数,所述私有密钥为所述目标服务器生成且与所述公共密钥对应的密钥。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述API接口安全访问方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述API接口安全访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410111009.3A CN117640109B (zh) | 2024-01-26 | 2024-01-26 | Api接口安全访问方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410111009.3A CN117640109B (zh) | 2024-01-26 | 2024-01-26 | Api接口安全访问方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117640109A true CN117640109A (zh) | 2024-03-01 |
CN117640109B CN117640109B (zh) | 2024-04-26 |
Family
ID=90022017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410111009.3A Active CN117640109B (zh) | 2024-01-26 | 2024-01-26 | Api接口安全访问方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117640109B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138735A1 (en) * | 2001-02-22 | 2002-09-26 | Felt Edward P. | System and method for message encryption and signing in a transaction processing system |
CN101989984A (zh) * | 2010-08-24 | 2011-03-23 | 北京易恒信认证科技有限公司 | 电子文件安全共享系统及方法 |
WO2018204822A1 (en) * | 2017-05-04 | 2018-11-08 | Monticello Enterprises LLC | Providing cryptocurrency payments through a browser application programming interface |
CN109150821A (zh) * | 2018-06-01 | 2019-01-04 | 成都通甲优博科技有限责任公司 | 基于超文本传输协议http的数据交互方法及系统 |
CN110611670A (zh) * | 2019-09-12 | 2019-12-24 | 贵阳叁玖互联网医疗有限公司 | 一种api请求的加密方法及装置 |
CN114268450A (zh) * | 2021-11-02 | 2022-04-01 | 山东通汇资本投资集团有限公司 | 一种api接口认证方法及系统 |
CN114553416A (zh) * | 2022-03-18 | 2022-05-27 | 北京友普信息技术有限公司 | 一种对应用程序接口做签名验签的数据加密处理方法 |
CN114614994A (zh) * | 2022-03-25 | 2022-06-10 | 芜湖雄狮汽车科技有限公司 | Api接口数据的通信方法、装置、客户端及存储介质 |
CN115001828A (zh) * | 2022-06-02 | 2022-09-02 | 中国工商银行股份有限公司 | 交易数据的安全访问方法、系统、电子设备及介质 |
CN115001782A (zh) * | 2022-05-26 | 2022-09-02 | 爱驰汽车有限公司 | 接口请求参数的处理方法、装置、设备及存储介质 |
CN116471008A (zh) * | 2023-04-23 | 2023-07-21 | 上海智能交通有限公司 | 一种基于混合加密的接口访问安全控制方法及系统 |
-
2024
- 2024-01-26 CN CN202410111009.3A patent/CN117640109B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020138735A1 (en) * | 2001-02-22 | 2002-09-26 | Felt Edward P. | System and method for message encryption and signing in a transaction processing system |
CN101989984A (zh) * | 2010-08-24 | 2011-03-23 | 北京易恒信认证科技有限公司 | 电子文件安全共享系统及方法 |
WO2018204822A1 (en) * | 2017-05-04 | 2018-11-08 | Monticello Enterprises LLC | Providing cryptocurrency payments through a browser application programming interface |
CN109150821A (zh) * | 2018-06-01 | 2019-01-04 | 成都通甲优博科技有限责任公司 | 基于超文本传输协议http的数据交互方法及系统 |
CN110611670A (zh) * | 2019-09-12 | 2019-12-24 | 贵阳叁玖互联网医疗有限公司 | 一种api请求的加密方法及装置 |
CN114268450A (zh) * | 2021-11-02 | 2022-04-01 | 山东通汇资本投资集团有限公司 | 一种api接口认证方法及系统 |
CN114553416A (zh) * | 2022-03-18 | 2022-05-27 | 北京友普信息技术有限公司 | 一种对应用程序接口做签名验签的数据加密处理方法 |
CN114614994A (zh) * | 2022-03-25 | 2022-06-10 | 芜湖雄狮汽车科技有限公司 | Api接口数据的通信方法、装置、客户端及存储介质 |
CN115001782A (zh) * | 2022-05-26 | 2022-09-02 | 爱驰汽车有限公司 | 接口请求参数的处理方法、装置、设备及存储介质 |
CN115001828A (zh) * | 2022-06-02 | 2022-09-02 | 中国工商银行股份有限公司 | 交易数据的安全访问方法、系统、电子设备及介质 |
CN116471008A (zh) * | 2023-04-23 | 2023-07-21 | 上海智能交通有限公司 | 一种基于混合加密的接口访问安全控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117640109B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522726B (zh) | 小程序的鉴权方法、服务器及计算机可读存储介质 | |
US10484185B2 (en) | Method and system for distributing attestation key and certificate in trusted computing | |
CN110138799B (zh) | 一种基于sgx的安全云存储方法 | |
CN109347835B (zh) | 信息传输方法、客户端、服务器以及计算机可读存储介质 | |
US9544280B2 (en) | Utilization of a protected module to prevent offline dictionary attacks | |
CN108418691B (zh) | 基于sgx的动态网络身份认证方法 | |
US8156333B2 (en) | Username based authentication security | |
US8196186B2 (en) | Security architecture for peer-to-peer storage system | |
EP3972293A1 (en) | Bluetooth device connection methods and bluetooth devices | |
CN113691502B (zh) | 通信方法、装置、网关服务器、客户端及存储介质 | |
WO2019085531A1 (zh) | 一种终端联网认证的方法和装置 | |
CN110505055B (zh) | 基于非对称密钥池对和密钥卡的外网接入身份认证方法和系统 | |
CN106790045B (zh) | 一种基于云环境分布式虚拟机代理装置及数据完整性保障方法 | |
US20220417241A1 (en) | Methods, Systems, and Devices for Server Control of Client Authorization Proof of Possession | |
WO2018112482A1 (en) | Method and system for distributing attestation key and certificate in trusted computing | |
CN115473655B (zh) | 接入网络的终端认证方法、装置及存储介质 | |
CN111130798A (zh) | 一种请求鉴权方法及相关设备 | |
US20240106633A1 (en) | Account opening methods, systems, and apparatuses | |
CN117640109B (zh) | Api接口安全访问方法、装置、电子设备及存储介质 | |
US20240064006A1 (en) | Identity authentication method and apparatus, storage medium, program, and program product | |
US20090164782A1 (en) | Method and apparatus for authentication of service application processes in high availability clusters | |
CN115604034A (zh) | 一种通信连接的加解密方法、系统及电子设备 | |
CN115766119A (zh) | 通信方法、装置、通信系统及存储介质 | |
Mei et al. | Research and Defense of Cross-Site WebSocket Hijacking Vulnerability | |
US20220035924A1 (en) | Service trust status |
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 |