如何在 WordPress 中禁用 XML-RPC?

已發表: 2022-09-19

您是否搜索過 xmlrpc.php 文件以及如何在 WordPress 中禁用它? 本文將解釋什麼是 xmlrpc.php 以及如何禁用它。

通過標準化系統之間的通信方法,可以通過 XML-RPC 規範從 WordPress 環境之外的應用程序與 WordPress 進行通信。

自誕生之日起,該規範就對 WordPress 社區具有重要價值。 沒有它,WordPress 就會與互聯網的其他部分隔離開來。

但是,xmlrpc.php 也有一些缺點。 自 xmlrpc.php 文件漏洞被發現以來,WP REST API 已成為 WordPress 的重要組件。 這極大地增強了 WordPress 與其他軟件程序的交互方式。

本文的目的是解釋什麼是 xmlrpc.php,為什麼要禁用它,以及如何禁用它。

我們還建議您查看我們關於最佳 WordPress 安全插件的文章。

什麼是 xmlrpc.php 文件?

本節的目的是回答什麼是 XML-RPC PHP? XML-RPC 規範可用於在 WordPress 和其他系統之間進行通信。

使用 HTTP 作為傳輸協議和 XML 作為編碼協議,XML-RPC 可以標準化這些通信中使用的協議。

WordPress 是在 2003 年從使用 XML-RPC 作為接口的 b2 博客軟件分叉出來的。 名為 xmlrpc.php 的文件位於系統的根目錄中,其中包含此功能的代碼。 即使 XML-RPC 基本上已經過時,該文件仍然可用。

在早期版本的 WordPress 中,禁用 XML-RPC 是默認設置。 從 3.5 版開始,默認啟用它以支持您的 WordPress 移動應用程序和您的 WordPress 安裝之間的通信。

在 WordPress 3.5 版之前,只有在您的站點配置了 XML-RPC 時,WordPress 移動應用才能發佈內容。 這是由於應用程序沒有運行 WordPress 造成的; 相反,它使用 xmlrpc.php 與您的 WordPress 站點進行通信。

此外,XML-RPC 用於在 WordPress 和其他博客平台之間以及 WordPress 和 WordPress 移動應用程序之間進行通信。

XML-RPC 可用於 pingbacks 和 trackbacks。 它還充當 Jetpack 插件的後端,這使得自託管 WordPress 網站成為 WordPress.com 的成員成為可能。

因為 REST API 現在已經集成到 WordPress 核心中,所以我們不再使用 xmlrpc.php 文件。 您現在可以使用 REST API 與 WordPress 的移動應用程序、桌面客戶端、Jetpack 插件以及其他系統和服務進行通信,而不是使用此文件。

也可以將REST API與更廣泛的系統集成,其靈活性比xmlrpc.php更大。 由於 XML-RPC 已被 REST API 取代,您必須在您的網站上禁用 xmlrpc.php 以避免出現問題。

為什麼要禁用 XML-RPC?

您應該知道 xmlrpc.php 文件可能會將您的 WordPress 站點的啟用 XML-RPC 的漏洞暴露給黑客,因此您必須禁用它。

WordPress 之外的通信不再需要使用 XML-RPC。 如果您希望盡可能地保持您的網站安全,您應該禁用它。

正是出於這個原因,WordPress 將始終向後兼容。 如果您對它們負責,您應該不斷更新與 WordPress 網站相關的 WordPress 插件和主題。

如果在您的網站上啟用了 XML-RPC,黑客可以將其用作對您的網站發起 DDoS 攻擊的工具。 他們可以使用 xmlrpc.php 模塊為您的站點生成許多 pingback,這可能會使服務器超載並導致網站崩潰。

此外,xmlrpc.php 還會在每個請求中發送身份驗證信息,因此黑客可能會攔截此信息並使用它來嘗試訪問您的網站。 這種蠻力攻擊可以讓黑客執行惡意代碼、刪除代碼,甚至破壞您的數據庫。

如何檢查 XML-RPC 是否啟用?

請點擊以下鏈接訪問網站:WordPress XML-RPC Validation Service。

輸入域名後,單擊“檢查”按鈕。

檢查 xmlrpc 是否在 WordPress 上啟用

如果測試成功,現在將啟用 XML-RPC,應該立即將其關閉。

使用 WordPress 插件禁用 XMLRPC

由於各種原因,站點所有者可能希望禁用 XMLRPC 功能。 您可以使用各種插件來執行此操作,例如禁用 XML-RPC。

使用禁用 XML-RPC 插件禁用 XMLRPC

我們將解釋如何使用禁用 XML-RPC 插件來禁用 XMLRPC 功能。 請登錄您的 WordPress 管理面板。

1. 點擊插件,然後添加新的。

2. 在搜索框中輸入“禁用 XML-RPC”。 之後安裝禁用 XML-RPC 插件。

在 WordPress 中安裝新插件

3.激活插件,你就可以開始了。 然後,XML-RPC 被禁用。

安裝禁用 CML-RPC 插件

在這個插件中,你可以找到一個 XML-RPC Validator,可以用來檢查 XML-RPC 是否被禁用。 如果 XML-RPC 已被禁用,則會出現一條失敗消息。 如果沒有,您可以使用此插件禁用它。

使用插件配置 XML-RPC 和 REST API 激活

REST XML-RPC Data Checker 插件允許您以更細粒度的方式在您的網站上配置 REST API 和 xmlrpc.php。

安裝並激活插件後,單擊設置中的 REST XML-RPC 數據檢查器選項卡後單擊 XML-RPC 選項卡。

