偶然的错误发现一个bug,引人深思的null

今天测接口的时候 很偶然的发现一个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  所以还能提交战斗。 
原文地址:https://www.cnblogs.com/tester-huang/p/4632365.html