今天测接口的时候 很偶然的发现一个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 所以还能提交战斗。