各框架對策
WordPress 資安 — 正式環境的加固參考
WordPress 正式環境的加固參考:優先順序清單,加上更新、外掛/佈景主題管理、管理員 2FA、降低管理後台暴露、wp-config 與機密、檔案、備份,並附上自我驗證清單。以防禦為主,不含攻擊步驟。
適用對象:任何在經營 WordPress 網站的人。這裡不談攻擊步驟——這是一份加固用的可實作參考:依優先順序排列的清單、各面向的指引,以及自我驗證。想看跨框架的全貌,請見 各框架資安對策的入口。
依優先順序排列的加固清單
由上而下處理這張表。P0 是最高優先,P1 是最常見的事故來源,P2 是持續性的維運衛生。
P0 ── 前提(先做這個)
自動更新/刪除未使用的外掛與佈景主題/強管理員+2FA
P1 ── 最主要的事故來源
外掛最小化/降低管理後台暴露/可還原的備份
P2 ── 維運衛生
wp-config 與機密/檔案權限/HTTPS、標頭、PHP/相依套件的鮮度
| 優先度 | 控制項 | 具體做法(WordPress) |
|---|---|---|
| P0 | 自動更新 | 為核心、外掛、佈景主題啟用自動更新。大版本更新前先備份 |
| P0 | 刪除未使用的 | 未使用的外掛/佈景主題請刪除,別只停用(殘留的檔案仍是攻擊對象) |
| P0 | 強管理員+2FA | 強密碼+雙因素。避免使用 admin 使用者名稱;角色採最小權限 |
| P1 | 外掛最小化 | 安裝前先審查更新頻率、採用度、已知 CVE。數量保持精簡 |
| P1 | 保護登入 | 登入嘗試次數限制。限制 wp-admin/wp-login.php 的暴露 |
| P1 | 降低暴露 | 若未使用就限制 xmlrpc.php。抑制 REST API 的使用者列舉 |
| P1 | 備份 | 離線/異地存放的可還原備份+還原測試+竄改偵測 |
| P2 | wp-config 與機密 | 設定驗證金鑰/salt,保護 wp-config.php,正式環境停用除錯顯示 |
| P2 | 檔案權限 | 約 644 檔案/755 目錄。在上傳目錄禁止 PHP 執行 |
| P2 | HTTPS/標頭/更新 | 強制 HTTPS、HSTS 等。讓 PHP/DB 維持在受支援的版本 |
1. 更新(最主要的防禦)
對 WordPress 的多數攻擊都是**自動化工具大規模地打一個已公開的已知漏洞(CVE)。**所以更新的速度就是你最大的防禦。
- 為核心、外掛與佈景主題啟用自動更新——在已公開的洞被利用前就先關上。
- 對重要的網站,在測試環境(staging)驗證大版本更新,並在更新前先備份。
- 跳過的更新就是自動化攻擊的敞開入口。別「之後再做」。
2. 外掛與佈景主題(攻擊面)
第三方程式碼的漏洞是最大的入口。關鍵是數量保持精簡,且絕不放著不管。
- 對於任何未使用的,直接刪除而不是停用(停用的檔案仍可能成為攻擊對象)。
- 安裝前先確認**更新頻率、採用度、最後更新日期與已知 CVE。**避開遭到棄置的。
- 你可以用 CVE/KEV 查詢 來確認外掛的 CVE。擴充越少,代表更新責任越少、攻擊面也越小。
3. 管理員帳號與驗證
多數的接管都是針對脆弱/重複使用的管理員帳號進行暴力破解,或重複使用外洩的密碼。
常見(危險)
- 使用者名稱
admin+弱密碼+無 2FA - 每個人都是管理員(沒有角色區分)
- 登入嘗試無限制
wp-admin從任何地方都能存取
正確
- 強密碼+2FA,使用
admin以外的使用者名稱 - 最小權限角色(適當運用編輯/作者)
- 登入嘗試次數限制(抑制暴力破解)
- 若可行,限制
wp-admin/wp-login.php能從哪些來源存取
關於如何選擇 2FA,請見 2FA 是什麼;至於鎖定管理員的途徑,請見 釣魚是什麼。
4. 降低暴露(管理面與資訊揭露)
攻擊者會先尋找「可用的入口」。切掉未使用的功能與不必要的揭露。
- 加上登入嘗試次數限制,降低暴力破解的效果。
- 若未使用就限制
xmlrpc.php(它可能成為暴力破解放大與大量請求的入口)。 - 抑制 REST API 的使用者列舉(防止透過
?author=等揭露管理員名稱)。 - 停用目錄列表,減少不必要的版本揭露。
- 從管理後台停用檔案編輯(
DISALLOW_FILE_EDIT),讓入侵後的竄改更困難。
5. wp-config 與機密(P2)
- 設定唯一的驗證金鑰/salt,並以適當的權限保護
wp-config.php(絕不讓任何人都可讀取)。 - 讓 DB 憑證這類機密遠離公開面。別把備份或匯出檔留在公開目錄(→ 別把機密放在公開目錄)。
- 在正式環境停用除錯顯示(
WP_DEBUG_DISPLAY關閉)。別透過錯誤洩漏內部資訊。
6. 檔案與上傳(P2)
- 檔案權限大約為 644 檔案/755 目錄,
wp-config.php則更嚴格。絕不讓任何項目變成任何人都可寫入。 - 別允許在上傳目錄執行 PHP(防範 web shell)。驗證上傳的類型與大小。
- 使用竄改偵測(檔案變更監控)以儘早發現入侵後的變更。
7. HTTPS、標頭、備份(P2)
- **強制 HTTPS+HSTS。**解決混合內容。
- 加上安全標頭(用 安全標頭檢查工具 檢查你自己的網站)。
- 保有離線/不可竄改的備份+還原測試,讓你能夠還原(→ 備份基礎)。這是對抗勒索軟體與竄改的最後一道防線。
8. 主機與相依套件(P1–P2)
- 讓 **PHP 與資料庫維持在受支援的版本。**別放著 EOL 版本不管。
- 掌握你主機的修補狀態(在共享主機上,這也包含供應商的應對)。
- WAF 只是補強——先把地基(更新、最小化、驗證、備份)鞏固好。
驗證:你的 WordPress 真的加固好了嗎?
做出來還不是結束——只有在檢查過之後才算完成。以下是針對你自己網站的防禦性自我檢查。
機密與設定沒有暴露
/wp-config.php 不會回傳其內容,且備份檔(.zip/.sql)或 .env 類的檔案無法用 URL 取得。管理員名稱與版本沒有外洩
?author=1 之類的做法不會暴露管理員的使用者名稱,且目錄列表已關閉。登入保護與 2FA 有效
admin 使用者。更新、備份、標頭
本站的觀點:要管理的是『擴充與擱置』,而非核心
對 WordPress 有效的,不是花俏的設定,而是『別過度加裝擴充、別擱著不管』的維運紀律。外掛很方便,但每加一個就多一份持續更新的責任。防禦的重心在於由上而下逐項處理上面那張表——把更新自動化、把外掛保持最小,並以強驗證與可還原的備份來防禦。看似是 WordPress 特有的話題,其實是普遍地基(相依套件的鮮度、公開面最小化、驗證、還原)的套用。
接下來讀
- 入口:各框架資安對策 · Laravel 資安對策
- 實務:漏洞應變實務手冊 · 備份基礎
- 機密/驗證:別把機密放在公開目錄 · 2FA 是什麼 · 釣魚是什麼
- 工具:安全標頭檢查工具 · CVE/KEV 查詢
FAQ
Q要保護 WordPress,我該先做什麼?
三個 P0 項目:(1) 為核心、外掛與佈景主題啟用自動更新,讓已公開的已知漏洞(CVE)在被利用前就先關上;(2) 刪除未使用的外掛/佈景主題(不只是停用),以縮小攻擊面;(3) 用強密碼與雙因素驗證(2FA)保護管理員帳號,並避免使用 admin 這個使用者名稱。單是這三項就能擋下多數自動化攻擊。接著再降低管理後台暴露並設定備份。
Q外掛裝到多少算太多?
原則是『只裝你需要的最低限度』。每個外掛都會增加攻擊面與『持續更新的責任』。安裝前先確認更新頻率、採用度、最後更新日期與已知漏洞;對於任何未使用的,請直接刪除而不是停用(停用的檔案仍可能成為漏洞的攻擊對象)。佈景主題同理。
Q我該停用 xmlrpc.php 嗎?
若你沒在用它,建議加以限制或停用。xmlrpc.php 提供遠端發文與 pingback,但也可能成為暴力破解放大與大量請求的入口。若你確實有用到需要它的功能(某些應用整合),就把它限制在你需要的方法,或用速率/IP 限制來保護它。先確認你是否真的在用它。
Q裝了資安外掛就安全了嗎?
資安外掛有幫助,但不是萬靈丹。在地基(自動更新、外掛最小化、強管理員驗證、備份、降低管理後台暴露)缺失的情況下硬加一個,並不能把洞補起來。先把本頁的清單做完,再用外掛來補強登入嘗試次數限制與竄改偵測之類的項目。
Q最低限度我該做什麼?
(1) 自動更新,(2) 刪除未使用的外掛/佈景主題,(3) 給管理員設定強密碼+2FA,(4) 登入嘗試次數限制與降低管理後台暴露,(5) 可還原的離線備份+竄改偵測。這五項就能擋下多數自動化攻擊。細節請見上方的清單與各段落。