一、解决问题:
- 请求身份是否合法?
- 请求参数是否被篡改?
- 请求是否唯一?
二、问题分析与处理
1.身份合法性保证:
clientid+secretkey方案
参数名 | 是否必须 |
---|---|
clientid | 开发者标识/应用标识 |
secretkey | 用于接口加密 |
为开发者分配clientid(开发者标识,确保唯一)和secretkey(用于接口加密,确保不易被穷举,生成算法不易被猜测)
2.请求被篡改防护:预防请求被中途篡改的隐患
参数签名方案
- 按照请求参数名的字母升序排列非空请求参数(包含clientid),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA;
- 在stringA最后拼接上secretkey得到字符串stringSignTemp;
-
对stringSignTemp进行MD5运算,并将得到的字符串所有字符转换为大写,得到sign值。
请求携带参数clientid和sign,只有拥有合法的身份clientid和正确