偶然的错误发现一个bug,引人深思的null
2015-07-09 10:23
351 查看
今天测接口的时候 很偶然的发现一个bug,先交代下游戏接口
游戏战斗时会发送uid和登录token回去,这时候会返回一个参数叫storykey
发送uid,token,返回storykey,战斗结果加上storykey再发回去,这是一次战斗流程,storykey只能被使用一次。
然后我写代码的时候不小心多加了个引号,导致uid多了个引号,这样token和uid就对不起来了,服务器提示token错误,然后再发战斗结果和storykey(这个时候为null)回去,竟然返回了正确的战斗结果,更可怕的是,这个接口可以重复的使用,也就是达到重复战斗的目的
bug原理:
没获取storykey 然后storykey就等于Null。 用null 然后md5加密一个32位字符串 同样 因为获取storykey时候 key is wrong.所以服务器这边的storykey没有。 那也是null. 然后我拿一个null拼上战斗结果 加密。。 正好等于发过来的。 然后把storykey删除以后,下次发过来还是null 所以还能提交战斗。
游戏战斗时会发送uid和登录token回去,这时候会返回一个参数叫storykey
发送uid,token,返回storykey,战斗结果加上storykey再发回去,这是一次战斗流程,storykey只能被使用一次。
然后我写代码的时候不小心多加了个引号,导致uid多了个引号,这样token和uid就对不起来了,服务器提示token错误,然后再发战斗结果和storykey(这个时候为null)回去,竟然返回了正确的战斗结果,更可怕的是,这个接口可以重复的使用,也就是达到重复战斗的目的
bug原理:
没获取storykey 然后storykey就等于Null。 用null 然后md5加密一个32位字符串 同样 因为获取storykey时候 key is wrong.所以服务器这边的storykey没有。 那也是null. 然后我拿一个null拼上战斗结果 加密。。 正好等于发过来的。 然后把storykey删除以后,下次发过来还是null 所以还能提交战斗。
相关文章推荐
- POJ 3673:Cow Multiplication
- 学堂在线c++进阶 编程题10-3
- mysql日志设置
- 批处理taskkill运行结束不掉程序以及停留问题
- 各种编码的由来及编码见转换
- 完整类库列表struts2.0
- jquery插件封装
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站
- 安卓动态调试方法
- 如何让你的Apache支持include文件解析和支持shtml的相关配置
- volatile 是啥
- 算法基础:正整数指定规则排序问题(Golang实现)
- 其原因可能是堆被损坏 这说明exe中或它所加载的任何 DLL 中有 Bug
- 编写websocket时需要导入包
- VS2013 GDI+显示png
- 小型倒计时定时器:innerText的浏览器兼容问题
- 简单运行Nginx + PHP
- Android批量图片加载经典系列——afinal框架实现图片的异步缓存加载
- RTMP协议抓包详解
- 查看Android系统给APP分配的最大堆栈