【发布时间】:2014-05-17 18:51:28
【问题描述】:
我创建了一个 JSR-356 @ServerEndpoint,我想在其中限制来自单个 IP 地址的活动连接,以防止简单的 DDOS 攻击。
请注意,我正在搜索 Java 解决方案(JSR-356、Tomcat 或 Servlet 3.0 规范)。
我已尝试自定义端点配置器,但即使在 HandshakeRequest 对象中,我也无法访问 IP 地址。
如何在没有 iptables 等外部软件的情况下限制单个 IP 地址的 JSR-356 连接数?
【问题讨论】:
-
不要为此编写代码。使用防火墙。当您开始编写 Java 代码时,已经为时已晚。
-
@EJP 正如问题所述 - 需要 Java 解决方案。我不是要最佳解决方案。假设我们希望运送到许多环境的产品具有最大的简单性和可移植性。从单个主机建立 40 000 个连接非常容易,但自动断开连接会使这变得更加困难。 Tomcat 卡在 websockets 上的最大连接数,所以如果它被配置为处理 ~200k 连接,我只想通过保持连接来防止非常容易的服务阻塞,这不需要像僵尸网络这样的大量资源。
-
您假设存在 Java 解决方案,但没有证据。如果您要运送产品或有其他限制,您应该在问题中说明它们。大多数人不是。事实上,从单个主机建立 40,000 个连接并不是一件容易的事。许多环境不会超过几千。
标签: java tomcat servlets websocket jsr356