【问题标题】:How safe is "the future of browser gaming"?“浏览器游戏的未来”有多安全?
【发布时间】:2010-08-09 09:01:37
【问题描述】:

HTML5 将被广泛用作设计游戏的一种方式,这是预测。但我对此有疑问:在线 HTML5 游戏如何才能安全

让我给你举个例子:想象一下这个平台游戏,当你获胜时,你会获得徽章,例如,一个非常困难的关卡。当您实际赢得此徽章时,系统会向服务器发出请求,以更新您的在线个人资料。黑客发送这个请求并获得徽章,而不玩真正的游戏,这不是非常简单吗?因为:

  • 客户端源代码可见且无法隐藏
  • 可以从命令行执行 Javascript

我看不出有什么办法可以阻止这个黑客获得他的徽章……有什么办法可以保证这个游戏的安全吗?

【问题讨论】:

  • Flash 游戏也有同样的问题。相关(Flash):stackoverflow.com/questions/477258/…
  • 我看不出它与桌面游戏甚至主机游戏有什么本质上的不同。
  • @aib 本质区别在于数据是从服务器发送到服务器的,并且这些数据很容易被窃听。
  • @Pekka 和其他人:太好了,谢谢!看够了,没想到所有游戏都有这个问题!

标签: javascript security html


【解决方案1】:

是的,如果你这样设计你的游戏,它会很容易被破解。但为什么这是 HTML5 特有的呢?你可以用任何类型的游戏来做到这一点。即使使用原生桌面游戏,您仍然可以伪造请求。唯一的区别是伪造 HTTP 请求比逆向工程请求桌面游戏更容易。

解决方案是为胜利添加某种“验证”——实际算法会因游戏而异。也许让服务器在用户玩游戏时跟踪游戏的进度。例如,如果这是一场国际象棋游戏,您可以将每一个动作发送到服务器并验证这些动作以确保它们正确运行。不过,对于实时游戏来说,这会变得更加复杂。

但是无论你决定使用什么算法,它都会被打败。甚至我刚才提到的国际象棋验证也可以被绕过:您可以“创建”自己的有效国际象棋游戏,每次都将相同的移动发送到服务器,确保游戏有效。 (这是假设玩家与计算机对抗——让两个人互相对抗会使事情变得更容易。)

【讨论】:

  • 好的,谢谢... 在这个国际象棋游戏案例中,如果计算机充当裁判,接收移动,检查它们是否有效并检查当前游戏是否获胜,这将是安全的其中一名球员。但是要为基于平台的游戏打造这样的裁判更难......
  • @Harmen:是的,这就是为什么大公司花费数十万美元试图阻止黑客攻击他们的游戏的原因。这是不容易的。而且你的反作弊机制越复杂和强大,它就会变得越昂贵:使用更多的服务器资源,占用你更多的时间等等。
【解决方案2】:

它与任何基于 Flash 的游戏或具有可下载客户端的游戏(如魔兽世界)没有什么不同。任何对游戏公平性不可或缺的东西都必须在服务器上处理。

【讨论】:

【解决方案3】:

HTML5 更安全的一种方法是您可以随时更改它。因此,假设您有一个 AJAX 调用来为用户提供奖励。您可以定期更改此调用的签名,以便“作弊”不再起作用。请务必跟踪仍在使用旧 API 的玩家,您可以对使用作弊的玩家进行处罚。

不,这并不能解决您的所有问题,并且最精明的玩家可以通过多种方式解决此问题(取决于您的更改的详细程度),但它确实提供了一些解决此问题的方法,尤其是当您的游戏需要大量投资时。如果玩家觉得自己有可能被抓住,他们可能不愿意冒着进步的风险。只要确保你有一个明确的行为准则,详细说明作弊的惩罚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2016-10-22
    • 1970-01-01
    相关资源
    最近更新 更多