WordPress中xmlrpc.php的完整指南(它是什麼,有安全風險,如何禁用它)

XML-RPC 規範的開發是為了使不同系統之間的通訊標準化,這意味著以外的應用程式(如其他部落格平臺和桌面客戶端)可以與互動。

成立以來,該規範一直是的一部分,並做了非常有用的工作。 如果沒有它,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:

  1. 如何使用外掛禁用xmlrpc.php
  2. 如何在沒有外掛的情況下禁用xmlrpc.php
  3. 讓您的託管提供商禁用xmlrpc.php

Let’s take a look at each one individually.

如何使用外掛禁用xmlrpc.php

安裝外掛來禁用xmlrpc.php是最簡單的方法。 禁用XML-RPC外掛將完全禁用它。 這就是你如何使用它。

我的起點是我自己的網站,上面啟用了xmlrpc.php。 你可以透過我做的支票看到這個:

Rachel McCollin website - XML-RPC check
Rachel McCollin網站 – XML-RPC檢查

安裝外掛 透過WordPress管理員中的外掛 選單,然後啟用它。

您不必做其他任何事情:啟用外掛將導致它禁用XML-RPC。現在,如果我在我的網站上執行檢查,我會得到不同的結果:

Rachel McCollin website - second XML-RPC check
Rachel McCollin網站-第二次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

REST XML-RPC Data Checker
REST 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。 如果您按照上述步驟操作,透過禁用它,您將提高網站的安全性。

參考來源:
關鍵字:
  • WordPress 6.8 版本代號為 “Cecil”

    每個 WordPress 版本都會慶祝一位在音樂上留下不可磨滅印記的藝術家。 WordPress 6.8,代號為「Cecil」,向傳奇鋼琴家和爵士樂先驅 Cecil Taylor 致敬。 Taylor 經過古典訓練,但又非常規,將鋼琴重新想象為一種打擊樂器——將音調、復調和節奏分層成既混亂又精確的聲音。 他的音樂違背了人們的期望,在無序中找到了形式,在不和諧中找到了和諧。
    2025.04.16 Wednesday
  • WordCamp Europe 2025:在瑞士巴塞爾舉辦!

    WordCamp Europe 2025將於6月5日至7日在瑞士(Switzerland)美麗的巴塞爾(Basel)舉行。 它將彙集來自整個地區和世界各地的開源愛好者、開發人員和 WordPress 專業人士! 今年的活動提供了新鮮的觀點、引人入勝的對話,以及無數的機會,在充滿行動的學習、網路和協作的三天裡,與WordPress社群、機構和創新者建立聯絡。
    2025.04.16 Wednesday
  • 網站內容管理的6個頂級Drupal替代品

    發現頂級 Drupal 網站管理內容的替代方案,並瞭解如何選擇最適合您需求的CMS平臺。
    2025.04.07 Monday
  • 10個最佳 WooCommerce 的 WordPress 區塊主題

    WordPress 區塊主題旨在為內容管理系統(CMS)帶來無程式體驗。 您可以使用網站編輯器完全在網頁瀏覽器中設計和構建您的網站,也包含 WordPress所有基礎知識。 這個方便的工具也與 WooCommerce 配合得很好。 電子商務外掛包含幾個塊,您可以與這些新主題一起使用。 建立一個有吸引力且實用的線上商店比以往任何時候都更容易。
    2025.03.03 Monday
  • WordCamp Asia 2025 : 憧憬未來 塑造明天

    WordPress 旗艦活動以專門的貢獻者日開始,然後是為期兩天的引人入勝的講座、小組討論、實踐研討會和網路。 著名的嘉賓包括WordPress聯合創始人Matt Mullenweg和Gutenberg首席架構師Matías Ventura,他們加入了各種各樣的演講者和小組成員。
    2025.02.24 Monday