gpt4 book ai didi

c# - 可以做些什么来防止多人黑客入侵?

转载 作者:行者123 更新时间:2023-11-30 21:33:46 26 4
gpt4 key购买 nike

出于好奇,我一直在研究一个 UDP 网络项目,但我遇到了一个我无法解决的问题。我研究并理解了以下基本原则:

  1. 使用权威服务器,尽可能少地授予客户端权限。
  2. 确保服务器使用自己的加密 key 唯一标识每个客户端。
  3. 通过膨胀响应数据包来阻止 DDOS 攻击。
  4. 等..

我对 UDP 的大部分了解都来自这些精彩的文章:https://gafferongames.com/;我很幸运能够使用这个 library ,它基于作者自己的 UDP 协议(protocol),负责大部分权威保护。

现在,这是我的问题:

使用完全权威的服务器,玩家似乎仍然可以作弊。

  • 例如:

    对于格斗游戏,客户端有两个功能。 void hit()void hurt,这些是客户端刺激战斗的基本函数。

    在场景 1 中:localPlayer 击中另一个玩家,并将其发送到服务器。服务器然后向被击中的玩家的客户端发送一个数据包,这将触发 hurt() 函数。但如果玩家编辑了文件并删除了伤害功能,就不会发生任何事情。删除hurt()函数的玩家将立于不败之地。

    在场景 2 中:localPlayer 被其他玩家击中并调用 hurt(),并将其发送到服务器。然后,服务器将数据包发送到命中 localPlayer 的播放器的客户端,这将触发 hit() 函数。但如果 localPlayer 编辑了文件并删除了 hurt() 函数,则什么也不会发生。删除hurt()函数的玩家将再次立于不败之地。

我只能想到两个解决方案:

  1. 如果游戏遇到错误(因为函数被删除且不存在),请断开客户端与服务器的连接。(不太好)

  2. 这是我在写这篇文章时想到的,它可能是我的解决方案:在服务器上为每个玩家存储一个健康变量,如果它达到 0,则忽略任何如果游戏无法运行的数据包未编辑。

第二个解决方案现在对我来说听起来不错,但我很好奇你们会做什么/会做什么,因为我是一个直接的初学者。很高兴听到任何建议,谢谢!

最佳答案

The player that had deleted the hurt() function would be invincible.

如果游戏状态的“主副本”是由服务器计算的,则不是。在这种情况下,修改代码的玩家只会让他们的客户端显示无效的游戏状态,这对他们玩游戏没有帮助。

一般来说,除玩家输入之外的一切都必须由服务器完成,客户端只说玩家选择做什么,并且每个由此产生的 Action /改变都由服务器执行服务器。这样,玩家除了他们想做的事情之外不能改变任何东西,这已经在他们的管辖范围内。

请注意,玩家仍然可以借助自动答题器或瞄准机器人等工具作弊。这些形式的作弊更难处理,因为很难判断某人是否正在接受非人道的帮助,或者他们是否只是一个好玩家。

关于c# - 可以做些什么来防止多人黑客入侵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50974198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com