speedphp 有防范 cc 攻击的内容吗

#1 a752711024

页面长期被连续访问,处于当机状态,求解

2011-12-27 09:02:59

#2 a752711024

不知道哪里可以找到防止cc攻击的代码

2011-12-27 09:22:14

#3 jake

一个页面还是整个网站?

一般来说防止连续访问攻击,有几种方法:

1. 从PHP程序端来做,对付攻击的方法也是各异,没有什么统一的标准,而且也是比较少见的问题。
一般最简单的,是根据访问IP来防止,单位时间内超过正常IP访问数那就是攻击,然后把IP记录到文件或者memcache里面,下次访问发现如果是该IP就直接exit。
不过这方法局限在php能够执行的情况,如果php是exit也exit不了的情况,那么只能从操作系统去封IP了。
2. 从系统层面,自动根据IP单位访问数,禁止IP访问。这个是软件能做到的极限了。
3. 加个硬件防火墙或者通知机房想办法处理,这是硬件的处理方法

2011-12-27 09:28:39

#4 jake

又要“现成代码”,建议可以直接找外包做程序,这样就都是“现成代码”了。

2011-12-27 09:30:24

#5 klboy

域名解析到127.0.0.1

2011-12-27 09:30:55

#6 a752711024

        /*你可以将这段判断代码加到每一个用户会访问到的地方,一旦判断出是代理服务器访问网站会输出“Proxies Forbidden”,如果开启了高级匿名代理服务器则会显示“Forbidden:High Anonymous Proxy Connection”, 当然你也可以通过加入过侧边栏,或者页脚来达到一举多得的防范目的。
        */
        //Ban Proxy for all soft.
        $ipinfo = new IpInfo();
        $ipinfo->banProxy(true);
        //false 时,屏蔽超级匿名的代理
        class IpInfo
        {
        // (c) KINPOO
        var $clientIp;
        var $proxy;
        var $proxyIp;
        function IpInfo()
        {
        $this->getIp();
        $this->checkProxy();
        }
        function banProxy($banAll = true)
        {
        if (!$this->proxy)
        {
        return;
        }
        if ($banAll == true)
        {
        die('Forbidden:Proxy Connection');
        }
        else
        {
        if ($this->clientIp == $this->proxyIp)
        {
        die('Forbidden:High Anonymous Proxy Connection');
        }
        }
        }
        function checkProxy()
        {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])
        || isset($_SERVER['HTTP_VIA'])
        || isset($_SERVER['HTTP_PROXY_CONNECTION'])
        || isset($_SERVER['HTTP_USER_AGENT_VIA'])
        || isset($_SERVER['HTTP_CACHE_CONTROL'])
        || isset($_SERVER['HTTP_CACHE_INFO']))
        {
        $this->proxy = true;
        $this->proxyIp = preg_replace("/^([{0-9}\.]+).*/", "\\1", $_SERVER['REMOTE_ADDR']);
        return $this->proxy;
        }
        }
        function getIp()
        {
        if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'])
        {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
        }
        elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'])
        {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
        $ip = $_SERVER['REMOTE_ADDR'];
        }
        $this->clientIp = preg_replace("/^([{0-9}\.]+).*/", "\\1", $ip);
        return $this->clientIp;
        }
        }
       
       
        /*还可以通过下面这段代码实现揪出IP源来进行.htaccess的封锁。*/
       
        function getIP()
        {
        static $realip;
        if (isset($_SERVER)){
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
        $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
        $realip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
        $realip = $_SERVER["REMOTE_ADDR"];
        }
        } else {
        if (getenv(“HTTP_X_FORWARDED_FOR”)){
        $realip = getenv(“HTTP_X_FORWARDED_FOR”);
        } else if (getenv(“HTTP_CLIENT_IP”)) {
        $realip = getenv(“HTTP_CLIENT_IP”);
        } else {
        $realip = getenv(“REMOTE_ADDR”);
        }
        }
        return $realip;
        }
       
?>

2011-12-27 09:42:23

#7 a752711024

谢谢解答,:handshake

2011-12-27 09:59:03