HTML5 将作为一种设计游戏的方式被广泛采用,这是预测。但我对此有疑问:在线 HTML5 游戏如何安全?
我举个例子:想象一下这个平台游戏,当你获胜时你会获得徽章,例如,一个非常困难的关卡。当您实际赢得此徽章时,系统会向服务器发出请求,以更新您的在线个人资料。黑客只发送这个请求并获得徽章,而无需玩实际游戏,这不是非常简单吗?因为:
- 客户端源代码可见且无法隐藏
- 可以从命令行执行 Javascript
我看不出有什么方法可以阻止这个黑客获得他的徽章...有什么方法可以让这个游戏安全吗?
最佳答案
是的,如果您这样设计游戏,将很容易破解。但为什么这是特定于 HTML5 的呢?你可以用任何类型的游戏来做到这一点。即使使用本地桌面游戏,您仍然可以伪造请求。唯一的区别是伪造 HTTP 请求比桌面游戏发出的逆向工程请求更容易。
解决方案是为胜利添加某种“验证”——实际算法因游戏而异。也许让服务器在用户玩游戏时跟踪游戏进度。例如,如果这是一场国际象棋游戏,您可以将每一步棋发送到服务器并验证这些棋步以确保它们正确运行。不过,这在实时游戏中变得更加复杂。
但是无论您决定使用什么算法,它都会被击败。甚至我刚才提到的国际象棋验证也可以被绕过:你可以只“创建”你自己的有效国际象棋游戏,并且每次都将相同的 Action 发送到服务器,确保游戏是有效的。 (这是假设玩家与计算机对抗——让两个人互相对抗会使事情变得更容易。)
关于javascript - "the future of browser gaming"有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3438588/