做一个APP项目 ,接口用C#输出JSON,BOSS要求安全性要高,技术经理给了个解决方案:
APP客户端每调用我的C#接口都会传一个KEY进来,KEY=MD5(时间戳),在C#接口端验证这个KEY,只要误差在30秒内的都是正确的请求,
这样的话我在C#这边是不是从接口被调用的时间开始,前15秒和后15秒,每秒都算一次MD5(时间戳),然后再与客户端传进来的KEY比较,只要有一个是相同的,那就是验证通过了,如果没有一个KEY是相同的,那就是接口请求失败!!!
这个思路对不对?有没有更简单的方法 ?
6 回答
MYYA
TA贡献1868条经验 获得超4个赞
谈谈我的理解.
参数拼接+Key然后生成md5(也就是签名).
最终提交给服务器的是 参数+timestamp时间戳+key+md5签名.
服务器再把除了md5签名的数据加密得到另一个签名,比对两个签名是否正确,以判断参数是否被篡改.
如果没被篡改,请往下看.
得到参数中的时间戳,判断此时间和服务器时间的差,如果大于比如5分钟,服务器可以认定此请求过期,不予处理.
安全性:每次请求都校验签名,防止数据被篡改;时间戳判断请求是否过期;每次请求都有新的时间戳,保证一个url只能用一次等等...
希望你满意.
ibeautiful
TA贡献1993条经验 获得超5个赞
这种技术经理.我只能说呵呵..实在看不出来这种东西对安全性有什么帮助
还"只要误差在30秒内的都是正确的请求" 哈希第一要素:不能逆运算.你前后60秒全md5然后一个一个对比?
如果说用https或者直接自己做ssl通讯.或者自己做加密通道.都算提高安全性.
这种是真不明白什么叫安全的
- 6 回答
- 0 关注
- 636 浏览
添加回答
举报
0/150
提交
取消