2011-03-18 79 views
0

想象一下,一个玩家的游戏,它由多个测试组成。在完成所有测试后,玩家可以选择将结果上传到服务器 - 获得最佳结果的玩家将赢得大奖。服务器需要能够验证结果数据,以确定它是否被黑客入侵,甚至是垃圾邮件。有关如何强大实施的想法?安全的数据加密和验证

回答

4

基本上你不行。甚至没有加密,代码混淆或其他任何东西。 “永远不要相信客户”!

确保不涉及操纵的唯一方法是让服务器上的每一点游戏逻辑都暴露给用户。然后,您可以将玩家发出的命令(击键,按钮点击等)发送到服务器,在那里验证它们(即使这并不那么容易!),处理所有必要的游戏逻辑并发回结果。

如果您的游戏涉及与时间相关的任何事情,当然这是不可行的,因为对于每个玩家的行动,都会有一个延迟,直到玩家获得结果并看到效果。

对于大多数游戏来说,所有这些都是矫枉过正,你只是确保它们很难操纵。

+2

详细说明为什么它不起作用,除非游戏运行在服务器端:如果您让应用程序能够将可信数据发送回服务器,然后将应用程序交给玩家,玩家能够将可信数据发送回服务器。所以,你通过授权他们向你发送信任的数据来打击不信任的玩家,这显然是行不通的。 – 2011-03-18 17:37:08

+0

+1“永远不要相信客户”! – MByD 2011-03-19 02:55:59

0

反黑客工具可以无休止地复杂化服务器和客户端之间的通信,混淆内存和例程,每次运行时都会自行修改,等等。

问题是,大多数反黑客工具经常被黑客攻击,如果奖品足够大,你的攻击可能也会如此。即使rootkit也可以扎根。更不用说这种行为看起来像病毒一样,它会引发警钟,并可能最终导致许多沮丧的前客户。

如果是像iPhone这样的围墙花园,我相信有一些工具可以确保手机没有越狱,我不确定它们是否会被愚弄,但是这仍然会导致任何人都可以解码通信的问题并从完全上传自己的东西。

+0

好的,但如果我们要务实,并且设定我们的目标是简单地阻止适度的黑客(意识到任何拥有足够工具和专业知识的人将不可避免地绕过任何安全措施),那么如何继续? – smokeAndMirrors 2011-03-20 14:54:52

+0

一个约束是保存的结果不能完全加密 - 游戏需要能够加载它们。我可能会追加一个任意长度和格式的数据块。某种类型的关键字,用于标识结果中的数据,并由特定用户在特定日期使用结果中所述的参数有效生成。 – smokeAndMirrors 2011-03-20 15:03:46