[发明专利]一种API接口防止重放攻击的方法有效
申请号: | 202110676518.7 | 申请日: | 2021-06-18 |
公开(公告)号: | CN113382011B | 公开(公告)日: | 2023-03-24 |
发明(设计)人: | 张秀良;程炳华;张芯苑 | 申请(专利权)人: | 金陵科技学院 |
主分类号: | H04L9/40 | 分类号: | H04L9/40;H04J3/06;H04L9/32 |
代理公司: | 南京钟山专利代理有限公司 32252 | 代理人: | 李小静 |
地址: | 211169 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 api 接口 防止 重放 攻击 方法 | ||
1.一种API接口防止重放攻击的方法,其特征在于包含以下步骤:
第一步:接口请求时根据请求端的时间戳与服务器时间校准,计算差值供请求端做校准,保证请求端时间与服务器时间同步;
第二步:根据请求端的http请求框架设置接口超时时间为30秒,接口请求时间为t1,服务器当前时间为t2,如果t1t2,则为非法参数的请求,若t2-t1=30秒,则接口超时,非法接口和超时接口的请求给予拒绝处理,当t2-t130秒,视为合法;
第三步:API接口请求端生成唯一时序码,时序码=时间戳+UUID+自增数+复位标志,其中自增数在单用户请求端每请求一次,接口的自增数都+1,以此保证相邻接口的自增数间隔为1,当自增数达到位数最大值,下一个请求自增数归0化处理,如果自增数差值运算中出现负值或者接近最大值的数,根据时间戳的单调性,用最大值做补偿运算从而计算出准确的自增数差值,因此在比较两个请求接口的时序码时,时间戳大的,自增数也大,成正比关系,而最新请求的接口,自增数和时间戳都是最大的,当服务器接收到的时序码的时间戳比缓存中的大,那么接收到的请求则为新的正常请求,这是由于加密验签,攻击者只能截获报文重放,无法创造新的请求,因此新的请求为正常请求,旧的请求则为疑似异常请求;
第四步:API接口请求端将时序码与用户id以及token组合验签码{时序码,token,用户id},将验签码进行加盐加密,通过对称加密生成密文放在请求参数中,和时间戳、ip、mac地址组成请求报文发送至服务端,服务端接收参数解密后,查看时序码中的时间戳与参数中的时间戳是否一致,token是否有效,以及当复位标志为1时检查时序码是否有效,如果校验失败,则定位本次请求为篡改的重放攻击,拒绝处理服务,如果校验成功则视为正常请求;
第五步:服务端初次接收请求创建状态码,用数组status表示,通过二进制左移插入新状态位,左移过程中,最低位用0补齐,status[i+1]的低位用status[i]的高位补齐,以此达到status的所有状态码的整体左移,通过位运算获取其中某个状态位的值来判断对应接口的处理状态;
第六步:解析API请求接口的时序码,提取时间戳和自增数以及复位标志,复位标志为1则初始化状态码,并清除时序码的缓存,计算自增数差值N=新请求自增数-服务器缓存时序码中的自增数,并根据时间戳单调性做N的补偿运算,若N0,则请求时序码中时间戳段大于服务器缓存的时间戳段,该请求为最新请求属于正常请求,此时将status的二进制状态码整体左移N位,低位用0补齐,高位移出的视为状态位自动清理,更新第1位状态值为1,并将更新后的状态码status全部缓存下来,同时用最新接口的时序码替换旧的缓存下来;若N=0,新请求的时序码与服务器缓存的时序码一致,为重放攻击,拒绝处理;若1-Max=N0,则新请求的时序码中时间戳段小于服务器缓存的时间戳段,查看第1-N位状态,若值是0,则说明该请求由于网络异常或中间路由异常,请求滞后收到,为正常请求,更新第1-N位状态值为1,并将更新后的状态码status全部缓存下来,时序码不做更新缓存操作,反之,如果第1-N位状态值是1,则说明该时序码对应的首次请求已收到并处理,该请求为重放攻击,拒绝处理;
第七步:若N1-Max,说明在时间戳有效期内的请求已击穿二进制状态码位数的阈值,这种极端场景下,通过下发接口响应特殊错误码,请求端回调中针对此响应错误码自动拦截并触发请求的重发机制,此时新的请求时序码和时间戳为最新,将顺利通过第六步,完成接口请求处理,同时服务系统触发扩容机制,将状态码位数容量增加一倍,以此达到系统服务的自平衡,二进制状态码左移中高位移出的状态位不做处理,实现过期状态位的自动清理,无需服务去处理。
2.根据权利要求1所述的一种API接口防止重放攻击的方法,其特征在于:所述的步骤三中复位标志,0为不复位,1为复位,其目的是为了当API接口请求端的缓存被人为清理或丢失,自增数从零计数,服务端状态码可通过复位标志重新初始化,并清除时序码缓存,以免造成正常请求无法访问。
3.根据权利要求1所述的一种API接口防止重放攻击的方法,其特征在于:所述的步骤四中复位标志为1时的时序码校验是否有效,是利用最近复位时序码的判重以及剔除先于复位前旧时间戳的时序码,可规避带复位状态接口请求制造的重放攻击。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于金陵科技学院,未经金陵科技学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110676518.7/1.html,转载请声明来源钻瓜专利网。