6

我们将 Tomcat 7 用于我们的 Web 应用程序。我们提供基于 XML 的 API,以便我们的客户能够以机器对机器的方式与我们的服务器进行通信(无需 Web 浏览器)。请求由 servlet 处理。

我们需要防止用户连续发送过多的请求。我们提供的一些服务涉及轮询结果,用户可能会在没有任何暂停的情况下循环发出请求,每秒发出几十个请求。

我们如何保护自己不被无用的请求淹没?当来自同一 IP 的请求过多时,是否有一种简单的方法可以在 servlet 入口级别阻止请求?有没有内置的Tomcat来处理这个问题?

4

4 回答 4

4

假设您在 tomcat 前使用 apache 反向代理(如果不是,则应该使用),请在 apache 层上使用mod_cband 。

于 2012-07-13T15:50:29.977 回答
2

你可以自己编码。

查看这个的起点是 Servlet API,特别是 Filter 接口和 SerlvetRequest 接口的 getRemoteHost() 方法。

应该很容易编写一个过滤器实现,它存储来自每个主机的请求计数,并在超出限制时采取行动。

于 2012-07-13T15:53:23.490 回答
0

mod_security如果你想要一个纯 Java 的解决方案,Spring Security 有很多 Apache httpd 的特性。

于 2012-07-16T00:58:10.367 回答
0

Apache 的mod_evasivemod_security 可以满足您的需求。对于需要硬件保护的更复杂的严重攻击,您可以考虑使用 Cloudflare。

于 2013-02-11T15:40:28.473 回答