我正在开发Flash游戏的后端,我需要保护进入记分板的数据。
游戏将在横幅广告中的许多网站上托管,用户将在广告中播放游戏,然后点击进入主网站以保存其详细信息。
目前我正在思考这个问题
上次我检查FLash不发送引用信息,这有点投入扳手进入我的计划。那么,这种Flash /数据库交互是否已经建立了模式?
我应该在第4步中使用哪种Hashing / Checksuming?这种操作的正确名称是什么,是哈希,校验和还是别的什么?
我理解作为一种客户端技术,Flash实际上永远不会那么安全,但在我看来,像上面这样的东西就像你要破解这种应用程序一样困难。
更新:我的主要目标是让人们更难找到将分数添加到数据库的脚本的URL,并简单地用假分数将其垃圾邮件发送。
谢谢, 格雷格
答案 0 :(得分:2)
基本上你不想验证分数是来自合法的客户,你要验证客户端实际上是在玩游戏来达到分数。基本上你可以期待的最好的是人们被要求创建一个AI来玩游戏。
您可以尝试以下几种方法:
答案 1 :(得分:1)
我之前曾在游戏行业工作过,并且沿着这些方向做了些什么。据我所知,没有人打扰过分数提交部分。
它的做法是:
注意: 散列/校验是使用自定义函数进行的。不需要非常安全的东西。它是使用盐和分数计算得出的。一些简单的数学运算,如求和,乘法和减法。
编辑:校验和的简单算法/数学
假设您的用户得分 5885 您生成一个随机数作为 134789 的盐(常量长度,填充0)
cryptedScore = 得分 * Salt (你应该在这里使用更复杂的东西,但这只是一个例子)
在我们的示例中,加密分数为: 793233265
现在对于校验和,我们假设你想要一个 253 的值作为校验和。
你加上你的加密分数的所有数字7 + 9 + 3 + 2 + 3 + 3 + 2 + 6 + 5 = 40
现在,您计算此分数的校验和值 253 - (加密分数的总和% 253 )
现在,我们有以下数字:
盐= 134789
加密分数= 793233265
校验和= 40
您向服务器发出请求,发送 134789793233265040 作为分数。
在得分服务器上,您可以将 793233265 除以 134789 ,并提供 5885 ,并使用与之前相同的功能验证校验和。
如果校验和失败,则数字已被篡改。
你最终可能会得到更安全的东西,但它应该可以解决问题。