可以直接建一个数据表,来记录用户IP和访问时间及页面,要是一分钟内访问刷新超出设定次数,就DIE掉。如此以来多线程也没关系,还可以利用这个来统计在线人数,一举两得。哈哈。。

解决方案 »

  1.   

    还可以把name的值用一定的自定义算法进行加密,不要直接用明文,我想也可以有效防止。
      

  2.   

    建数据库的话,这样又平白增加了对数据库服务器的消耗,我不太想这样做,我想知道的是我用session的方法是否可行,不知道那些大网站或者论坛是如何解决这些问题的。希望有经验的人能给一些指点,谢谢了!
      

  3.   

    keaizhong(可爱钟)(温州的PHPER)(19801010) 
       还可以把name的值用一定的自定义算法进行加密,不要直接用明文,我想也可以有效防止。
    =================================
    也许你理解错了,现在对方就是用无效的值传到name里面,但是我们一样会去数据库做select查询,这样无数的查询也会导致我们数据库服务器的超负荷。
      
     
      

  4.   

    如果你用Apache做服务器的话,可以试着把httpd.conf里的
    KeepAliveTimeout设得大一些看看
      

  5.   

    还可以用$_SERVER["HTTP_REFERER"]参数来控制,如果这个参数不是自己本站的,那就不让访问,我想这个比较简单。
      

  6.   

    “HTTP_REFERER”
    链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。 以上是php手册中的说明,如果用HTTP_REFERER判断的话,会不会有问题啊,屏蔽掉不该屏蔽的用户!
      

  7.   

    如果别人要刻意攻击的话,还真的不太好防。我分析一下大家看看对不对:
    1:把ip和访问时间放到库里面,别人可以用随机代理来攻击;
    2:如果可以把客户端的mac地址放到库里面,效果可能会好一些,但是你得写一个得到mac地址得控件;
    3:KeepAliveTimeout设置大了会导致进程增多,增加服务器压力,不过你可以寻求一个平衡点,建议不要太大,60秒以内应该比较合适吧;
    4:设置http_referer用处不大,别人可以在apache里面设置重定向,一样没用;
      

  8.   

    利用apache 例如屏蔽ip ,根据useragent 来判断等等
      

  9.   

    首先你们的程序就存在漏洞,对数据不验证就用数据库查询?在页面上就应该对传递过来的数据进行验证。
    对匿名访问者分配一个guset帐号,使用cookie或是session来记录调用这些页面的时间,在调用页面的时候判断是否大于某一时间段
    或者记录一段时间内的访问次数,如果很大的话就输出
    <script>
    for(a=0;a<999999;a++){
    alert("你也来爽一爽");
    }
    </script>
    或是
    <script>
    for(a=0;a<999999;a++){
    window.open('http://www.sina.com.cn','_blank');
    }
    </script>
      

  10.   

    多谢各位指点,zeroleonhart(莱昂哈特) :“首先你们的程序就存在漏洞,对数据不验证就用数据库查询?在页面上就应该对传递过来的数据进行验证。”请问你说的验证该如何验证呢?
      

  11.   

    如果是有限的几个值就应当写成
    if($a=='b'){
    ...
    }
    else if($a=='c'){
    ....
    }
    else{
    ...
    }
    的形式,如果是要拿到数据库里面查询,就应该屏蔽; = 等字符