在Javaservlet中限制HTTP请求
在Javaservlet中,如何根据客户端的IP地址限制来自用户的http请求?我不希望每秒处理来自特定源IP地址的超过X个请求,其中X是可配置的,并且具有[0.1;10]范围内的实际值(从10秒内1个请求到每秒10个请求).我将为该任务编写一个过滤器。使用servlet过滤器:如果您在Jetty 7.0或更高版本上,则有@EJP所说的过滤器,使用一个带有哈希映射的过滤器,该哈希映射通过IP地址键存储上次访问时间。每秒10个请求将转换为至少100毫秒的通话间隔。发回服务器忙错误代码并终止请求将快速关闭连接使用的资源。如果您可以选择的话,有针对Apache的预构建解决方案 检查您使用的容器是否提供此类拒绝服务。如果没有,那么您必须使用过滤器在Javaservlet中限制HTTP请求,java,http,sockets,servlets,tcp,Java,Http,Sockets,Servlets,Tcp,在Javaservlet中,如何根据客户端的IP地址限制来自用户的http请求?我不希望每秒处理来自特定源IP地址的超过X个请求,其中X是可配置的,并且具有[0.1;10]范围内的实际值(从10秒内1个请求到每秒10个请求).我将为该任务编写一个过滤器。使用servlet过滤器:如果您在Jetty 7.0或更高版本上,则有@EJP所说的过滤器,使用一个带有哈希映射的过滤器,该哈希映射通过IP地址键存储上次访问时间。每秒10个请求将转换为至少100毫秒的通话间隔。发回服务器忙错误代码并终止请求将快
ServletRequest.getRemoteHost()允许您访问客户端IP。托管在code.google.com上的owasp esapi java项目有一个节流过滤器的实现,您可以“按原样”使用,也可以作为自己的灵感 您可以通过以下链接检查代码: