Java Tomcat与防洪

Java Tomcat与防洪,java,web-services,tomcat,web-applications,servlets,Java,Web Services,Tomcat,Web Applications,Servlets,我们在web应用程序中使用Tomcat7。我们提供了一个基于XML的API,以便我们的客户能够以机器对机器的方式与我们的服务器通信(无需web浏览器)。请求由servlet处理 我们需要防止用户连续发送太多请求。我们提供的一些服务涉及对结果的轮询,用户可能会在循环中发出请求,而不会出现任何暂停,每秒会发出几十个请求,而不会产生任何结果 我们如何保护自己不被无用的请求淹没?当有太多来自同一IP的请求时,是否有一种简单的方法在servlet入口级别阻止请求?有内置的Tomcat来处理这个问题吗?假设

我们在web应用程序中使用Tomcat7。我们提供了一个基于XML的API,以便我们的客户能够以机器对机器的方式与我们的服务器通信(无需web浏览器)。请求由servlet处理

我们需要防止用户连续发送太多请求。我们提供的一些服务涉及对结果的轮询,用户可能会在循环中发出请求,而不会出现任何暂停,每秒会发出几十个请求,而不会产生任何结果


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

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

您可以自己编写代码

了解这一点的起点是ServletAPI,特别是过滤器接口和SerlvetRequest接口的getRemoteHost()方法


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

Spring Security具有Apache httpd的许多功能,如果您想要一个纯Java的解决方案,则可以使用此功能。

Apache的 或
可以满足你的需要。您可能会考虑CydDFLARE以应对更复杂的严重攻击,这将需要硬件保护。

说到这里,我把这些东西放在一起是非常基本的,但是对于这个目的来说可能足够了。