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

開發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和其他博客平台之間進行通信,它支持引用和pingback,並為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 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。不需要它,這可能會使您的網站易受攻擊。

使用WordPress,我們的流量增長了1,187%。
我們將向您展示如何。
加入20,000多個其他人,他們每周都會收到有關WordPress內部技巧的新聞!

現在訂閱

成功!感謝您的訂閱

您將在一周內收到下一期的Kinsta新聞通訊。

訂閱Kinsta新聞通訊

訂閱

我同意條款和條件以及隱私政策

信息

儘管Kinsta本身不支持OAuth,但Enterprise及以上計劃可以要求將其實現。

xmlrpc.php是否在您的WordPress網站上運行?

您需要做的第一件事是確定xmlrpc.php是否正在您的WordPress網站上運行。

這不是檢查文件是否存在的簡單情況:它是每個WordPress安裝的一部分,即使XML-RPC被禁用,該文件也將存在。

刪除任何內容之前,請務必備份您的網站。在這種情況下,不要僅僅刪除xmlrpc.php文件,因為它會破壞您的站點。

要檢查您的站點上是否啟用了xmlrpc.php,請使用WordPress XML-RPC驗證服務。這將檢查您的站點並告訴您是否啟用了xmlrpc.php。

WordPress XML-RPC驗證服務

WordPress XML-RPC驗證服務

這是我在服務上檢查此站點時得到的結果。

Kinsta XML-RPC檢查

Kinsta XML-RPC檢查

這表明xmlrpc.php在kinsta.com上已被禁用。因此,如果您運行檢查並發現xmlrpc.php仍在您的站點上啟用,如何關閉它?

如何禁用xmlrpc.php

有三種禁用xmlrpc.php的方法:

讓我們分別看看每個。

如何使用插件禁用xmlrpc.php

安裝插件以禁用xmlrpc.php是最簡單的方法。Disable XML-RPC插件將完全禁用它。使用方法如下。

我的出發點是我自己的網站,在該網站上啟用了xmlrpc.php。您可以通過我做的支票看到:

Rachel McCollin網站-XML-RPC檢查

Rachel McCollin網站– XML-RPC檢查

通過WordPress管理員中的「插件」屏幕安裝插件,然後將其激活。

您無需執行其他任何操作:激活插件將導致它禁用XML-RPC。現在,如果我在自己的網站上進行檢查,則會得到不同的結果:

Rachel McCollin網站-第二次XML-RPC檢查

Rachel McCollin網站–第二次XML-RPC檢查

就這麼簡單!

禁用帶有插件的XML-RPC Pingbacks

但是,如果您想禁用xmlrpc.php的某些方面而不是其他方面,該怎麼辦?使用Disable XML-RPC Pingback插件,您可以僅禁用pingback功能,這意味著如果需要,您仍然可以訪問XML-RPC的其他功能。

該插件的工作方式與Disable XML-RPC插件相同:只需安裝,激活它,它便會工作。

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

如果要更精細地控制在站點上同時配置xmlrpc.php和REST API的方式,則可以安裝REST XML-RPC Data Checker插件。

安裝並激活此插件後,轉到「設置」>「 REST XML-RPC數據檢查器」,然後單擊「 XML-RPC」選項卡。

REST XML-RPC數據檢查器

REST XML-RPC數據檢查器

這使您可以準確配置xmlrpc.php的哪些方面在您的站點上處於活動狀態。

另外,您也可以將其完全關閉。而且,如果您還想控制REST API,則該插件會為您提供另一個選項卡。

是否需要快速,安全且對開發人員友好的託管?Kinsta在構建時就考慮了WordPress開發人員,並提供了許多工具和功能強大的儀錶板。查看我們的計劃

如何在沒有插件的情況下禁用xmlrpc.php

如果您不想在網站上安裝其他插件,則可以通過在過濾器中或向.htaccess文件中添加一些代碼來禁用xmlrpc.php。讓我們看看這兩種方法。

通過過濾器禁用xmlrpc.php

這裡的一個選項是使用xmlrpc_enabled過濾器禁用xmlrpc.php。將此功能添加到插件並在您的站點上激活它:

add_filter(’xmlrpc_enabled’,’__return_false’);

您可以將其添加到主題函數文件中,但是最好寫一個插件。

另一個選項與編輯.htaccess文件有關,該文件可通過FTP或cPanel連接到您站點的伺服器,而使用Apache的託管服務提供商可以使用該文件。

信息

Kinsta使用Nginx Web伺服器,這意味著您將沒有可用的.htaccess文件。相反,您可以利用儀錶板內的工具,這些工具可以通過MyKinsta儀錶板以更直觀的方式複製許多重要的.htaccess功能。

通過.htacess文件禁用xmlrpc.php

在您的.htaccess文件中,添加以下代碼:

<Files xmlrpc.php>
允許
所有訂單,拒絕拒絕
</ Files>

這樣做之前,請確保對舊文件進行備份,以防萬一遇到任何問題。

