tomcat如何限制同一IP在一定时间段内对服务器的多次访问.  比如可以用软件在1分钟内可以对tomcat造成N次的访问,这样就容易让服务器崩溃.
我知道tomcat带有RemoteHostValve和RemoteAddrValve来限制指定主机访问,但都需要指定地址,不能满足我的要求.请问tomcat里面有没有相关的配置来避免这样的情况?

解决方案 »

  1.   

    tomcat自带的有tomcat阀,通过配置server.xml文件实现,但是那个只能限定一定IP的访问。你这个只能通过编程实现了。
      

  2.   

    IMHO, 这个主意可不是一个好主意。假如你的服务属于局域网,比如公司内部网站,那么存在恶意攻击的可能性比你tomcat崩溃的可能性还要低好多倍。如果是外网,那么你如何判断出来自不同物理机器但属于同一个IP的(网关,代理等)不同请求?难道结合session id或者cache?其次,你说:“比如可以用软件在1分钟内可以对tomcat造成N次的访问”,但是受制于HTML,正常访问也会造成1分钟内多达几十个HTTP连接,比如他访问的是一个内容非常丰富,有N个<img/frame/iframe src="">标记的网页。所以,你要做的是增强你程序的健壮性。比如,通过配置web.xml或者利用filter,来限制所有请求都必须事先登录,且登录页面有验证码来保证不会被攻击,同时加以集群和负载平衡功能等
      

  3.   

    比如在一分钟内有人通过同一IP访问数千次呢?我的意思是能不能设置相同IP一分钟内只能访问50次.
      

  4.   

    非常感谢各位的参与!
     to shine333(enihs),如果别人只访问首页,不登陆系统,那样程序里面所做的配置就不能阻止这样的访问了.一些访问量大的门户网站他们也会遇到这样的问题吧.
      

  5.   

    他们做的就是我说的:
    > 集群和负载平衡
    而不是刻意限制某个IP的访问量
      

  6.   

    to shine333(enihs), 请问,集群和负载平衡里面那个方法可以解决不断访问首页这个问题.谢谢!
      

  7.   

    感谢大家,感谢shine333(enihs),我应该提高网站的访问能力才是,针对个别的非法访问IP,采用禁止访问.