通過該插件,您可以準確指定在您的站點上啟用了 xmlrpc.php 的哪些功能。 也可以完全禁用它。 如果您選擇這樣做,插件中還有一個選項卡允許您控制 REST API。

在沒有插件的情況下禁用 XMLRPC

如果您不想向您的網站添加其他插件,您可以使用過濾器或 .htaccess 文件禁用 xmlrpc.php。 讓我們一起考慮這兩個選項。

通過過濾器禁用 xmlrpc.php

通過使用 xmlrpc_enabled 過濾器,很容易禁用 xmlrpc.php。 您應該添加此功能並使其在您的網站上處於活動狀態:

 add_filter( 'xmlrpc_enabled', '__return_false' );

該功能可以添加到主題的功能文件中。 .htaccess 文件也可以使用 cPanel 或 FTP 進行編輯,具體取決於您是否使用 Apache 連接到託管服務提供商。

WordPress 的 __return_false 函數返回布爾假條件。 此過濾器僅阻止需要登錄用戶的操作。

它必須從所有方法中註銷才能禁用 XMLRPC 服務器的所有操作。 為了實現這一點,您需要掛鉤到 xmlrpc_methods 過濾器。

 add_filter( 'xmlrpc_methods', 'betterstudio_remove_xmlrpc_methods' ); function 'betterstudio_remove_xmlrpc_methods( $methods ) { $methods = array(); //empty the array return $methods; }

發出請求時,xmlrpc.php 文件創建 wp_xmlrpc_server 類的對象。 在 wp-includes 文件夾中有一個類文件,其中包含一個名為方法的屬性。

methods 屬性包括一組可通過 XML-RPC 請求訪問的函數名稱。

如果該函數未包含在此數組中,則返回該函數並顯示錯誤消息。 因此,如果您清空數組,您可以放心,您將無法使用任何函數。

使用 .htaccess 禁用 XML-RPC

使用 .htaccess 禁用 XML-RPC 包括幾個簡單​​的步驟。 這是禁用 xmlrpc.php .htaccess 的方法:

  • 您可以使用 FTP 或文件管理器導航到您網站的根目錄。
  • 您應該打開 .htaccess 文件。
  • 您需要將以下代碼添加到您的 .htaccess 文件中:
 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all allow from xxx.xxx.xxx.xxx </Files>

xxx.xxx.xxx.xxx 可以替換為您希望授予對 xmlrpc.php 訪問權限的 IP 地址。 如果您希望從 WordPress 中完全刪除 xmlrpc.php,您可以刪除此行。

在 Apache/Nginx 中禁用 XMLRPC

在 Apache/Nginx 中禁用 XMLRPC 也是一個簡單的過程。 應將以下代碼添加到 Apache 配置文件以禁用 xmlrpc.php:

 < VirtualHost > ---------- < files xmlrpc.php > order allow,deny deny from all < /files > < /VirtualHost >

使用 Nginx 配置文件中的以下代碼,可以禁用 xmlrpc.php:

 server { ----------- location /xmlrpc.php { deny all; } }

如何在不同的 Linux 發行版中搜索和發現 XML-RPC 攻擊?

如果您在不同的 Linux 發行版中搜索 XML-RPC 攻擊,您可以使用以下命令來阻止 xmlrpc.php 攻擊:

安裝了 Apache 的 CentOS 服務器:
 # grep xmlrpc /var/logs/httpd/access.log
在 Ubuntu 上使用 Apache:
 # grep xmlrpc /var/logs/apache2/access.log
對於基於 Nginx 的服務器:
 # grep xmlrpc /var/logs/nginx/access.log
對於基於 cPanel 的服務器:
 # grep xmlrpc /home/username/logs/access.log

如果在受到攻擊的 WordPress 站點上執行之前的命令,您將收到以下輸出:

 POST /xmlrpc.php HTTP/1.0” 200 674 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)

何時啟用 XML-RPC.php 文件

在某些情況下,啟用 XML-RPC 是有利的,以下是其中的一些:

  • 如果您的舊網站因任何原因無法更新到 4.4 或更高版本時,REST API 不可用。
  • 程序無法訪問您用來與其通信的網站上的 REST API。
  • 為了集成一些需要 XML-RPC 才能工作的第三方應用程序。

然而,應該注意的是,以上批評都不足以成為繼續使用 XML-RPC 和 xmlrpc.php 漏洞利用的充分理由。

WordPress 擁有它的唯一原因是它向後兼容; 因此,如果您使用的是過時的 WordPress 版本,您將只想使用它。

對於那些希望保持其站點最新並支持最新軟件版本的用戶,應禁用 xmlrpc.php。

在 WordPress 中測試 XML-RPC 功能

此外,您可以使用 WordPress 測試選項來驗證您的網站是否已成功禁止接收 XML-RPC 請求。

為此,您可以將 WordPress 移動應用程序下載到您的手機上。 此應用程序有 Android 和 iPhone 版本。 在您的設備上安裝應用程序後,點擊輸入您現有的站點地址以開始使用它。

如果您在此站點上看到 XML-RPC 服務被禁用的錯誤消息,那麼您就完成了。 這是 WordPress xmlrpc.php 403 禁止消息。

結論

XML-RPC 規範是在創建 WordPress 之前開發的,以允許與外部應用程序和系統進行通信。 本規範中存在幾個安全漏洞,可能使您的網站容易受到攻擊。

REST API 允許您的站點與其他程序進行通信,從而可以毫無顧慮地禁用 xmlrpc.php。 如果您希望提高網站的安全性,請按照上述步驟執行此操作。