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

问题描述 投票:1回答:1

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

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

  • 从不信任客户端,客户端仅用于渲染和输入捕获
  • 放置游戏逻辑服务器端
  • 最好的防作弊是人类

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

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

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

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

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

非常感谢

security web three.js game-engine anti-cheat
1个回答
0
投票

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

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

var expressDefend = require('express-defend');
var blacklist = require('express-blacklist');
app.use(blacklist.blockRequests('blacklist.txt'));

app.use(expressDefend.protect({ 
    maxAttempts: 5, 
    dropSuspiciousRequest: true, 
    logFile: 'suspicious.log', 
    onMaxAttemptsReached: function(ipAddress, url){
    blacklist.addAddress(ipAddress);
} 
}));

因为它们未在socket.io中注册,所以它们将仅受Express路由的影响

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

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

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.