我正在开发一款拥有积分的安卓游戏。有一些获得积分的方法,其中之一是每天打开游戏。我想到了两种方法来实现它,但两者都有安全问题。
该应用程序的服务获取当前系统日期并检查此日期是否奖励;如果它没有奖励并将此日期写入数据库(假设此数据库已加密且无法更改其中的数据)。
问题:作弊者可以改变系统日期并一次又一次获得积分。
可能的保护方式:
假设我们想在00:00每天赚取奖金。当用户第一次开始游戏时(假设在20:00)计算奖励时间(4小时)之前剩余的时间。设定此时间的计时器(4小时)。当计时器熄灭奖励点并开始新的24小时,然后同样。
问题:设备可以重新启动,计时器将被销毁。因此,重新启动后我们需要首次重复算法:计算奖励时间之前剩余的时间并启动计时器。骗子可以将时间改为23:55并重启设备并获得积分;而不是一次又一次地做。
与第二种方式相同,但另外计时器每分钟(例如)将数据时间留给数据库,并在重新启动后恢复此值。
问题:我没有看到任何弱点,但它每24小时奖励积分,但不是每天都奖励积分。
全部......
顺便说一句:我已经测试了第一种与某些游戏作弊的方式,但它确实有效。但其他一些人受到保护。
我很乐意听到任何想法或建议。谢谢你的时间。