在Java Servlet中限制HTTP请求

8
在Java Servlet中,如何基于客户端的IP地址限制HTTP请求的流量?我不希望为来自特定源IP地址的请求提供超过X个每秒的服务,其中X是可配置的,并且在[0.1; 10]范围内具有实际价值(从10秒钟内的1个请求到每秒的10个请求)。
5个回答

4

3
使用Servlet过滤器:如果您使用Jetty 7.0或更高版本,则可以使用此过滤器

2
我会为这个任务编写一个过滤器。

2

如@EJP所说,使用一个HashMap存储IP地址键的最后访问时间,并与过滤器一起使用。 每秒10个请求将转化为调用之间的最小100毫秒。 返回服务器繁忙错误代码并终止请求将快速关闭连接使用的资源。 如果可以,Apache有预构建的解决方案。


1

检查您正在使用的容器是否提供此类拒绝服务。如果没有,那么您将不得不使用过滤器。

ServletRequest.getRemoteHost() 可以让您访问客户端 IP。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接