我们的web应用程序使用Tomcat7。我们提供了一个基于XML的API,这样我们的客户就可以以机器对机器的方式与我们的服务器通信(不需要web浏览器)。请求由servlet处理。
我们需要防止用户连续发送过多的请求。我们提供的一些服务包括轮询结果,用户可能会在循环中进行请求,而不会有任何停顿,每秒会有几十个请求无缘无故地进行。
我们如何保护自己不被无用的请求淹没?当有太多来自同一IP的请求时,有没有一种简单的方法可以在servlet入口级阻止请求?有没有什么内置的Tomcat可以解决这个问题?
发布于 2012-07-13 23:50:30
假设您在tomcat前面使用apache反向代理(如果不是这样,您应该这样做),在apache层上使用mod_cband。
发布于 2012-07-13 23:53:23
你可以编写你自己的代码。
了解这一点的起点是Servlet API,特别是Filter接口和SerlvetRequest接口的getRemoteHost()方法。
应该很容易编写一个过滤器实现,它存储来自每个主机的请求计数,并在超过限制时采取行动。
发布于 2012-07-16 08:58:10
如果您想要一个纯mod_security的解决方案,Spring Security有许多Apache httpd的Java特性。
https://stackoverflow.com/questions/11473396
复制相似问题