如何在JS游戏中实现反作弊?

时间:2018-07-12 21:54:11

标签: security web three.js game-engine anti-cheat

我正计划制作一个基于网络的游戏(使用three.js和socket.io),而我主要关心的问题之一是防止作弊。

我知道制作安全游戏的基础知识,即:

  • 从不信任客户端,客户端仅用于呈现和输入捕获
  • 将游戏逻辑放在服务器端
  • 最好的抗欺骗手段是人类

我知道,我不知道如何保护这些漏洞恰恰是那些与客户端有关且服务器无法检查的漏洞。例如,作为攻击者,我可以:

  • 修改渲染器或着色器以使墙不可见(wallhack)
  • 修改摄像头的位置,只需在变量中
  • 注入将为我输入的代码(aimbot)

在经典游戏(可执行文件)中,有些程序可以检测非法行为。通常,反作弊检查程序集并检查是否没有注入dll。

也许有一个专门用于此任务的混淆器(即使这意味着失去性能)?

我尚未完成所有研究,但我希望你们中的一些人已经遇到了这个问题,并且可以通过定向研究来节省我很多时间。

非常感谢

1 个答案:

答案 0 :(得分:0)

如果您想使用“反作弊”引擎,则必须这样做。您可以添加任何希望在客户端进行的操作,以方便服务器端的工作,但是您绝不能信任客户端。您拥有的所有逻辑必须至少在服务器端。您可以根据需要在客户端复制它,但是没有客户端解决方案可以做到。

基础知识之后: 如果您不介意包装HTTP,请使用ExpressJS 看看以下用于express-blacklist和express-defend的代码:

INDIRECT

由于它们未在socket.io中注册,因此仅受Express路由的影响

看看这个:https://github.com/hrt/AnticheatJS

这是您可能要研究的优秀软件:https://www.tuxbihan.org/software/top-05-anti-cheat-software-to-make-fair-for-gamers/

希望这会有所帮助!