接口加密实现
来源:互联网 发布:windows桌面插件api 编辑:程序博客网 时间:2024/06/16 08:55
3.接口参数加密+接口时效性验证(一般达到这个级别已经非常安全了)
继上一步,你发现有不明不白的人调用你的接口,你很不爽,随即把真正需要调用接口的人又叫来,告诉他们每天给他们换一把钥匙。和往常一样,有个别伙伴的钥匙被小偷偷走了,小偷煞费苦心,经过数天的踩点观察,准备在一个月黑风高的夜晚动手。拿出钥匙,捣鼓了半天也无法开启你的神圣之门,因为小偷不知道你天天都在换新钥匙。
小偷不服,经过一段时间琢磨,小偷发现了你们换钥匙的规律。在一次获得钥匙之后,不加思索,当天就动手了,因为他知道他手里的钥匙在第二天你更换钥匙后就失效了。
结果,小偷如愿。怎么破?先看这个场景的代码,然后继续往下看!
“`
///
/// 接口加密并根据时间戳判断有效性
///
///
[HttpGet]
[Route(“SecureBySign/Expired”)]
public HttpResponseMessage SecureBySign_Expired([FromUri]int age, long _timestamp, string appKey, string _sign)
{
var result = new ResultModel()
{
ReturnCode = 0,
Message = string.Empty,
Result = string.Empty
};
#region 判断请求是否过期---假设过期时间是20秒 DateTime requestTime = GetDateTimeByTicks(_timestamp); if (requestTime.AddSeconds(20) < DateTime.Now) { result.ReturnCode = -1; result.Message = "接口过期"; return GetHttpResponseMessage(result); } #endregion #region 校验签名是否合法 var param = new SortedDictionary<string, string>(new AsciiComparer()); param.Add("age", age.ToString()); param.Add("appKey", appKey); param.Add("_timestamp", _timestamp.ToString()); string currentSign = SignHelper.GetSign(param, appKey); if (_sign != currentSign) { result.ReturnCode = -2; result.Message = "签名不合法"; return GetHttpResponseMessage(result); } #endregion var dataResult = stulist.Where(T => T.Age == age).ToList(); result.Result = dataResult; return GetHttpResponseMessage(result); }
转载地址:http://www.cnblogs.com/codeon/p/6123863.html
- spring实现接口加密
- 接口加密实现
- java实现后端接口加密
- DES加密程序实现,UNIX/Linux的接口实现
- C#学习第十三天 实现多态:接口;MD5加密
- java代码实现加密解密(MD5签名(同步接口))
- python实现aes加密解密,RSA签名和验签,RSA加密解密,并调用接口
- python实现aes加密解密,RSA签名和验签,RSA加密解密,并调用接口
- MD4加密接口
- 加密数据传输接口
- 移动应用接口加密
- postman加密请求接口
- Python-接口加密
- 检测接口加密类
- 接口访问加密方式
- Api接口加密策略
- 编写ATL工程实现ActiveX控件调用cryptoAPI接口(二)------------信封加密与解密
- 编写ATL工程实现ActiveX控件调用cryptoAPI接口(三)------------AES对称加密与解密
- 水果忍者VR原型一
- 537_隐藏键盘
- Node.js模块和包
- ScrollView和ListView滑动冲突
- C语言变长参数
- 接口加密实现
- 我的路子
- C++ Primer Notes(14)
- 最小生成树
- iOS风格 年月日 选择器
- 使用DOM和java反射实现简单的SpringIOC
- 排序算法5
- opencv基础
- java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries