为了账号安全,请及时绑定邮箱和手机立即绑定

C#验证APP提交过来的KEY

C#验证APP提交过来的KEY

慕哥6287543 2018-12-06 17:06:56
做一个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只能用一次等等...

希望你满意.

查看完整回答
反对 回复 2019-01-21
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

时间戳这个也太短了吧,网络一延迟就过了。取1,2,3,4,5分钟靠谱。取上一分钟的时间,抹掉秒豪秒

查看完整回答
反对 回复 2019-01-21
?
aluckdog

TA贡献1847条经验 获得超7个赞

那始终还是要FOR循环一个一个MD5了后比较了?

查看完整回答
反对 回复 2019-01-21
?
ibeautiful

TA贡献1993条经验 获得超5个赞

这种技术经理.我只能说呵呵..实在看不出来这种东西对安全性有什么帮助

还"只要误差在30秒内的都是正确的请求" 哈希第一要素:不能逆运算.你前后60秒全md5然后一个一个对比?

如果说用https或者直接自己做ssl通讯.或者自己做加密通道.都算提高安全性.

这种是真不明白什么叫安全的

查看完整回答
反对 回复 2019-01-21
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

所有接口都要求用户登录就吧.比较靠谱.因为这种东西是做不到的.只能说挡挡那些做测试的.正要用你这个做事情的.是一定能请求到的.按你这种方式.

查看完整回答
反对 回复 2019-01-21
  • 6 回答
  • 0 关注
  • 599 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信