一种API接口加密签名方法与流程

文档序号:33484871发布日期:2023-03-15 14:25阅读:35来源:国知局
一种API接口加密签名方法与流程
一种api接口加密签名方法
技术领域
1.本发明涉及api接口传输技术领域,具体来说,涉及一种api接口加密签名方法。


背景技术:

2.web服务器的接口一般都是通过http或https方式进行请求的,get和post是http请求的两种基本方法,get采用明文的方式把参数包含在url中,post通过requestbody传递参数,使用抓包软件能够直接抓取到请求的url及请求参数,只要通过抓包软件就能轻松的获取到用户数据,从而导致用户数据有被窃取的风险,只要能拿到请求的url及参数,就能模拟用户发起请求,也可以对请求参数进行任意修改,这会导致用户数据有被篡改的风险,同时也可以利用抓取到的url及参数对服务器发起恶意攻击,造成服务器瘫痪。
3.目前,常见的基于http协议的请求/响应(request or response)都是可以被截获的、篡改、重放(重发)的。部署在广域网的应用程序,可以根据ip或域名扫描应用程序的所有暴露的接口,进而分析参数,注入程序,第三方可能利用网络监听或者其他方式盗取接口数据,不断恶意或欺诈性地重复一个有效的api请求,因此存在安全系数较低的问题。
4.针对相关技术中的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.针对相关技术中的问题,本发明提出一种api接口加密签名方法,以克服现有相关技术所存在的上述技术问题。
6.本发明的技术方案是这样实现的:
7.一种api接口加密签名方法,包括以下步骤:
8.步骤s1,预先获取接口传输的params进行深拷贝,并删除空属性;
9.步骤s2,进行添加特定属性,组成对象转成字符串,并去除特殊字符;
10.步骤s3,按ascii(美国信息交换标准代码,american standard code for information interchange)码进行排序;
11.步骤s4,将得到的字符串进行md5(md5 message-digest algorithm,md5信息摘要算法)加密,加入headers中进行传输给接口提供方,其中,所述headers至少包括第一sign值;
12.步骤s6,接口提供方接收响应后进行验签。
13.其中,所述接口提供方接收响应后进行验签,包括以下步骤:
14.步骤s601,接口提供方接收请求参数,并对请求参数加密后获取第二sign值,其中,包括:
15.步骤s602,若当前第一sign值和当前第二sign值相同,则当前请求参数未被篡改,允许访问。
16.其中,所述接口提供方接收响应后进行验签,包括以下步骤:
17.步骤s601,接口提供方接收请求参数,并对请求参数加密后获取第二sign值,其
中,包括:
18.步骤s603,若当前第一sign值和当前第二sign值不相同,则当前请求参数被篡改,请求无效。
19.其中,所述进行添加特定属性,包括:token、key、authorization和request id中的一种或多种组合。
20.其中,所述组成对象转成字符串,包括以下步骤:
21.步骤s201,添加key和添加token,以及添加时间戳与随机数拼装的request id。
22.其中,所述添加key,包括以下步骤
23.步骤s202,接口调用方和接口提供方预先约定参数加密算法。
24.其中,所述接口提供方接收响应后进行验签,还包括以下步骤:
25.步骤s604,接口提供方验证当前时间戳是否在允许的时间范围内,接口是否被多次重放,其中,包括以下步骤:
26.步骤s605,若当前时间戳在允许的时间范围内,接口未被多次重放,则允许访问;
27.步骤s606,若当前时间戳未在允许的时间范围内,接口存在多次重放,则请求无效。
28.本发明的有益效果:
29.本发明api接口加密签名方法,通过预先获取接口传输的params进行深拷贝,并删除空属性,再进行添加特定属性,组成对象转成字符串,并去除特殊字符,并按ascii码进行排序,将得到的字符串进行md5加密,加入headers中进行传输给接口提供方,接口提供方接收响应后进行验签,实现接口加密签名,不仅防伪装攻击,可防止第三方恶意调用接口,签名保证了信息的来源可靠性,同时防篡改攻击,避免接口请求头或查询字符串或内容等,在传输过程被修改,另外,防重放攻击,防止请求被截获,稍后被重放或多次重放,当在身份认证过程中,可能发生的重放已接受过的数据,以达到欺骗系统的目的,且加密保证数据的安全性,保证在接口数据传输过程中的信息安全。
附图说明
30.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
31.图1是根据本发明实施例的一种api接口加密签名方法的流程示意图。
具体实施方式
32.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
33.根据本发明的实施例,提供了一种api接口加密签名方法。
34.如图1所示,根据本发明实施例的api接口加密签名方法,包括以下步骤:
35.步骤s1,预先获取接口传输的params进行深拷贝,并删除空属性;
36.步骤s2,进行添加特定属性,组成对象转成字符串,并去除特殊字符;
37.步骤s3,按ascii码进行排序;
38.步骤s4,将得到的字符串进行md5加密,加入headers中进行传输给接口提供方,其中,所述headers至少包括第一sign值;
39.步骤s6,接口提供方接收响应后进行验签。
40.借助于上述方案,为了保证api调用时数据的安全性,接口调用方和接口提供方约定好统一的参数加密算法,加密使数据无法被正确识别,而签名用来确保数据未被修改。通过为接口加签,在数据提交之前进行预签名,放在headers中进行传输,加签算法按照一定的约定格式,添加特定属性,保证了信息来源的可靠性,防止了第三方的伪装攻击。
41.另外,所述接口提供方接收响应后进行验签,包括以下步骤:
42.步骤s601,接口提供方接收请求参数,并对请求参数加密后获取第二sign值。
43.本技术方案,放到headers里的第一sign值中与需要传递的参数传给接口提供方。接口提供方接到响应后,进行验签,使用同样的方式对请求参数也进行加密得到第二sign值,具体如下:
44.步骤s602,若当前第一sign值和当前第二sign值相同,则当前请求参数未被篡改,允许访问。
45.步骤s603,若当前第一sign值和当前第二sign值不相同,则当前请求参数被篡改,请求无效。
46.借助于上述方案,若当前第一sign值和当前第二sign值相同,就说明参数没有被篡改,达到安全的请求后台,保证了服务端和客户端的身份。
47.其中,所述进行添加特定属性,包括:token、key、authorization和request id中的一种或多种组合。
48.其中,所述组成对象转成字符串,包括以下步骤:
49.步骤s201,添加key和添加token,以及添加时间戳与随机数拼装的request id。
50.其中,所述添加key,包括以下步骤
51.步骤s202,接口调用方和接口提供方预先约定参数加密算法。
52.其中,所述接口提供方接收响应后进行验签,还包括以下步骤:
53.步骤s604,接口提供方验证当前时间戳是否在允许的时间范围内,接口是否被多次重放。
54.本技术方案,由时间戳与随机数拼装成的request id,每次接口请求的request id都不一样,接口提供方验证时间戳是否在允许的时间范围内,判断接口是否被多次重放,具体如下:
55.步骤s605,若当前时间戳在允许的时间范围内,接口未被多次重放,则允许访问;
56.步骤s606,若当前时间戳未在允许的时间范围内,接口存在多次重放,则请求无效。
57.综上所述,借助于本发明的上述技术方案,通过预先获取接口传输的params进行深拷贝,并删除空属性,再进行添加特定属性,组成对象转成字符串,并去除特殊字符,并按ascii码进行排序,将得到的字符串进行md5加密,加入headers中进行传输给接口提供方,
接口提供方接收响应后进行验签,实现接口加密签名,不仅防伪装攻击,可防止第三方恶意调用接口,签名保证了信息的来源可靠性,同时防篡改攻击,避免接口请求头或查询字符串或内容等,在传输过程被修改,另外,防重放攻击,防止请求被截获,稍后被重放或多次重放,当在身份认证过程中,可能发生的重放已接受过的数据,以达到欺骗系统的目的,且加密保证数据的安全性,保证在接口数据传输过程中的信息安全。
58.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,本领域技术人员在考虑说明书及实施例处的公开后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
59.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1