一种支持REST API防篡改防重放的方法技术

技术编号:16761027 阅读:724 留言:0更新日期:2017-12-09 05:08
本发明专利技术公开了一种支持REST API防篡改防重放的方法,包括:步骤1:API调用端向API服务端申请访问权限及签名密钥;步骤2:API调用端生成调用时间戳、随机数,请求参数以字典顺序排序加上系统请求头用申请的密钥对其进行签名;步骤3:服务端对API调用者身份进行检测,判断是否具备调用权限;步骤4:服务端使用相同密钥对请求参数及系统请求头按照相同规则进行签名,比对签名是否一样,防止参数被篡改;步骤5:服务端对API调用时间戳进行判断,判断是否超时;步骤6:服务端对随机数进行判重。本发明专利技术API调用者只需严格的保存好密钥,攻击者就无法伪造签名,无法篡改请求过程中的参数,达到了API安全访问目的。

A method to support REST API anti tampering and replay

The invention discloses a method for support REST API anti tamper, anti replay comprises the following steps: step 1:API calls to end API server application access authorization and signature key steps; 2:API call end generation call timestamp, random number, request parameters to the dictionary sort order plus system request to sign with the head of the application key; step 3: the server to detect API caller identity, whether have the call permissions; step 4: use the same key on the server and system request parameter request header signature in accordance with the same rules, than the signature is the same, to prevent Parameter Tampering; step 5: the server to judge API call time stamp, to determine whether the timeout step 6: server; random number of re judging. The API caller of the invention only needs to keep the key strictly, and the attacker can not forge the signature, and can not tamper with the parameters in the request process, so as to achieve the goal of API security access.

【技术实现步骤摘要】
一种支持RESTAPI防篡改防重放的方法
本专利技术涉及互联网WEBAPI安全领域,具体涉及一种RESTAPI防篡改防重放的方法。
技术介绍
在软件行业快速发展的今天,传统的软件架构已经不能满足一个IT类的公司的发展,应用的架构会越来越趋于简单化,架构越来越倾向于分布式水平扩展,对外的服务提供也会越来越SaaS化。在这种大背景下,很多公司都开始对外提供API服务。由于REST的简洁、轻量特性迅速成为流行方案之一,因为REST是基于HTTP的,而REST服务有跟标准的web应用一样的容易受攻击的倾向,并且REST没有预定义的安全方法,必须依靠开发人员定义自己的安全方法来维护资源调用。因此,我们提供一种RESTAPI防篡改防重放的方法保证API的安全。
技术实现思路
本专利技术提供了一种RESTAPI防篡改防重放的方法,能够保护RESTAPI遭受到恶意攻击。本专利技术主要采用客户端密钥、调用时间戳、随机数、请求参数等以HMAC-SHA256算法进行加密签名来防止攻击者利用网络监听或者其他方式篡改API请求参数以及进行API重放攻击。本专利技术是这样实现的:一种支持RESTAPI防篡改防重放的方法,包括如下步骤:步骤1:API调用端向API服务端申请访问权限及签名密钥;步骤2:API调用端生成调用时间戳、随机数(保证唯一),请求参数以字典顺序排序加上系统请求头用申请的密钥对其进行签名;步骤3:服务端对API调用者身份进行检测,判断是否具备调用权限;如是,则进入步骤四;如否,则调用失败;步骤4:服务端使用相同密钥对请求参数及系统请求头按照相同规则进行签名,比对签名是否一样,防止参数被篡改;如是,则进入步骤五;如否,则调用失败;步骤5:服务端对API调用时间戳进行判断,判断是否超时;如否,则进入步骤六;如是,则调用失败;步骤6:服务端对随机数进行判重,使用缓存机制,在有效时间内,随机数只能被使用一次,检查随机数是否被使用,防止重放攻击,如否,则调用成功,如是,则调用失败。更进一步的方案是:步骤1中,API调用端向API服务端申请访问权限及签名密钥,获得AppKey和AppSecret。更进一步的方案是:所述AppKey用于标识API访问者身份,AppSecret是用于加密签名字符串和服务器端验证签名字符串的密钥。更进一步的方案是:步骤2中,签名的具体步骤如下:步骤2.1:构造签名字符串,被签名字符串包括请求头以及请求参数用换行符\n进行分割,所有请求参数按照字典顺序进行排序,包括系统参数和自定义参数,;步骤2.2:用AppSecret作为HMAC-SHA256算法密钥对构造签名串进行签名,并把结果BASE64放在请求头里,请求头KEY为系统参数X-CH-Signature更进一步的方案是:所述系统参数包括X-CH-Key即AppKey、X-CH-Timestamp即时间戳、X-CH-Nonce即随机数UUID、X-CH-Signature即签名串。更进一步的方案是:步骤3中,服务端对API调用者身份进行检测,是将参数与签名头一起发送到API服务端,服务端根据AppKey查明API调用者身份是否合法。更进一步的方案是:步骤5中,时间戳判断是否超时以10min为准,超过10min,则超时。更进一步的方案是:步骤6的有效时间内,是指10min内。本专利技术的有益效果是:解决了API调用过程中,攻击者恶意篡改请求参数以及利用监听盗取的API进行重放攻击的问题。API调用者只需严格的保存好密钥,攻击者就无法伪造签名,从而无法篡改请求过程中的参数,达到了API安全访问的目的。附图说明图1是本专利技术的方法流程示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图对本专利技术做进一步地详细描述。如附图1所示,一种支持RESTAPI防篡改防重放的方法,包括如下步骤:步骤一:为调用端申请用户查询API权限,获取AppKey=11676533,AppSecret=a0a41ad0c8167a8ec3c9c384388f99e1;步骤二:构造签名串:请求参数以字典排序,加入需要签名的请求头结果如下:{X-CH-Key:11676533X-CH-Timestamp:1500538695596X-CH-Nonce:4cdbc040657a4847b2667e31d9e2c3d9/user?age=27&name=Jony};步骤三:用a0a41ad0c8167a8ec3c9c384388f99e1作为HMAC-SHA256算法密钥对签名串进行签名,并将结果BASE64处理得到签名头如下:{X-CH-Signature:n925IQHvLCYfyt13VOWnIlmLxatrjtYJDfbaiVe3Yp4=};步骤四:将参数与签名头一起发送到API服务端,服务端根据X-CH-Key:11676533查明API调用者身份是否合法步骤五:服务端根据X-CH-Key:11676533在数据库里查询该调用者密钥(AppSecret),用查询结果按照客户端构造签名串同样规则对请求参数以及请求头进行签名处理;步骤六:服务端比对自己签名是否与客户端发过来签名一样,如果发现签名串不一样,则请求参数被恶意篡改,丢弃该请求;步骤七:服务端比对签名一样后,根据服务器时间计算调用时间误差,若超过10分钟,则API请求不会被执行,返回重试;步骤八:服务端验证API调用在有效时间内,则对随机数进行判重。随机数可放在Redis缓存里面,设置失效时间为10分钟。若缓存中能够查询到本次请求的随机数,则本次请求为API恶意重放攻击,丢弃该请求;步骤九:服务端在缓存中未发现本次请求随机数,则将该随机数放入Redis缓存,API请求调用成功,随机数确保唯一。尽管这里参照本专利技术的解释性实施例对本专利技术进行了描述,上述实施例仅为本专利技术较佳的实施方式,本专利技术的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/62/201710686431.html" title="一种支持REST API防篡改防重放的方法原文来自X技术">支持REST API防篡改防重放的方法</a>

