我已经使用 .NET TcpListener 创建了一个 TCP 服务器。
我担心它会如何通过发送大量类似于 DoS 类攻击的虚假连接来滥用它。
我创建了一个小型控制台应用程序来重复启动与服务器的连接(仅“连接”而不传输其他类型的数据)。 “最大允许并发连接数限制”是服务器中的一项设置,旨在防止服务器不堪重负,这一设置立即得到满足。这使我的服务器几乎毫无用处,因为它无法接受新连接,除非其他假连接断开连接。这证明我的担心不是空穴来风。
我们有什么办法可以从应用程序级别防止这种情况发生吗? 我想要求客户端在连接时发送一种 token ,服务器会拒绝不发送的连接,但我认为 TCP 不会那样工作。
依赖外部解决方案是唯一的方法吗?例如。 VPN、防火墙、NAT 等?
最佳答案
在每个接受的套接字上设置读取超时,并在触发时关闭它。
关于sockets - TCP 服务器被只有 "connect"而没有发送任何数据的客户端淹没,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42120291/