dedecms禁用fsockopen函数的解决办法

发布时间:2019-12-14编辑:脚本学堂
利用程序漏洞注入后使用 fsockopen 进行PHPDDOS 攻击,导致部分服务器不稳定。本文介绍dedecms禁用fsockopen函数的解决办法。

利用程序漏洞注入后使用 fsockopen 进行PHPDDOS 攻击,导致部分服务器不稳定。
因此有些主机商就会暂时禁用fsockopen函数功能,这样部分网站程序功能可能会出现问题。

通用的解决方法:
找到程序里的 fsockopen 函数,替换为:pfsockopen,即可解决所有问题,两个函数的区别在于 pfsockopen 保持 keep-alive,使得黑客无法进行 连接数攻击。
已知使用 fsockopen 函数的程序文件路径(在fsockopen 前加 p, 即fsockopen 修改为 pfsockopen  即可 )[其他程序可通过错误提示的文件路径查看更改]:

dedecms 问答积分功能出现 service.dedecms.com:
修改   /ask/data/scores.inc.php 里的 fsockopen 为 pfsockopen
附带dedecms 全部含 fsockopen 的文件列表:
 

复制代码 代码如下:
./include/dedehttpdown.class.php:     $this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10);
./include/sphinxclient.class.php:     $fp = @fsockopen ( $host, $port, $errno, $errstr );
./include/sphinxclient.class.php:     $fp = @fsockopen ( $host, $port, $errno, $errstr, $this->_timeout );
./include/dedecollection.func.php:    $m_fp = fsockopen($ghost, 80, $errno, $errstr,10);
./include/dedecollection.func.php:    $m_fp = fsockopen($ghost, 80, $errno, $errstr,10) or die($ghost.'<br />');
./include/mail.class.php:        //is used in fsockopen()
./include/mail.class.php:        $this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
./include/mail.class.php:        $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
./ask/data/scores.inc.php:     $fp = fsockopen($host,80,$errno,$errstr,30);
./dede/module_main.php:        $fp = fsockopen('www.dedecms.com',80,$errno,$errstr,30);
./dede/api_ucenter.php: $fp = @fsockopen(($host ? $host : $ip), $port, $errno, $errstr, $timeout);
./dede/plus_bshare.php:    if (!$fp=@fsockopen($parse['host'],$parse['port'],$errnum,$errstr,$timeout)) {
./plus/bshare.php:    if (!$fp=@fsockopen($parse['host'],$parse['port'],$errnum,$errstr,$timeout)) {