gpt4 book ai didi

network-programming - 管理 UDP 套接字的安全性

转载 作者:行者123 更新时间:2023-12-04 00:12:41 25 4
gpt4 key购买 nike

我正在考虑开发我的第一个多人 RTS 游戏,我自然会使用 UDP 套接字来接收/发送数据。

我一直试图弄清楚的一件事是如何保护这些端口不被 DoS 攻击中的假数据包淹没。通常防火墙可以防止洪水攻击,但我需要在我使用的端口上允许数据包,并且必须依靠我自己的软件来拒绝虚假数据包。什么可以阻止人们嗅探我的数据包,观察我使用的任何身份验证或特殊结构,并使用类似的数据包向我发送垃圾邮件?源地址可以轻松更改,从而几乎不可能检测和禁止违规者。是否有任何被广泛接受的方法来防止此类攻击?

我知道 UDP 和 TCP 之间的所有区别,所以请不要把它变成关于那个的讲座。

====================== 编辑 ==========================

我应该补充一点,我也在努力研究如何通过发送我认为来自我的游戏的数据包来防止有人“入侵”游戏和作弊。排序/同步号码或 ID 很容易被伪造。我可以使用加密,但我担心这会减慢我服务器的响应速度,并且无法提供 DoS 保护。

我知道这些是每个使用 UDP 套接字的程序员都必须遇到的基本问题,但在我的一生中,我找不到任何有关解决这些问题的方法的相关文档!

任何方向将不胜感激!

最佳答案

您需要的技术不会特定于 UDP:您正在寻找通用消息身份验证来处理欺骗、速率限制来处理 DoS,以及服务器端状态启发式(“这个数据包有意义吗?”)来处理客户端黑客攻击。

为了有效地处理 DoS,您需要多层检测。首先删除无效的源地址,甚至不看内容。将 session ID 放在每个数据包的开头,其 ID 未分配或与正确的来源不匹配。接下来,跟踪每个 session 的到达率。开始从进入太快的地址中删除。除了能够实时嗅探合法数据包的人之外,这些技术将阻止所有内容。

但是基于实时嗅探的 DoS 攻击将非常罕见,并且攻击速度将受限于单个源网络的速度。阻止数据包嗅探的唯一方法是使用加密和校验和,这将是大量工作。由于这是您的“第一个多人 RTS”,因此我建议您不要加密。

如果您决定使用加密,AES-128 相对较快且非常安全。如果您真的想要优化,或者有很多 AES 库,那么 Brian Gladman 的引用 Rijndael 实现是一个很好的起点。可以使用简单的 CRC-16 对明文数据进行校验和。但这对于您可能的攻击媒介来说可能是矫枉过正。

关于network-programming - 管理 UDP 套接字的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9126973/

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