
XML-RPC WordPress 規範的開發是為了使不同系統之間的通訊標準化,這意味著WordPress以外的應用程式(如其他部落格平臺和桌面客戶端)可以與WordPress互動。
自WordPress成立以來,該規範一直是WordPress的一部分,並做了非常有用的工作。 如果沒有它,WordPress就會處於自己的孤島中,與網際網路的其他部分隔絕。
然而,xmlrpc.php也有其缺點。 它可以為您的WordPress網站引入漏洞,現在已經被WordPress REST API取代,它在向其他應用程式開放WordPress方面做得更好。
在這篇文章中,我們將解釋什麼是xmlrpc.php,為什麼您應該禁用它,並幫助您識別它是否在您的WordPress網站上執行。
準備好了嗎? 讓我們潛入其中吧!
Xmlrpc.php是什麼?
XML-RPC是一個規範,可以在WordPress和其他系統之間進行通訊。 它透過將這些通訊標準化,使用HTTP作為傳輸機制,使用XML作為編碼機制來實現這一工作。
XML-RPC早於WordPress:它存在於b2部落格軟體中,該軟體早在2003年就被分叉來建立WordPress。 系統背後的程式碼儲存在一個名為xmlrpc.php的檔案中,在網站的根目錄中。 儘管XML-RPC在很大程度上已經過時了,但它仍然存在。
在WordPress的早期版本中,XML-RPC預設關閉。 但自3.5版本以來,它已預設啟用。 這樣做的主要原因是允許WordPress移動應用程式與您的WordPress安裝進行對話。
如果您在3.5版本之前使用過WordPress移動應用程式,您可能會記得必須在您的網站上啟用XML-RPC,該應用程式才能釋出內容。 這是因為該應用程式本身沒有執行WordPress;相反,它是一個單獨的應用程式,使用xmlrpc.php與您的WordPress網站進行通訊。
但它不僅僅是用於XML-RPC的移動應用程式:它還用於允許WordPress和其他部落格平臺之間的通訊,它支援回溯和回溯,併為Jetpack外掛提供動力,該外掛將自託管的WordPress網站連結到WordPress.com。
但由於REST API已整合到WordPress核心中,xmlrpc.php檔案不再用於此通訊。 相反,REST API用於與WordPress移動應用程式、桌面客戶端、其他部落格平臺、WordPress.com(用於Jetpack外掛)以及其他系統和服務進行通訊。 REST API可以與之互動的系統範圍比xmlrpc.php允許的系統範圍大得多。 此外,還有更大的靈活性。
由於REST API已經取代了XML-RPC,您現在應該在網站上禁用xmlrpc.php。 讓我們看看為什麼。
為什麼你應該禁用xmlrpc.php呢
您應該在WordPress網站上禁用xmlrpc.php的主要原因是,它引入了安全漏洞,並可能成為攻擊的目標。
既然不再需要XML-RPC在WordPress之外進行通訊,就沒有理由讓它保持活躍。 這就是為什麼透過禁用它來使您的網站更安全是明智的。
如果xmlrpc.php是一種安全責任,並且它不再工作,為什麼它沒有從WordPress中完全刪除?
原因是WordPress的關鍵功能之一始終是向後相容。 如果您管理好您的網站,您將知道保持WordPress以及任何外掛或主題的更新至關重要。
但總會有一些網站所有者不願意或無法更新他們的WordPress版本。 如果他們執行的是早於REST API的版本,他們仍然需要訪問xmlrpc.php。
讓我們更詳細地看看具體的漏洞。
透過XML-RPC Pingback進行DDoS攻擊
Xmlrpc.php啟用的功能之一是pingbacks和trackbacks。 這些是當另一個部落格或網站連結到您的內容時,出現在您網站上的評論中的通知。
XML-RPC規範使這種通訊成為可能,但它已被REST API所取代(正如我們已經看到的)。
如果您的網站上啟用了XML-RPC,駭客可能會利用xmlrpc.php在短時間內向您的網站傳送大量pingback,從而對您的網站進行DDoS攻擊。 這可能會使您的伺服器超載,使您的網站無法執行。
透過XML-RPC進行暴力攻擊
每次xmlrpc.php提出請求時,它都會傳送使用者名稱和密碼進行身份驗證。 這構成了重大的安全責任,是REST API不會做的事情。 事實上,REST API使用OAuth,它傳送令牌進行身份驗證,而不是使用者名稱或密碼。
由於xmlrpc.php在每次請求中都會傳送身份驗證資訊,駭客可以使用它來嘗試訪問您的網站。 像這樣的暴力攻擊可能會允許他們插入內容、刪除程式碼或損壞您的資料庫。
如果攻擊者向您的網站傳送了足夠的請求,每個請求都有不同的使用者名稱和密碼對,他們最終有可能擊中正確的請求,讓他們訪問您的網站。
這就是為什麼,如果您正在執行最新版本的WordPress,該版本使用REST API與外部系統通訊,您應該禁用xmlrpc.php。 不需要它,它可能會使您的網站變得脆弱。
xmlrpc.php是否在您的WordPress網站上運行著?
您需要做的第一件事是確定xmlrpc.php是否在您的WordPress網站上執行。
這不是檢查檔案是否存在的簡單案例:它是每個WordPress安裝的一部分,即使XML-RPC被禁用,它也會存在。
要檢查您的網站上是否啟用了xmlrpc.php,請使用WordPress XML-RPC驗證服務。
如果您執行檢查並發現xmlrpc.php在您的網站上仍然啟用,您如何將其關閉?
如何禁用xmlrpc.php
有三種方法可以禁用xmlrpc.php:
Let’s take a look at each one individually.
如何使用外掛禁用xmlrpc.php
安裝外掛來禁用xmlrpc.php是最簡單的方法。 禁用XML-RPC外掛將完全禁用它。 這就是你如何使用它。
我的起點是我自己的網站,上面啟用了xmlrpc.php。 你可以透過我做的支票看到這個:

