xmlrpc.php 存在于 WordPress 網(wǎng)站程序中,通過使用 HTTP 作為傳輸機制和 XML 作為編碼機制來標(biāo)準(zhǔn)化這些通信來實現(xiàn)此目的。然而,xmlrpc.php 文件引入了安全漏洞,并且可能成為被攻擊的目標(biāo)。
最近網(wǎng)站大量 POST 請求 xmlrpc.php,導(dǎo)致 CPU 負(fù)載爆滿,內(nèi)存也比平時占用更多,感覺是被人掃描攻擊了。所以這個涉及到了 WordPress 安全,必須重視起來。
XML-RPC 是支持 WordPress 與其他系統(tǒng)之間通信的規(guī)范。XML-RPC 不僅用于移動應(yīng)用程序:它還用于允許 WordPress 和其他博客平臺之間進(jìn)行通信,還支持引用和 pingback。但是由于 REST API 已集成到 WordPress 核心中,因此 xmlrpc.php 文件不再用于此通信。
如果您的站點上啟用了 XML-RPC,則黑客可能會利用 xmlrpc.php 在短時間內(nèi)向您的站點發(fā)送大量 pingback,從而在您的站點上發(fā)起 DDoS 攻擊。這可能會使服務(wù)器超載,并使站點無法正常運行。而每次 xmlrpc.php 發(fā)出請求時,它都會發(fā)送用戶名和密碼進(jìn)行身份驗證,所以,黑客可以使用它來嘗試爆破您的站點。
在此基礎(chǔ)上,我們 還發(fā)現(xiàn)了攻擊//xmlrpc.php
地址,來耗盡 WordPress 站點的服務(wù)器資源,所以更加推薦最后一種方法。
因此,您現(xiàn)在應(yīng)該在站點上禁用 xmlrpc.php,但是很多人不知道該如何停用 xmlrpc.php 文件,雖然將其刪除是最簡單的方法,但是由于 WordPress 經(jīng)常升級,又會重新生成該文件,所以在此基礎(chǔ)上,WPEXP 跟大家分享五個禁用 xmlrpc.php 的方法,供大家選擇使用。
在當(dāng)前主題的 functions.php 文件添加下面這行代碼就能關(guān)閉 xmlrpc.php
復(fù)制
//通過 functions.php 函數(shù)文件禁用 xmlrpc.php
add_filter('xmlrpc_enabled','__return_false');
在 WordPress 根目錄編輯 wp-config.php 文件,最開始的地方添加:
復(fù)制
if(strpos($_SERVER['REQUEST_URI'],'xmlrpc.php')!==false){
$protocol = $_SERVER['SERVER_PROTOCOL']??'';
if(!in_array($protocol,['HTTP/1.1','HTTP/2','HTTP/2.0','HTTP/3'],true)){
$protocol ='HTTP/1.0';
}
header("$protocol 403 Forbidden",true,403);
die;
}
Nginx 規(guī)則
復(fù)制
location ~*^/xmlrpc.php$ {
return403;
}
Apache 規(guī)則
在 .htaccess 文件前面添加以下代碼。
復(fù)制
<Filesxmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
這個的前提要求需要保護好自己的服務(wù)器 IP 不被發(fā)現(xiàn),在此基礎(chǔ)上可以在云防火墻或者 CDN 中寫好阻止 xmlrpc.php 訪問,比上述所有配置都要進(jìn)一步降低服務(wù)器性能的消耗,因為它還沒有請求你服務(wù)器就被攔截了。
這里以 CloudFlare WAF 防火墻為例,在添加/xmlrpc.php
基礎(chǔ)上,再添加一個//xmlrpc.php
以防萬一。怕大家看不懂,這里使用 URI 完整,小伙伴們可以考慮使用 URI 包含規(guī)則,填寫一個/xmlrpc.php
即可。
退而求其次,如果你有使用寶塔的 Nginx 防火墻,那么也可以使用防火墻來阻止 xmlrpc.php 訪問。但是這個畢竟還是會涉及服務(wù)器資源的占用,在能夠做好 IP 不泄露的情況下,使用云端防火墻或 CDN 去阻止是最好的!