本发明涉及防篡改和防爬虫攻击的技术领域,具体涉及一种隐藏于标准http明文消息头的校验方法。
背景技术:
http接口校验是一种非常重要的防篡改和防爬虫攻击的技术手段。传统的常用的校验方式包括增加请求校验字段、使用content-md5头等方式,这些技术手段存在一些个明显的缺点:1、额外的字段增加了请求的数据体积,带来了额外的带宽负担,对于高频接口调用会影响接口吞吐率;2、使用了明确的校验字段名,攻击者可轻松猜出接口使用了校验技术、轻松提取校验数据样本进而做针对性攻击方案。
技术实现要素:
针对现有技术的不足,本发明的目的旨在提供一种隐藏于标准http明文消息头的校验方法,能够有效降低额外的数据体积、增强攻击者成本、提高数据传输安全性,具有很好的推广实用价值。
为实现上述目的,本发明采用如下技术方案:
一种隐藏于标准http明文消息头的校验方法,应用于客户端与服务器端http交互场景下api接口的校验,其中,所述方法具体包括:
s1:客户端发起http交互场景下的api接口的校验请求;
s2:api接口请求方对请求地址、请求参数进行组装处理获得第一校验数据;
s3:并根据第一校验数据,根据已设定好的规则获得随机数、第二校验数据和第三校验数据;
s4:将第三校验数据写入标准http头,作为最终校验数据,传送给服务器端;
s5:服务器端收到处理之后的http头数据,从http头数据中分离出第三校验数据、第二校验数据和随机数;并根据请求地址和请求参数计算获得新第一校验数据、新第二校验数据和新第三校验数据;
s6:判断第三校验数据和新第三校验数据是否相同;
若相同,则检验通过,若不相同,检验不通过,则判断为非法进入,予以拦截。
进一步地,所述生成第一校验数据的方法,具体为:
api接口请求方对请求地址、请求参数使用常规的hash算法获得一个定长的10进制编码的hash数据,被称作第一校验数据。
进一步地,所述步骤s3的具体步骤为:
生成一个随机数,所述随机数满足以下条件:不小于0、不大于9且不大于当前毫秒时间数据位数且不大于第一校验数据的长度减1;
以随机数为下标,第一校验数据作为数组,取出第一校验数据中随机数位置及其下一位的数据,并转换为10进制数,作为第二校验数据;第二校验数据附加所述随机数,组成3位10进制数,作为第三校验数据。
进一步地,所述s5的具体步骤为:
在服务器端,将接收到的标准http头数据转化为毫秒时间戳数据,选取毫秒时间戳低三位作为第三校验数据;
从选取的第三校验数据中按位分离出2位的第二校验数据和1位的随机数;
使用与客户端相同的校验算法对接收到的请求地址和请求参数进行计算获得新第一校验数据,并根据所述新第一校验数据和分离出的随机数,获得新第二校验数据和新第三校验数据。
本发明的有益效果在于:
针对传统api接口校验存在的额外增加校验数据体积和使用明文字段传输校验位安全性低的缺点,本发明采用的校验方式不需要额外的数据校验字段,不会带来额外的流量负担;校验数据隐藏于正常请求报文数据字段中,不会显示地暴露校验字段和校验方法,极大的增加了攻击者的攻击成本。
附图说明
附图1为本发明校验方法流程图;
附图2为第一校验数据样例;
附图3为第一校验数据、第二校验数据和随机数之间的关系图;
附图4为第二校验数据、第三校验数据和随机数之间的关系图;
附图5为标准hppt中嵌入第三校验数据之后形成的最终校验数据。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
实施例一
如图1所示,一种隐藏于标准http明文消息头的校验方法,应用于客户端与服务器端http交互场景下api接口的校验,其中,所述方法具体包括:
客户端发起http交互场景下的api接口的校验请求,接收到请求之后,api接口请求方对请求地址、请求参数使用常规的hash算法获得一定数据长度的10进制编码的hash数据,称为第一校验数据,使用10进制表示的第一校验数据,如图2所示,10进制0-9属于一个数据长度,第一校验数据为至少一个数据长度的数组
生成一个随机数,这个随机数满足以下条件:不小于0、不大于9、且不大于当前毫秒时间数据位数、且不大于第一校验数据的数据长度减1;
本实施例中所生成的随机数为2,以数值为2的随机数为下标,第一校验数据作为数组,取出第一校验数据中随机数位置及其下一位的数据,本实施例中所取出的数据分别为第2位和第3位的数据,并将这个数据再次转换为10进制数,作为第二校验数据;第二校验数据附加随机数,组成3位的10进制数组,作为第三校验数据。如图3和图4所示,分别表示了第一校验数据、第二校验数据和随机数之间的关系;第二校验数据、第三校验数据和随机数之间的关系,图3和图4中的方格中的数据均代表是下标;
选取http数据中的日期数据作为标准http头,将第三校验数据写入标准http头,作为最终校验数据,如图5所示,为标准hppt中嵌入第三校验数据之后形成的最终校验数据,将最终校验数据传送给服务器端;
服务器端收到处理之后的标准http头数据,在服务器端,将接收到的标准http头数据转化为毫秒时间戳数据,选取毫秒时间戳低三位作为第三校验数据;
从选取的第三校验数据按位分离出2位的第二校验数据和1位的随机数;
服务器端使用与客户端相同的校验算法对接收到的请求地址和请求参数进行计算获得新第一校验数据;
服务器端利用计算所得的第一校验数据和随机数,使用与客户端相同的获取方式得到新第二校验数据和新第三校验数据,将获取的新第三校验数据和api接口请求方获取的第三校验数据对比,如果值相同,即校验通过;如果不同,即为非法访问,予以拦截丢弃。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
1.一种隐藏于标准http明文消息头的校验方法,应用于客户端与服务器端http交互场景下api接口的校验,其特征在于,所述方法具体包括:
s1:客户端发起http交互场景下的api接口的校验请求;
s2:api接口请求方对请求地址、请求参数进行组装处理获得第一校验数据;
s3:并根据第一校验数据,根据已设定好的规则获得随机数、第二校验数据和第三校验数据;
s4:将第三校验数据写入标准http头,作为最终校验数据,传送给服务器端;
s5:服务器端收到处理之后的http头数据,从http头数据中分离出第三校验数据、第二校验数据和随机数;并根据请求地址和请求参数计算获得新第一校验数据、新第二校验数据和新第三校验数据;
s6:判断第三校验数据和新第三校验数据是否相同;
若相同,则检验通过,若不相同,检验不通过,则判断为非法进入,予以拦截。
2.如权利要求1所述的一种隐藏于标准http明文消息头的校验方法,其特征在于,所述生成第一校验数据的方法,具体为:
api接口请求方对请求地址、请求参数使用常规的hash算法获得一个定长的10进制编码的hash数据。
3.如权利要求1所述的一种隐藏于标准http明文消息头的校验方法,其特征在于,所述步骤s3的具体步骤为:
生成一个随机数,所述随机数满足以下条件:不小于0、不大于9且不大于当前毫秒时间数据位数且不大于第一校验数据的长度减1;
以随机数为下标,第一校验数据作为数组,取出第一校验数据中随机数位置及其下一位的数据,并转换为10进制数,作为第二校验数据;第二校验数据附加所述随机数,组成3位10进制数,作为第三校验数据。
4.如权利要求1所述的一种隐藏于标准http明文消息头的校验方法,其特征在于,所述s5的具体步骤为:
在服务器端,将接收到的标准http头数据转化为毫秒时间戳数据,选取毫秒时间戳低三位作为第三校验数据;
从选取的第三校验数据中按位分离出2位的第二校验数据和1位的随机数;
使用与客户端相同的校验算法对接收到的请求地址和请求参数进行计算获得新第一校验数据,并根据所述新第一校验数据和分离出的随机数,获得新第二校验数据和新第三校验数据。