WordPress 安全最佳實踐

已發表: 2022-03-10

有很多關於 WordPress 安全性的神話和 FUD(恐懼、不確定性和懷疑)。 在強化網站以抵禦潛在攻擊時,需要考慮很多因素。 那麼,企業如何學習 WordPress 安全最佳實踐,從而為他們提供最好的網絡保護呢?

上週,我主持了一場網絡研討會,以揭開 WordPress 安全問題的神秘面紗。 和我一起參加會議的還有 Ayush Malakar(Fresh Consulting 的全棧和 WordPress 開發人員)和 Sean O'Shaughnessy(WordPress VIP 解決方案工程負責人)。

通過四個指導性問題,這兩位專家探討了開發人員、管理員、網站所有者和高管應牢記的安全最佳實踐。 讓我們回顧一下我們談論的內容。

開源軟件安全嗎?

並非所有開源都是平等的。 但隨著 WordPress 出現 18 年,並為全球 40% 以上的網站提供支持,很明顯,採用率正在增長。 但即使是世界上最流行的開源軟件,也存在關於其安全漏洞的問題。 是不是所有公開的代碼都容易受到攻擊?

不一定,Ayush 說:“因為我們有這麼多眼睛在註視它,所以它更安全。”

儘管看起來有悖常理,但開源軟件實際上比閉源專有軟件更安全。 這就是為什麼。

更多關注潛在威脅

由於開源是公開運行的,因此沒有什麼可隱瞞的。 社區中的許多開發人員都在關注它並進行更新,從而激發信心和信任。 如果發現漏洞,會盡快修復——通常在一兩天內。

持續的代碼測試和錯誤賞金

任何人都可以為 WordPress 做出貢獻,並且代碼經過了數千名 WordPress 核心貢獻者的社區的測試。 隨著代碼的不斷測試,它越來越可靠。

此外,漏洞賞金計劃鼓勵公眾發現漏洞和漏洞,包括暴力攻擊、DDoS、網絡釣魚等。

安全更新

當安全更新發生時,網站開發人員需要確保核心代碼保持最新並防止最新的攻擊媒介。 自動更新也可用,企業開發人員應該考慮這些是否是每個項目的正確選擇。

我的代碼安全嗎?

WordPress 核心只是組成 WordPress 網站的代碼“桶”之一。 位於社區開發軟件之上的是網站的應用程序代碼——它的主題或前端,以及插件。

雖然開源 WordPress 核心代碼是由社區開發的,但為單個網站編寫或部署到單個網站的應用程序代碼也可能引入安全漏洞。

您可以採取各種措施來確保您的應用程序代碼盡可能地加強抵禦攻擊。 雖然您可能會針對不同的項目做出不同的決定,但取決於可接受的風險水平,最重要的是要了解潛在的攻擊媒介。

在這裡,我們的網絡研討會專家有一些建議。

WordPress安全工具

開發人員可以使用各種工具來幫助識別第一方和第三方代碼中的安全漏洞。

“每當我們談論工具時,我們都需要了解這些工具的優缺點以及我們應該如何最好地利用這些工具來發揮自己的優勢?”

— Ayush Malakar,新鮮諮詢

這些工具可以執行靜態或動態代碼分析。 靜態分析是在不執行任何代碼的情況下完成的,通常可以找出代碼中大約 85% 的缺陷。 動態代碼分析依賴於研究代碼在執行期間的行為方式,並具有發現代碼與其他系統組件(如 SQL 數據庫、應用程序服務器或 Web 服務)交互導致的安全問題的額外能力。

權衡執行此代碼分析的人與機器的好處很重要。 機器學習 (ML) 和人工智能 (AI) 可用作第一道防線,以確保識別常見證券。 但事後讓人類查看代碼也很有價值。 這確保了人類可以在不同方面工作,例如基於特徵的漏洞、邊緣案例等。

我們的專家推薦的一些工具:

  • WPScan 是一個 CLI 工具,開發人員可以使用它來掃描他們的代碼以查找安全漏洞。 Ayush 建議開發人員在 cron 作業中運行它。
  • PHP_CodeSniffer (PHPCS) 檢查代碼並突出顯示從語法到安全漏洞的問題。 WordPress 有一套特定的標準。 這可以設置為在持續集成 (CI) 管道中運行,並在所有 WordPress VIP 存儲庫中運行。
  • Fresh Consulting 使用 Sonar Cloud 進行靜態代碼分析,掃描 PHP 和 JS 代碼中的漏洞和更安全的實現。

“我們是否進行了適量的輸入驗證? 我們是否正確地清理了我們將在代碼中擁有的任何類型的輸出?”

— Sean O'Shaughnessy,WordPress VIP

安全和 WordPress 插件

選擇第三方插件時,請尋找具有良好評論和評級、大量下載以及在您的網站中使用的靈活性的插件。 確保插件已更新並與最新版本的 WordPress 兼容。

