【问题标题】:Can people modify WebSockets?人们可以修改 WebSockets 吗?
【发布时间】:2013-12-08 15:42:25
【问题描述】:

所以我正在使用 WebSockets 编写游戏客户端。但是,我想防止人们作弊并将某些数据发送到服务器。人们可以修改页面上的 html 和 javascript 来更改发送到 WebSocket 的数据吗?

如果是这样,我该如何防止这种情况发生?

【问题讨论】:

  • 你无法阻止它,这就是为什么必须在服务器端进行验证以确保事情有效。
  • 您能举个例子说明如何验证数据吗?
  • if( data != "what it should be" ) print "Cheater!";
  • 你需要在服务器中有业务逻辑。我不知道你的游戏是什么。如果是tictactoe,你需要确保他们可以移动到那个地方。
  • 您可以通过 Google 找到许多其他关于防止在线游戏作弊的信息。这是一个:stackoverflow.com/questions/5250403/…

标签: javascript html web websocket


【解决方案1】:

这是(多人)游戏中“作弊”和“黑客”的大事。来自客户端(有时甚至是服务器)的数据永远不会被信任。

想想射击游戏中的“teleport hack”。一旦您移动,您的客户端就会将您的玩家新位置发送到服务器。如果你想作弊,你可以简单地操纵你的客户端发送你想要传送到的位置的坐标。

现在有两种可能的结果:

1) 开发人员在编写服务器端应用程序时并不关心作弊者。服务器接受新位置,尽管自上次位置更新以来您的客户端不可能移动到该位置。

2) 开发人员很聪明,编写了一个智能服务器。在接受新坐标之前,服务器会验证您的玩家是否有可能在上次更新后移动到给定位置。如果是,则服务器接受它。如果不是,您将在接下来的 1000 年内被禁止。

【讨论】:

  • 感谢您的信息。我想这就像 juhana 说的,我已经在服务器端验证数据,所以一切都必须在服务器端完成
  • 这种类型的作弊保护很酷的一点是,它确实有效并且不能被规避(假设你的服务器逻辑没有被窃听)。缺点是它不能用于防止 所有 类型的作弊。无法在服务器端可靠地检测到诸如瞄准机器人之类的东西。
  • 太棒了,谢谢!这将有点困难,因为它是一款兼作游戏引擎的游戏。所以我必须检查允许修改的某些数据。
猜你喜欢
  • 2016-11-15
  • 2021-11-10
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多