fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法_php技巧

一:近期黑客利用程序漏洞注入后使用 fsockopen 进行PHPDDOS 攻击,导致部分服务器不稳定,现在将危险函数 fsockopen 暂时禁用,部分程序功能可能有问题,以下列出已知问题及通用解决方法:

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

二:服务器同时禁用了fsockopen pfsockopen,那么用其他函数代替,如stream_socket_client()。注意:stream_socket_client()和fsockopen()的参数不同。
具体操作:
搜索程序中的字符串 fsockopen( 替换为 stream_socket_client( ,然后,将原fsockopen函数中的端口参数“80”删掉,并加到$host。
示例如下

修改前:

$fp = fsockopen($host, 80, $errno, $errstr, 30);

修改后:

$fp = stream_socket_client($host."80", $errno, $errstr, 30);
国内主流PHP网站涉及fsockopen函数的网站系统中的文件列表:
国内主流PHP网站涉及fsockopen函数的网站系统中的文件列表:

DEDECMS:
 

复制代码 代码如下:

source\function\function_core.php  这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_client\client.php  这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_client\lib\sendmail.inc.php
uc_client\model\misc.php 这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_server\install\func.inc.php 这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_server\lib\sendmail.inc.php
uc_server\model\misc.php 这个文件有2处fsockopen,另外的是pfsockopen,请注意区分

Discuz! 2.5:

复制代码 代码如下:

source\function\function_core.php  这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_client\client.php  这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_client\lib\sendmail.inc.php
uc_client\model\misc.php 这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_server\install\func.inc.php 这个文件有2处fsockopen,另外的是pfsockopen,请注意区分
uc_server\lib\sendmail.inc.php
uc_server\model\misc.php 这个文件有2处fsockopen,另外的是pfsockopen,请注意区分

ecms(帝国):

e\class\class.smtp.php
 
ECSHOP:

复制代码 代码如下:

admin\index.php
demo\includes\lib_updater.php
includes\cls_smtp.php
includes\cls_transport.php
includes\lib_base.php
includes\modules\payment\paypal.php

 
shopex:
 

复制代码 代码如下:

core\api\include\api_utility.php
core\api\tools\1.0\api_b2b_1_0_tools.php
core\func_ext.php
core\lib\nusoap.php
core\lib\uc_client\client.php
instal\svinfo.php
plugins\passport\passport.ucenter.php
plugins\payment\pay.nochek.php
plugins\pay.paypal.php
plugins\pay.paypal.server.php
plugins\pay.paypal_cn.php

时间: 2024-12-09 00:40:26

fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法_php技巧的相关文章

PHP中iconv函数转码时截断字符问题的解决方法_php技巧

iconv是转换编码的,但是在中文转码时候出现显示不全问题.  复制代码 代码如下:   iconv("UTF-8","GB2312//IGNORE",$data);    加上//IGNORE,忽略错误    或者用mb_convert_encoding() 复制代码 代码如下:   <?php  /* 转换内部编码为 SJIS */  $str = mb_convert_encoding($str, "SJIS");    /* 将 E

PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法_php技巧

本文实例讲述了PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法.分享给大家供大家参考.具体分析如下: 今天在一朋友服务器测试一个网站时发现我在测试phpinfo时碰到PHP Warning:phpinfo() has been disabled for security reasons 提示了,按话的意思我总结了解决办法,下面我们一起来看看吧. 在运行phpinfo时碰到提示如下:PHP Warning: phpinfo() has been d

PHP使用json_encode函数时不转义中文的解决方法_php技巧

本文实例讲述了PHP使用json_encode函数时不转义中文的解决方法.分享给大家供大家参考.具体方法如下: json_encode函数对于gbk中的中文字符是不会转换的或直接转换成空格了,本文就来给各位整理一个关于json不转义中文问题处理技巧,相信对大家有所帮助. 如果你调用 PHP 自带的 json_encode() 函数, 碰到中文时, 中文会被转义掉. 例如: 复制代码 代码如下: echo json_encode(array('你好')); // 输出: ["\u4f60\u597

php通过array_push()函数添加多个变量到数组末尾的方法_php技巧

本文实例讲述了php通过array_push()函数添加多个变量到数组末尾的方法.分享给大家供大家参考.具体分析如下: php通过array_push()函数添加多个变量到数组末尾,array_push函数接受任意数量的变量添加. <?php $alpha = array("a", "b", "c"); $final = array_push($alpha, "d","e"); print "

PHP __autoload函数(自动载入类文件)的使用方法_php技巧

这也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可.下面是一个实际的例子: 复制代码 代码如下: class ClassA{ public function __construct(){ echo "ClassA load success!"; } } //定义一个类ClassA,文件名为ClassA.php class ClassA{ public function __construct(){ echo &

php5.3 不支持 session_register() 此函数已启用的解决方法_php技巧

php从5.2.x升级到5.3.2.出来问题了.有些原来能用的程序报错了.报错内容是Deprecated: Function session_register() is deprecated查了一下是5.3这个session_register就不让用了,降回去?不爽.搜了一把,有个解决方法是写一个函数 复制代码 代码如下: <?php // Fix for removed Session functions function fix_session_register(){ function se

PHP中file_exists函数不支持中文名的解决方法_php技巧

一般来说PHP中常使用file_exists()判断某个文件或者文件夹是否存在,如果存在则返回true,否则返回false.但是该函数在网页使用UTF8编码的情况下,对于中文的文件名或者文件夹名不能返回正确值,始终返回false.经测试之后得出解决方法,分析造成这一情况的原因应该是编码不同而导致的PHP不能正确判断. 下面这段代码是不能够返回正确值的代码,无论文件是否在都返回不在: <?php; $file="/attachment/21/0/中文.rar"; $newfile

PHP file_get_contents 函数超时的几种解决方法_php技巧

这里就简单介绍两种: 一.增加超时的时间限制 这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间. 我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的.真正的修改file_get_contents延时可以用resource $context的timeout参数: 复制代码 代码如下: $opts = array( 'http'=>array( 'met

探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法_php技巧

[造成原因]:Because PHP's integer type is signed, and many IP addresses will result in negative integers.[解决办法]:其官方手册中提到,可以"you need to use the "%u" formatter of sprintf() or printf() to get the string representation of the unsigned IP address&q