您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

有什么好的方法可以防止JavaScript多人游戏作弊?

有什么好的方法可以防止JavaScript多人游戏作弊?

服务器为王。客户端是可入侵的。

您想要做的是Websocket的两件事。

将游戏动作发送到服务器,并从服务器接收游戏状态。

您呈现游戏状态。然后您将输入发送到服务器。

你可以 解决由涅槃代码这些问题。客户端上的代码 用于处理输入和显示输出所有 逻辑都必须在服务器上完成。

您只需要编写服务器端 验证 。唯一的问题是,由于复杂性,游戏输入要比表单输入更难于验证。您要做的就是确保表单安全完全相同。

不过,您必须非常小心“输入有效”检测。您不想踢/禁制高技能的球员。很难在僵尸程序检测过于宽松与僵尸程序检测之间达到平衡。总体而言,僵尸程序检测的整个领域非常困难。例如,雷神之锤具有自动瞄准检测功能,该技术可以在当天将合法的玩家踢回去。

至于阻止机器人连接到您的websocket,则直接在多人游戏上设置单独的HTTP或HTTPS验证通道,以提高安全性。使用多个Http / https / ws通道来验证客户端是否为“正式”客户端,作为某种形式的握手。这将使直接连接到ws更加困难。

想想一个简单的多人游戏。一个基于2D房间的赛车游戏。多达n位用户在平面2D平台游戏者地图上竞争从A到B的竞争。

假设出于争论的目的,您有一个安全的系统,其中在HTTPS通道上进行了复杂的身份验证,因此用户无法直接访问您的websocket通道并被迫通过浏览器。您可能有一个用于身份验证的chrome扩展程序,并强迫用户使用它。这减少了问题域。

您的服务器将发送客户端渲染屏幕所需的所有可视数据。您不能掩盖这些数据。无论您尝试什么,一个愚蠢的黑客都可以拿走您的代码,并在调试器中放慢代码的速度,直到他剩下的只是围绕您的websocket的原始包装。他让你运行整个身份验证,但没有什么 可以做,以从阻止他这样做,剥出你写任何JavaScript阻止他。您所能实现的一切就是限制足够熟练地访问Websocket的黑客数量

因此,黑客现在将您的Websocket放在了一个chrome沙箱中。他看到输入。当然,您的比赛路线是动态且唯一生成的。如果您有一定数量的密码,那么黑客可以预先设计最佳的竞赛路线。可以更快地呈现为可视化此地图而发送的数据,然后可以与人与您的游戏进行人机交互,并且可以计算出赢得赛车游戏的最佳举动并将其发送到服务器。

如果您想禁止对您的地图数据反应过快的玩家并称其为机器人,那么黑客会对此进行调整并增加延迟。如果您尝试禁止玩得过分完美的玩家,那么黑客会对此进行调整,并使用随机数将其玩得不那么完美。如果在地图中放置只有算法机器人属于的陷阱,则可以通过反复试验或机器学习算法来了解它们,从而避免它们。您无法采取任何措施确保绝对安全。

您只有 一个 选择可以绝对避免黑客入侵。那就是建立自己的浏览器,它不会被黑客入侵。在浏览器中构建安全机制。不允许用户在运行时实时编辑JavaScript。

javascript 2022/1/1 18:14:04 有752人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