C#验证APP提交过来的KEY

做一个APP项目 ,接口用C#输出JSON,BOSS要求安全性要高,技术经理给了个解决方案:

APP客户端每调用我的C#接口都会传一个KEY进来,KEY=MD5(时间戳),在C#接口端验证这个KEY,只要误差在30秒内的都是正确的请求,

这样的话我在C#这边是不是从接口被调用的时间开始,前15秒和后15秒,每秒都算一次MD5(时间戳),然后再与客户端传进来的KEY比较,只要有一个是相同的,那就是验证通过了,如果没有一个KEY是相同的,那就是接口请求失败!!!

 

这个思路对不对?有没有更简单的方法 ?

慕哥6287543
浏览 601回答 6
6回答

MYYA

谈谈我的理解. 参数拼接+Key然后生成md5(也就是签名). 最终提交给服务器的是 参数+timestamp时间戳+key+md5签名. 服务器再把除了md5签名的数据加密得到另一个签名,比对两个签名是否正确,以判断参数是否被篡改. 如果没被篡改,请往下看. 得到参数中的时间戳,判断此时间和服务器时间的差,如果大于比如5分钟,服务器可以认定此请求过期,不予处理. 安全性:每次请求都校验签名,防止数据被篡改;时间戳判断请求是否过期;每次请求都有新的时间戳,保证一个url只能用一次等等... 希望你满意.

收到一只叮咚

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

aluckdog

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

ibeautiful

这种技术经理.我只能说呵呵..实在看不出来这种东西对安全性有什么帮助 还"只要误差在30秒内的都是正确的请求" 哈希第一要素:不能逆运算.你前后60秒全md5然后一个一个对比? 如果说用https或者直接自己做ssl通讯.或者自己做加密通道.都算提高安全性. 这种是真不明白什么叫安全的

小唯快跑啊

所有接口都要求用户登录就吧.比较靠谱.因为这种东西是做不到的.只能说挡挡那些做测试的.正要用你这个做事情的.是一定能请求到的.按你这种方式.
打开App,查看更多内容
随时随地看视频慕课网APP