接口运行环境为互联网环境,接口安全尤为重要,我们设计三个机制保障接口数据安全。
第三方单位需要向地环总站申请对接appKey客户端系统编码和授权码password(签名时使用),总站根据业务需要设置是否开启IP地址绑定,授权时间可以永久授权,可以选择时间段授权。服务端接收到请求后进行appKey验证,如果appKey不存在,说明请求无效。如果存在进步验证IP地址是否匹配。
客户端每次请求都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,如果时间差大于一定时间( 比如2分钟 ),则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段,防止参数重复使用。
-
- API签名机制
将appKey + nonce + timestamp + password采用MD5算法签名,得到的数据就是本次请求的签名signature,服务端接收到请求后以同样的算法得到签名,并跟当前的签名进行比对,如果不一样,说明参数被更改过,直接返回错误标识。签名机制保证了数据不会被篡改。
1.4 接口参数校验
为了保证系统安全性,健壮性,参数校验必不可少,校验参数的合法性不能因为前端或者其他第三方调用因参数传的不对导致我们的系统报错甚至崩溃。一般都是在接口层面,对传入的参数进行校验,对于Controller接口参数校验,requestBody参数校验使用Bean Validation校验注解、方法级别的校验使用Validated校验注解。例如日期时间格式,数值范围等。