【技术保护点】
一种支持REST API防篡改防重放的方法,其特征在于包括如下步骤:步骤1:API调用端向API服务端申请访问权限及签名密钥;步骤2:API调用端生成调用时间戳、随机数,请求参数以字典顺序排序加上系统请求头用申请的密钥对其进行签名;步骤3:服务端对API调用者身份进行检测,判断是否具备调用权限;如是,则进入步骤四;如否,则调用失败;步骤4:服务端使用相同密钥对请求参数及系统请求头按照相同规则进行签名,比对签名是否一样,防止参数被篡改;如是,则进入步骤五;如否,则调用失败;步骤5:服务端对API调用时间戳进行判断,判断是否超时;如否,则进入步骤六;如是,则调用失败;步骤6:服务端对随机数进行判重,使用缓存机制,在有效时间内,随机数只能被使用一次,检查随机数是否被使用,防止重放攻击,如否,则调用成功,如是,则调用失败。

【技术特征摘要】
1.一种支持RESTAPI防篡改防重放的方法,其特征在于包括如下步骤:步骤1:API调用端向API服务端申请访问权限及签名密钥;步骤2:API调用端生成调用时间戳、随机数,请求参数以字典顺序排序加上系统请求头用申请的密钥对其进行签名;步骤3:服务端对API调用者身份进行检测,判断是否具备调用权限;如是,则进入步骤四;如否,则调用失败;步骤4:服务端使用相同密钥对请求参数及系统请求头按照相同规则进行签名,比对签名是否一样,防止参数被篡改;如是,则进入步骤五;如否,则调用失败;步骤5:服务端对API调用时间戳进行判断,判断是否超时;如否,则进入步骤六;如是,则调用失败;步骤6:服务端对随机数进行判重,使用缓存机制,在有效时间内,随机数只能被使用一次,检查随机数是否被使用,防止重放攻击,如否,则调用成功,如是,则调用失败。2.根据权利要求1所述支持RESTAPI防篡改防重放的方法,其特征在于:步骤1中,API调用端向API服务端申请访问权限及签名密钥,获得AppKey和AppSecret。3.根据权利要求2所述支持RESTAPI防篡改防重放的方法,其特征在于:所述AppKey用于标识API访问者身份,AppSecret是用于加密签名字符串和服务器端验证签名字符串的密钥。4.根据权利要求1...

【专利技术属性】
技术研发人员:白伟谌烜
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1