導(dǎo)致這一問題的核心原因是:fsockopen pfsockopen函數(shù)被禁用,導(dǎo)致SMTP發(fā)送郵件不正常!
一:黑客經(jīng)常會利用程序漏洞注入后使用 fsockopen 進行PHPDDOS 攻擊,導(dǎo)致服務(wù)器不穩(wěn)定,現(xiàn)在將危險函數(shù)fsockopen 禁用,部分程序功能可能有問題,以下列出已知問題及通用解決方法:
通用解決方法:
找到程序里的 fsockopen 函數(shù),替換為:pfsockopen,即可解決所有問題,兩個函數(shù)的區(qū)別在于 pfsockopen 保持keep-alive,使得黑客無法進行連接數(shù)攻擊。
已知使用 fsockopen 函數(shù)的程序文件路徑(在fsockopen 前加 p, 即fsockopen 修改為 pfsockopen 即可)
二:如果服務(wù)器同時禁用了fsockopen和pfsockopen函數(shù),那么用其他函數(shù)代替,如stream_socket_client()。注意:stream_socket_client()和fsockopen()的參數(shù)不同。
具體操作:
搜索程序中的字符串 fsockopen( 替換為 stream_socket_client( ,然后,將原fsockopen函數(shù)中的端口參數(shù)“80”刪掉,并加到$host。
示例如下
修改前:
$fp = fsockopen($host, 80, $errno, $errstr, 30);
修改后:
$fp = stream_socket_client($host."80", $errno, $errstr, 30);
國內(nèi)主流PHP網(wǎng)站涉及fsockopen函數(shù)的網(wǎng)站系統(tǒng)中的文件列表:
DEDECMS:
sourcefunctionfunction_core.php 這個文件有2處fsockopen,另外的是pfsockopen,請注意區(qū)分 |
Discuz! 2.5:
sourcefunctionfunction_core.php 這個文件有2處fsockopen,另外的是pfsockopen,請注意區(qū)分 |
ecms(帝國):
eclassclass.smtp.php |
ECSHOP:
adminindex.php |
shopex:
coreapiincludeapi_utility.php coreapitools1.0api_b2b_1_0_tools.php corefunc_ext.php corelibnusoap.php corelibuc_clientclient.php instalsvinfo.php pluginspassportpassport.ucenter.php pluginspaymentpay.nochek.php pluginspay.paypal.php pluginspay.paypal.server.php pluginspay.paypal_cn.php |
請注意上述把文件夾名和文件名連在一起寫了,大家查找時候依次進入目錄路勁查找對應(yīng)文件即可;