開發XML-RPC WordPress規範是為了標準化不同系統之間的通信,這意味着WordPress外部的應用程序(例如其他博客平台和桌面客戶端)可以與WordPress進行交互。
自WordPress誕生以來,該規範一直是WordPress的一部分,並且做得非常有用。沒有它,WordPress將會處於自己的孤島,與互聯網的其餘部分分離。
但是,xmlrpc.php有其缺點。它可以向您的WordPress網站引入漏洞,現已被WordPress REST API取代,該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和其他博客平台之間進行通信,還支持引用和pingback,並為Jetpack插件提供了動力,該插件鏈接了一個自託管的WordPress WordPress.com網站。
但是由於REST API已集成到WordPress核心中,因此xmlrpc.php文件不再用於此通信。相反,REST API用於與WordPress移動應用程序,桌面客戶端,其他博客平台,WordPress.com(用於Jetpack插件)以及其他系統和服務進行通信。REST API功能更強,使用更靈活。
由於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 Pingbacks進行DDoS攻擊
xmlrpc.php啟用的功能之一是pingback和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文件,因為它會破壞您的站點。
要檢查您的站點上是否啟用了xmlrpc.php,請使用WordPress XML-RPC驗證服務。這將檢查您的站點並告訴您是否啟用了xmlrpc.php。
WordPress XML-RPC驗證服務
這是我在服務上檢查此站點時得到的結果。
XML-RPC檢查
這表明xmlrpc.php在www.dianjin123.com已被禁用。但是,如果您運行檢查並發現xmlrpc.php仍在您的站點上啟用,如何關閉它?
如何禁用xmlrpc.php
有三種禁用xmlrpc.php的方法:
- 通過插件禁用xmlrpc.php
- 無插件禁用xmlrpc.php
- 讓託管服務提供商禁用xmlrpc.php
讓我們分別看看每個。
如何使用插件禁用xmlrpc.php
安裝插件是禁用xmlrpc.php是最簡單的方法。插件地址https://wordpress.org/plugins/disable-xml-rpc/。使用方法如下。
這個插件使用非常簡單,簡單的無需說明,只需要啟用插件就可以。
如何無插件禁用xmlrpc.php
1、把下面的代碼
add_filter('xmlrpc_enabled','__return_false');
放到functions.php文件中。
2、通過.htacess文件禁用xmlrpc.php
在您的.htaccess文件中,添加以下代碼:
<Files xmlrpc.php>OrderAllow,DenyDeny from all</Files>
為避免遇到任何問題,請確保在此之前先備份舊文件。
讓您的託管服務提供商禁用xmlrpc.php
可以在服務器配置文件Nginx.config中,添加:
location~*^/xmlrpc.php$ {return403;}
這將產生403錯誤。根據自己的實際情況,選擇一種方法。
如果出現升級或通訊錯誤,請先關閉禁用。
本文來源點金主題網。