Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javaservlet中限制HTTP请求_Java_Http_Sockets_Servlets_Tcp - Fatal编程技术网

在Javaservlet中限制HTTP请求

在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毫秒的通话间隔。发回服务器忙错误代码并终止请求将快

在Javaservlet中,如何根据客户端的IP地址限制来自用户的http请求?我不希望每秒处理来自特定源IP地址的超过X个请求,其中X是可配置的,并且具有[0.1;10]范围内的实际值(从10秒内1个请求到每秒10个请求).

我将为该任务编写一个过滤器。

使用servlet过滤器:如果您在Jetty 7.0或更高版本上,则有@EJP所说的过滤器,使用一个带有哈希映射的过滤器,该哈希映射通过IP地址键存储上次访问时间。每秒10个请求将转换为至少100毫秒的通话间隔。发回服务器忙错误代码并终止请求将快速关闭连接使用的资源。如果您可以选择的话,有针对Apache的预构建解决方案

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


ServletRequest.getRemoteHost()允许您访问客户端IP。

托管在code.google.com上的owasp esapi java项目有一个节流过滤器的实现,您可以“按原样”使用,也可以作为自己的灵感

您可以通过以下链接检查代码: