本发明涉及app安全技术领域,特别是一种php接口安全过滤方法及系统。
背景技术:
在internet大众化飞速演变的今天,应用安全所面临的挑战日益严峻。应用攻击技术越来越成熟和大众化,针对app的攻击和破坏不断增长,app安全风险达到了前所未有的高度,如非法的客户端请求、接口参数的不完整性、易力破解等风险。
技术实现要素:
为解决现有技术中存在的问题,本发明提供了一种php接口安全过滤方法及系统,具有更好的逻辑处理和安全效果处理,能一定程度上排解暴力接口破解、抓包攻击和参数篡改。
本发明采用的技术方案是:
一种php接口安全过滤方法,包括如下步骤:
a、接收用户客户端安装完成后发出的请求证书指令,生成适配该用户客户端的证书,其中,该证书包括用户客户端公钥和用户客户端私钥,将用户客户端公钥保存于服务器,将服务器公钥和用户客户端私钥发送至用户客户端用于接口通讯;
b、接收用户客户端发出的初始化指令,并在接收到初始化指令后向其发送唯一的口令,同时也将该口令保存于服务器;
c、接收用户客户端发出的加密数据包,该加密数据包包含通讯数据、签名和md5值,其中,通讯数据使用服务器公钥加密,签名使用客户端私钥加密,md5值根据口令计算得出;
d、解密用户客户端发出的加密数据包,读取服务器上相应口令,根据服务器上的口令再次计算md5值,并将该md5值与加密数据包中的md5值进行比对,如不相同,则表示加密数据包异常,丢弃该加密数据包;如相同,则进行步骤e;
e、使用用户客户端公钥解密加密数据包中的签名,如解密不成功,则表示加密数据包异常,丢弃该加密数据包;如解密成功,则进入步骤f;
f、使用服务器私钥解密加密数据包中的通讯数据,如解密不成功,则表示加密数据包异常,丢弃该加密数据包;如解密成功,则读取通讯数据。
优选地,在步骤c中:所述用户客户端发出的加密数据包中的md5值由用户客户端使用口令和当前时间戳计算生成;
在步骤d中:再次计算的md5值,由服务器上的口令和读取的加密数据包中的时间戳计算生成。
优选地,还包括如下步骤:
为所有的接口设置一一对应的序列号,将接口的序列队列保存于服务器上;
接收用户客户端的操作指令,将其调用接口的顺序与服务器上的序列队列对比,如遵循调用接口的序列逻辑,则表示数据为合法数据;如不遵循调用接口的序列逻辑,则表示数据为伪装数据。
一种php接口安全过滤系统,包括:
客户端模块:用于安装用户客户端并与服务器通过接口通讯,从服务器端获取服务器公钥、用户客户端私钥和唯一口令,并加密发送给服务器的数据包;
服务器:用于向客户端模块发送服务器公钥、用户客户端私钥和唯一口令,验证并解密客户端模块发送的数据包,调用序列队列验证客户端的操作;
序列模块:用于对所有的通讯接口配置一一对应的序列号,并将接口的序列队列发送到服务器。
优选地,客户端模块中服务器发送的加密数据包包含通讯数据、签名和md5值,其中,通讯数据使用服务器公钥加密,签名使用客户端私钥加密,md5值根据口令和时间戳计算得出;服务器验证数据包时,读取服务器上相应口令,根据服务器上的口令和读取的数据包时间戳再次计算md5值,并将该md5值与加密数据包中的md5值进行比对验证。
本发明的有益效果是:
1、使用动态密码验证有效性。
2、使用rsa签名以及动态资源证书加密请求包,确定参数的准确和完整。
3、使用逻辑流程接口id,验证用户使用流程以及频率处理。
附图说明
图1为本发明实施例1的流程示意图;
图2为本发明实施例2的结构示意图;
附图标记:1、客户端模块,2、服务器,3、序列模块。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例
如图1所示,一种php接口安全过滤方法,包括如下步骤:
a、接收用户客户端安装完成后发出的请求证书指令,生成适配该用户客户端的证书,其中,该证书包括用户客户端公钥和用户客户端私钥,将用户客户端公钥保存于服务器,将服务器公钥和用户客户端私钥发送至用户客户端用于接口通讯;
b、接收用户客户端发出的初始化指令,并在接收到初始化指令后向其发送唯一的口令,同时也将该口令保存于服务器;
c、接收用户客户端发出的加密数据包,该加密数据包包含通讯数据、签名和md5值,其中,通讯数据使用服务器公钥加密,签名使用客户端私钥加密,md5值根据口令计算得出;
d、解密用户客户端发出的加密数据包,读取服务器上相应口令,根据服务器上的口令再次计算md5值,并将该md5值与加密数据包中的md5值进行比对,如不相同,则表示加密数据包异常,丢弃该加密数据包;如相同,则进行步骤e;
e、使用用户客户端公钥解密加密数据包中的签名,如解密不成功,则表示加密数据包异常,丢弃该加密数据包;如解密成功,则进入步骤f;
f、使用服务器私钥解密加密数据包中的通讯数据,如解密不成功,则表示加密数据包异常,丢弃该加密数据包;如解密成功,则读取通讯数据。
优选地,在步骤c中:所述用户客户端发出的加密数据包中的md5值由用户客户端使用口令和当前时间戳计算生成;
在步骤d中:再次计算的md5值,由服务器上的口令和读取的加密数据包中的时间戳计算生成。
优选地,还包括如下步骤:
为所有的接口设置一一对应的序列号,将接口的序列队列保存于服务器上;
接收用户客户端的操作指令,将其调用接口的顺序与服务器上的序列队列对比,如遵循调用接口的序列逻辑,则表示数据为合法数据;如不遵循调用接口的序列逻辑,则表示数据为伪装数据。
例如用户a没有注册、没有登录,却使用摇一摇功能,可以判断信息为伪装传输。
本实施例的php接口安全过滤方法,将用户客户端私钥获取、唯一口令、口令结合时间戳的md5算法、接口的序列等多方面技术结合,相比于传统技术具有更好的逻辑处理和安全效果处理,能一定程度上排解暴力接口破解、抓包攻击和参数篡改。
实施例2
一种php接口安全过滤系统,包括:
客户端模块1:用于安装用户客户端并与服务器通过接口通讯,从服务器端获取服务器公钥、用户客户端私钥和唯一口令,并加密发送给服务器的数据包;
服务器2:用于向客户端模块发送服务器公钥、用户客户端私钥和唯一口令,验证并解密客户端模块发送的数据包,调用序列队列验证客户端的操作;
序列模块3:用于对所有的通讯接口配置一一对应的序列号,并将接口的序列队列发送到服务器。
优选地,客户端模块中服务器发送的加密数据包包含通讯数据、签名和md5值,其中,通讯数据使用服务器公钥加密,签名使用客户端私钥加密,md5值根据口令和时间戳计算得出;服务器验证数据包时,读取服务器上相应口令,根据服务器上的口令和读取的数据包时间戳再次计算md5值,并将该md5值与加密数据包中的md5值进行比对验证,如验证通过,则使用用户客户端公钥解密加密数据包中的签名,如解密成功,则再使用服务器私钥解密加密数据包中的通讯数据,如再次解密成功,则表示是合法数据包,读取通讯数据。
同时,每次收到接口通讯数据包时,服务器都对接口序列号进行验证,只有用户客户端调用接口的顺序符合逻辑才是合法数据,例如用户a没有注册、没有登录,却使用摇一摇功能,可以判断信息为伪装传输。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。