项目中对外暴露的http接口的安全性如何保证
1 接口提供方,在header中添加clientId,用于标识调用方来源
2 接口提供方,请求参数body中添加公共参数:nonce随机值,可以用来防重,比如访问过一次,下次直接拦截、timestamp用来进行请求时间的校验,比如超过30秒的请求直接拦截,sign: 加密串
3 对body,进行加密,加密方式可以参考以下,这一步主要是为了防止参数被篡改
sign 签名规则:接口需要参数按照字母自然排序,和secretKey参数使用:“:” 号进行拼接,在进行MD5加密的值则为sign参数值
例子:
1.请求参数:{"b":"001", "c": "002", "a": "003", "nonce": "005", "timestamp": 1716967553000}
2.secretKey值:eR3GwiFc5PjR7EK(由提供方颁发,需要与clientId进行匹配,使用方应妥善保存不可泄露)
3.接口需要参数按照字母自然排序后请求参数值:{"a":"003","b":"001","c":"002","nonce":"005","timestamp":1716967553000}
4.生成加密的字符串:{"a":"003","b":"001","c":"002","nonce":"005","timestamp":1716967553000}:eR3GwiFc5PjR7EK
5.进行MD5加密后sign参数值:3cb63afbc51f0f5311a5f5fe2053c000
6.讲加密后的字符串,作物入参里的sign值,进行传递