-1

我有一个多人手机游戏的想法。我想到了一个网页游戏,让IOS和Android用户都可以玩。

但我没有得到任何东西......如果我主要使用 javascript 构建游戏,它非常容易受到黑客攻击,不是吗?我的意思是,如果我向服务器发出一些 ajax 请求,每个人都可以在 Internet Explorer 中打开开发人员工具,为请求设置断点并在发送请求之前更改一些数据。

例如:用户在游戏中获得了一些钱。现在我想将新金额发送到服务器以将其保存到数据库中。一些“坏”男孩可能会在请求发送之前更改货币价值,并且服务器获得操纵的价值。

我说的对吗?或者我可以在游戏中构建任何安全功能吗?

所以我搜索了一个多平台移动引擎,但我找不到合适的。我找到了spaceport.io,但它还没有发布。

还有其他我可以使用的引擎吗?

  • 我想用 Javascript 或 C# 编程
  • 我想为 IOS 和 Android 部署游戏
  • 游戏将是 2D 的(以后可能会有一些 3D 功能)
  • 我需要多人游戏的网络支持

哦...而且我没有多少钱;-)

4

2 回答 2

5

是的,正如所指出的那样,javascript 是不安全的,但其他引擎也是如此。他们只是需要更多的工作来破解。

这里的重点是确保客户端仅将用户输入发送回服务器,服务器根据输入计算操作并返回响应。

例如,如果客户说“我刚刚打开了一个箱子,它给了我 100 金币,将其添加到我的余额中”,用户可以轻松破解它说“我刚刚打开一个箱子,它给了我 100,000 金币,将其添加到我的余额”。

相反,客户会简单地说“我打开了箱子”。服务器会说“那个箱子有 100 金币,它已经添加到你的余额中。”

此外,服务器应该根据发送到服务器的移动请求知道玩家在哪里。而不是客户端说“我在这个位置打开了箱子”它应该只说“我在我所在的地方打开了箱子”并且服务器应该知道用户在哪里,所以他们不能只是欺骗所有的箱子位置并打开他们都没有实际移动。

这也意味着客户端不应该告诉服务器玩家在哪里,而只是给出移动通知。IE“我向北移动了一个街区。” “我向东移动了一个街区” 然后服务器可以记录这些,对它们采取行动,并跟踪用户在哪里寻找黑客。如果用户在不发送所有移动请求的情况下尝试更改其位置,则服务器不会对玩家欺骗的位置采取行动。

出于速度目的,可以让客户端在发送移动请求后移动玩家而不等待服务器响应,但如果服务器响应“不,您不是您认为的位置,而是您的位置”客户端响应通过在它的一侧进行更正以匹配服务器。这就是导致游戏在滞后时跳来跳去或向后跳的原因。客户端已经更新了动作以保持流畅和响应,但由于滞后,服务器没有收到移动请求,或者迟到了,所以客户端必须更正。

于 2013-01-30T23:08:24.573 回答
2

JavaScript 本质上是不安全的,并且容易受到各种客户端黑客攻击。发生的一切都需要在服务器端进行验证。

我想用 Javascript 或 C# 编程

C# 在服务器上运行。JavaScript 在客户端上运行。这里没有非此即彼的选择。

于 2013-01-30T22:36:29.910 回答