在日常开发中,总会接触到各种接日。前后端数据传输接口,第三方业务平台接口。一个平台的前后端数据传输接口一般都会在内网环境下通信,而且会使甩安全框架,所以安全性可以得到很好的保护。这篇文章重点讨论一下提供给第三友平台的业务接口应当如何设计?我们应该考虑哪些问题?
主要从以上三个方面来设计一个安全的API接口。
一、安全性问题
安全性问题是一个接口必须要保证的规范。如果接口保证不了安全性,那么你的接口相当于直接暴露在公共环境中任人蹂躏。
1.1 调用接口的先决条件-token
获取token一般会涉及到几个参数appid,appkey,timestamp,nonce,sign。我们通过以上几个参数来获取调用系统的凭证。
appid和appkey可以直接通过平台线上申请,也可以线下直接颁发。appid是全局唯一的,每个appid将对应一个客户,appkey需要高度保密。
timestamp是时间戳,使用系统当前的unix时间戳。时间戳的的就是为了减轻DOS攻击。防止请求被拦截后一直尝试请求接口。服务器端设置时间戳阀值,如果请求时间戳和服务器时间超过阈值,则响应失败。
nonce是随机值。随机值主要是为了增加sign的多变性,也可以保护接口的幂等性,相邻的两次请求nonce不允许重复,如果重复则认为是重复提交,响应失败。
sign是参数签名,将appkey,timestamp,nonce拼接起来进行md5加密(当然使用其他方式进行不可逆加密也