不要使用可以自己編寫的插件。 尤其是在只需要少量代碼的情況下,請在您的主題中編寫此代碼,而不是使用插件。 這將確保在更新插件時不會引入任何漏洞。

“我建議在主題本身內編寫代碼,因為我過去看到的是插件,它們做任何更新的工作非常少。 而且隨著技術的發展,這些插件可能不會。 這些插件引入漏洞的可能性可能高於我們的預期。”

— Ayush Malakar,新鮮諮詢

與往常一樣,保持代碼更新很重要。 注意核心和插件更新,並使 WordPress、插件和主題保持最新。

安全和 WordPress 端點

XML-RPC 和 REST API 是 WordPress 用來與其他系統或應用程序前端通信的端點。 了解這些端點以及它們是否對您的應用程序很重要很重要,因為它們是潛在的攻擊媒介,如果不需要,可以禁用。

XML-RPC 作為潛在的攻擊媒介

XML-RPC 是一種能夠在 WordPress 和其他系統之間進行通信的規範。 在 WordPress 的早期版本中,XML-RPC 默認是關閉的。 但是從 3.5 版開始,它默認是啟用的。 這樣做的主要原因是允許 WordPress 移動應用程序與您的 WordPress 安裝進行對話。

REST API 作為潛在的攻擊媒介

確保在使用 WordPress REST API 時使用最佳安全實踐。 雖然企業可能需要保持開放,例如在內容需要流向解耦前端的無頭架構中,但要確保那些仍然暴露的具有適當的身份驗證和授權。

“您擁有這座城堡、WordPress、您的應用程序,而吊橋的存在並不能本質上使您的應用程序安全。 但它是一個途徑。 這是進入那座城堡的一條路。 因此,對這些事情有一個很好的理解、了解和核算對於在應用程序安全性方面有一個更好的姿態絕對是至關重要的。”

— Sean O'Shaughnessy,WordPress VIP

我的主機安全嗎?

在確定您的主機是否足夠安全以滿足您的需求時,需要考慮很多因素。 考慮所有可用的安全選項是一個好主意,並且不要忘記在緊急情況下快速支持的重要性 - 例如導致安全事件的插件更新。

“您的託管服務提供商是否提供快速和主動的支持? 此外,當應用程序或插件漏洞被發佈時,他們如何響應?”

— Sean O'Shaughnessy,WordPress VIP

總體而言,尋找一個考慮託管共同責任的平台。 需要考慮的一些功能包括:

文件系統權限

一些主機提供只讀文件系統,而不是能夠寫入文件。 這可以防止 Web 進程用戶能夠在任何地方寫入文件,從而關閉潛在的攻擊媒介。

容器化

尋找一個將您網站的資源與其他客戶的網站隔離開來的主機。 雖然這不是一個全面的安全措施,但容器化確實提供了一個基本的安全措施。 作為獎勵,它還允許用於水平甚至垂直可擴展性的專用資源。

版本控制

當 WordPress 託管平台阻止 SFTP 並允許通過版本控制系統進行代碼更新時,它們會減少應用程序的攻擊面。 此外,通過版本控制管理應用程序源代碼提供了代碼的“原始”副本作為事實來源,以及該代碼的完整、可審計、豐富的上下文歷史。

我的公司如何實施 WordPress 安全性?

安全性不僅僅是代碼或主機級別的考慮。 還有人為因素,公司可以建立定期安全檢查和密碼衛生規則等流程,這將大大提高您網站的安全性。

“在組織層面,重要的是要考慮實施多層持續身份驗證或驗證。”

— Sean O'Shaughnessy,WordPress VIP

零信任和最小權限訪問管理

通過仔細考慮角色和訪問管理,組織可以使人們以盡可能少的特權(因此風險最小)來完成他們的工作。 確保正確定義和分配用戶的角色和能力。 此功能是 WordPress 開箱即用的,並且可以針對任何用例進行擴展。

密碼衛生

用戶應該為每個應用程序創建唯一且難以猜測的密碼。 肖恩特別喜歡這部漫畫,它提倡使用隨機單詞的集合,而不是字母、數字和符號的組合:

XKCD漫畫

2FA 和 SSO

雖然雙因素身份驗證 (2FA) 和單點登錄 (SSO) 技術不會從本質上提高您網站的安全性,但它們確實提供了跨所有受支持應用程序的集中用戶管理的好處。

關鍵的 WordPress 安全要點

  • 開源具有安全優勢
  • 保持 WordPress 和插件更新
  • 使用版本控制
  • 了解 WordPress 端點
  • 尋找考慮安全性的主機
  • 在組織層面採用成熟的安全實踐

在長達一小時的網絡研討會中,我們介紹了更多關於 WordPress 安全性的內容。 如果你錯過了現場直播,我鼓勵你在這裡查看錄音。