javascript - "the future of browser gaming"有多安全?

标签 javascript security html

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

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

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

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

最佳答案

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

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

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

关于javascript - "the future of browser gaming"有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3438588/

相关文章:

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - Symfony 授予对 security.yml 中多个角色的路径访问权限

JavaScript 表单验证。单选按钮和复选框。如何验证?

javascript - ReactJS - 禁用组件

javascript - 循环中的 Leaflet MarkerCluster bindPopup 仅使用最后一个值

javascript - 如何为猜谜游戏编写javascript逻辑

javascript - 如何使用 HTML5/CSS3 或 JavaScript 添加滑入效果和发光效果?

security - 限制分号以防止 SQL 注入(inject)?

html - 形状渐变

javascript - 控制台错误 : [function] is not defined, 虽然它是