讓您的託管服務提供商禁用xmlrpc.php

或者,如果檢測到攻擊,某些託管服務提供商將禁用xmlrpc.php。

在Kinsta,當檢測到通過XML-RPC的攻擊時,會自動將一小段代碼添加到Nginx.config文件中:

位置〜* ^ / xmlrpc.php $ {
返回403;
}

這將產生403錯誤,並停止攻擊。

如果您自己執行此操作,則最好使用上述方法之一。但是在您這樣做之前,請務必先諮詢您的託管服務提供商。

您何時需要啟用xmlrpc.php?

在某些情況下,您確實需要在WordPress網站上啟用xmlrpc.php,或者您不應該完全禁用它。

這些是:

  • 您沒有運行REST API(不建議使用,但在某些情況下是必需的),但是需要在WordPress網站和其他系統之間進行通信。
  • 您無法將WordPress更新到版本4.4或更高版本,因此無權訪問REST API。這可能是由於您的託管設置受到限制(在這種情況下,我將更改託管提供商)或主題或插件不兼容(在這種情況下,我將替換或更新這些內容)。
  • 您正在使用無法訪問WP REST API但可以訪問XML-RPC的外部應用程序(從長遠來看,我建議您更新該應用程序或切換到REST兼容的應用程序)。

而已!這些都不是保持XML-RPC規範打開的特別好的理由。

它仍然存在於WordPress中的唯一原因是為了向後兼容,只有在使用過時的系統時才使用它。對於任何想要使其站點保持最新狀態並使用最新技術的人,禁用xmlrpc.php都是路要走。

/ *單擊鳴叫* /
正文a.novashare-ctt {
display:block;
背景:#00abf0;
邊距:30px自動;
填充:20px 20px 20px 15px;
顏色:#ffffff;
文字修飾:無!重要;
box-shadow:無!重要;
-webkit-box-shadow:無!重要;
-moz-box-shadow:無!重要;
邊框:無;
左邊框:5px實線#00abf0;
}
body a.novashare-ctt:hover {
color:#ffffff;
左邊框:5px實線#008cc4;
}
正文a.novashare-ctt:visited {
color:#ffffff;
}
body a.novashare-ctt * {
指針事件:無;
}
正文a.novashare-ctt .novashare-ctt-tweet {
顯示:塊;
font-size:18px;
行高:27px;
底邊距:10px;
}
body a.novashare-ctt .novashare-ctt-cta-container {
display:block;
溢出:隱藏;
}
body a.novashare-ctt .novashare-ctt-cta {
float:right;
}
body a.novashare-ctt.novashare-ctt-cta-left .novashare-ctt-cta {
float:left;
}
body a.novashare-ctt .novashare-ctt-cta-text {
font-size:16px;
行高:16px;
垂直對齊:中間;
}
正文a.novashare-ctt .novashare-ctt-cta-icon {
margin-left:10px;
顯示:inline-block;
垂直對齊:中間;
}
正文a.novashare-ctt .novashare-ctt-cta-icon svg {
vertical-align:middle;
高度:18px;
}
/ *簡單+簡單替代主題* /
正文a.novashare-ctt.novashare-ctt-simple {
背景:無;
填充:10px 0px 10px 20px;
顏色:初始;
}
正文a.novashare-ctt.novashare-ctt-simple-alt {
背景:#f9f9f9;
填充:20px;
顏色:初始;
}
正文a.novashare-ctt.novashare-ctt-simple:hover,正文a.novashare-ctt.novashare-ctt-simple-alt:hover {
border-left:5px solid#008cc4;
}
正文a.novashare-ctt.novashare-ctt-simple .novashare-ctt-cta,正文a.novashare-ctt.novashare-ctt-simple-alt .novashare-ctt-cta {
顏色:#00abf0;
}
正文a.novashare-ctt.novashare-ctt-simple:hover .novashare-ctt-cta,正文a.novashare-ctt.novashare-ctt-simple-alt:hover .novashare-ctt-cta {
顏色:#008cc4;
}
XML-RPC曾經是WordPress的重要組成部分。現在,它代表了安全風險?-本指南將準確告訴你如何禁用它在您的網站?。點擊鳴叫
摘要

XML-RPC規範是在WordPress創建之前就開發的,它是WordPress與外部系統和應用程序進行通信的一種手段。它具有固有的安全漏洞,可能使您的站點容易受到攻擊。

既然REST API允許您的站點與其他應用程序通信,則可以安全地禁用xmlrpc.php。如果您按照上述步驟操作,則可以通過禁用它來提高網站的安全性。

如果您喜歡這篇文章,那麼您會喜歡Kinsta的WordPress託管平台。加速您的網站並獲得我們經驗豐富的WordPress團隊的24/7支持。我們基於Google Cloud的基礎架構專註於自動擴展,性能和安全性。讓我們向您展示Kinsta的與眾不同!查看我們的計劃

相關文章