安裝外掛 透過WordPress管理員中的外掛 選單,然後啟用它。
您不必做其他任何事情:啟用外掛將導致它禁用XML-RPC。現在,如果我在我的網站上執行檢查,我會得到不同的結果:

It’s that simple!
使用外掛禁用XML-RPC Pingbacks
但是,如果您想禁用xmlrpc.php的某些方面而不是其他方面呢? 禁用XML-RPC Pingback外掛允許您僅禁用pingback功能,這意味著如果需要,您仍然可以訪問XML-RPC的其他功能。
該外掛的工作方式與禁用XML-RPC外掛相同:只需安裝,啟用它,它就會工作。
使用外掛配置XML-RPC和REST API啟用
如果您想更精細地控制xmlrpc.php和REST API在您的網站上的配置方式,您可以安裝 REST XML-RPC Data Checker plugin。
安裝並啟用此外掛後,請轉到 設定 > REST XML-RPC Data Checker 並點選 XML-RPC。

這允許您準確配置xmlrpc.php的哪些方面在您的網站上處於活動狀態。
或者,您可以將其完全關閉。 如果您也想控制REST API,外掛會為您提供另一個選項卡。
如何在沒有外掛的情況下禁用xmlrpc.php
如果您不想在您的網站上安裝另一個外掛,您可以透過在過濾器中新增一些程式碼或新增到您的.htaccess檔案中來禁用xmlrpc.php。 讓我們來看看這兩種方法。
透過過濾器禁用xmlrpc.php
這裡的一個選項是使用 xmlrpc_enabled 過濾器來禁用xmlrpc.php。 將此功能新增到外掛中,並在您的網站上啟用它:
add_filter( 'xmlrpc_enabled', '__return_false' );
您可以將此新增到主題函式檔案中,但編寫外掛是更好的做法。
另一個選項與編輯您的.htaccess檔案有關,該檔案適用於使用Apache的託管提供商,透過FTP或cPanel連線到您網站的伺服器。
透過.htacess檔案禁用xmlrpc.php
在您的 .htaccess 檔案中,新增此程式碼:
<Files "xmlrpc.php">
Require all denied
</Files>
請務必在這樣做之前複製舊檔案,以防您遇到任何問題。
讓您的託管提供商禁用xmlrpc.php
或者,如果檢測到攻擊,一些託管提供商將禁用xmlrpc.php。
這將產生 403錯誤,並阻止攻擊。
在Kinsta,不用擔心,這已經被封鎖了。 如有任何問題,請聯絡支援
如果你自己在做這件事,最好使用上述方法之一。 但在你做之前,一定要先和你的託管提供商核實一下。
您什麼時候需要啟用xmlrpc.php?
在某些情況下,您可能確實需要在WordPress網站上啟用xmlrpc.php,或者您不應該完全禁用它。
這些是:
- 您沒有執行REST API(不建議執行,但在某些情況下是必要的),但需要在WordPress網站和其他系統之間進行通訊。
- 您無法將WordPress更新到4.4或更高版本,因此無法訪問REST API。 這可能是由於您的託管設定受到限制(在這種情況下,我會更改託管提供商)或主題或外掛不相容(在這種情況下,我會更換或更新它們)。
- 您正在使用一個無法訪問WP REST API但可以訪問XML-RPC的外部應用程式(從長遠來看,我建議更新該應用程式或切換到與REST相容的應用程式)。
就是這樣! 這些都不是保持XML-RPC規範開啟的特別好理由。
它仍然在WordPress中的唯一原因是向後相容,只有當你使用過時的系統時,你才會使用它。 對於任何希望保持網站更新並使用最新技術的人來說,禁用xmlrpc.php是首選。
總結
XML-RPC規範是在WordPress建立之前開發的,作為WordPress與外部系統和應用程式通訊的一種手段。 它有固有的安全缺陷,可能會使您的網站容易受到攻擊。
現在REST API允許您的網站與其他應用程式通訊,您可以安全地禁用xmlrpc.php。 如果您按照上述步驟操作,透過禁用它,您將提高網站的安全性。