系统逻辑安全
这块与其说是安全性测试,倒更像是一些经验分享,比如:
账号UID过长,超过了int最大值导致写不进数据库表,当数据加载时出错
二次确认
- 游戏里涉及到高价值物品的操作,都要有二次确认,后台还要做好流转的记录;
- 判断一个行为是否可行之后,在实际真正执行的时候,还要在服务端重新判断一次;
执行顺序
在类似上交物品获得奖励这样的流程,代码逻辑上一定要先扣除物品,判断扣除成功后再给予奖励。因为如果先给奖励再扣除物品,如果扣除物品的接口报错了,玩家就可以重复上交刷奖励。
参数检查
很多编程的人,尤其是写C++的程序员都知道,参数初始化可以说是不成文的一条规定。在游戏逻辑过程中也需要再啰嗦地提醒下这一点,因为一个未初始化的参数,你不知道它会对整个逻辑流程造成怎样的影响,一个不小心就是整个游戏世界的崩塌。
还有就是参数检查,随着游戏逻辑越来越复杂,函数之间传递的参数就越容易出现各种错误,或者有些是外挂刻意修改发送过来的。所以逻辑中对常见的传参错误一定要有严谨的对待,最简单的传了一个空参数,脚本会报错,而一旦报错就会导致某个功能不能正常使用下去了,因为逻辑被中断了。还有就是传递一些异常的字符,比如该传正数的,传了个负数,该传数字的传了个字母,更可怕的把一些程序关键字甚至是SQL语句作为参数传过来,调动了其他的逻辑。比如《月影传说网络版》曾今就出现一个玩家,起名是“/script”,而好死不死地服务端又一直用玩家角色名作为关键词,每次这个玩家上线的时候,服务端都会出现异常。