php万能接口签名

时间:2024-03-09 10:12:12

现在php写接口越来越多,其实和php做网站没有太大区别,唯一比较大的区别就是在用户验证,和验证数据是否正确这一块有点不一样。在传统web开发中,严重用户信息直接session验证就可以。但是对于app接口,这种就不能实现。

所以在接口验证数据合法性和用户合法性这一块就需要注意。最简单的就是每次接口请求加一个签名。每次在服务端中验证签名是否正确,从而判断请求接口是否合法。下面来简单介绍一下签名思路。

 

1.定一个密钥,这个只有服务端和接口用户端能看见。

2.将请求的参数直接按照参数名进行排序。

3.进行md5加盟,或者其他加密

goods.php?sign=3232&goods_id=32&att_id=32

注意:

如果别人截取了你的请求,都可以使用这个接口来请求。为了解决这个问题,我们加一个时间戳,在指定的范围内才能请求成功,否则请求超时。

时间戳也要放在参数中进行一起md5加密,因为防止别人直接改时间戳,现在如果别人改时间戳,在服务端就验证失败

 

服务端验证:

1.密钥

2.将请求的参数直接按照参数名进行排序。

3.进行md5(请求参数+$_GET[\'time\']);只有这样才能防止时间戳是否被认为改动过

如果一直,则通过

 

还有一个问题,如果服务端的时间和客户端时间不一致,则会出现错误。所以客户端在获取时间戳这个,需要通过服务端提供的一个接口来返回服务端的时间戳,这样才能保证数据都完整