網站被入侵時,最痛的通常不是修站,而是「你不知道它什麼時候被放進去的」。對中小企業官網、部落格、電商來說,WordPress 安全加固不是一次性專案,而是一套可重複執行的維運動作,做完會明顯降低被撞庫、被掃洞、被掛馬的機率。
這份 2026 版清單,用「從登入到檔案權限」的順序整理,讓你像把房子的門鎖、窗戶、電箱都檢查一輪。你可以一次做完,也可以先做高風險項目,之後再補齊中低風險。
文章目錄
Toggle先守住登入面,駭客才沒機會進後台
登入口就是大門口。你可以有再多備份與掃描,如果管理員帳號被猜到密碼,等於把鑰匙交出去。
首先,要求所有管理員與編輯使用密碼管理器,密碼要「長、唯一、不可猜」。規則很簡單,至少 16 字元,不重複用在任何服務。接著開啟 2FA,建議用 App 的一次性驗證碼,並把備援碼存到密碼管理器或離線保管。
再來是暴力登入防護,務必做到「限制嘗試次數」與「登入告警」。共享主機做不到伺服器層封鎖也沒關係,先用安全外掛或主機面板提供的登入防護功能頂住。若你有用 Cloudflare 類的 CDN/WAF,把 /wp-login.php 的攻擊流量先在邊緣擋掉,效果會很直覺(大量 403 或挑戰頁就能攔下一堆機器人),概念可參考這份偏實務的WordPress 網站安全檢查清單。
最後一件常被忽略的小事,別再用 admin。如果站上已存在 admin 使用者,建立新的管理員(不同帳號名),確認新帳號可登入後,刪除舊的 admin 並把文章歸給新帳號。這一步很短,但能砍掉大量自動化掃描的命中率。
把 wp-admin、wp-login.php、REST API、XML-RPC 的入口變得可控
多數入侵不是「很厲害的駭客」,而是自動化腳本對著公開入口一直試。你的目標是讓入口「只有需要的人能用」。
如果你用 Apache,最直接的作法是在 .htaccess 對 wp-login.php 做 IP 允許清單(公司固定 IP、VPN 出口 IP)。可直接複製的基本範例如下(把 IP 換成你的):
# 限制 wp-login.php 只允許特定 IP<Files "wp-login.php">Require ip 203.0.113.10Require ip 203.0.113.11</Files>
Nginx 則放在站台設定中,用 allow/deny 控制相同邏輯:
location = /wp-login.php {allow 203.0.113.10;allow 203.0.113.11;deny all;}
接著談 XML-RPC。除非你有用 WordPress App、Jetpack、或特定外掛仍依賴 XML-RPC,否則建議關閉,因為它常被拿來做放大攻擊與暴力嘗試。Apache 可先用這種方式擋掉:
<Files "xmlrpc.php">Require all denied</Files>
Nginx 對應規則更簡單:
location = /xmlrpc.php { deny all; }
REST API 則不要一刀切,先判斷你是否需要(例如 Headless、行動 App、自訂整合)。若只是一般內容站、形象站,你可以「只允許登入者使用」,降低被掃端點與資訊外洩的機會。放到佈景主題或小外掛中即可(有相容性風險,先在測試站跑):
add_filter('rest_authentication_errors', function($result){if (is_user_logged_in()) return $result;return new WP_Error('rest_forbidden','REST API restricted',array('status'=>401));});
想追外掛漏洞與修補節奏,建議定期看這類彙整頁,至少知道哪些外掛正在爆洞,像是外掛漏洞與 CVE 追蹤整理就很適合拿來比對你站上的外掛清單。
檔案權限與伺服器基本規則,避免「被寫入」與「被讀走」
很多掛馬不是駭客「登入後台」做的,而是利用可寫入目錄,把惡意檔丟進去。你的原則是最小權限,能讀就不要寫,能不執行就不要執行。
常見建議值如下,實際仍要看主機帳號與 PHP 執行模式(共享主機有時需要較寬鬆權限才能正常更新):
- 目錄:
755(或更嚴格的750) - 檔案:
644(或640) wp-config.php:400或440(能設多嚴就多嚴,但要確保不影響讀取)
再來做兩個高報酬的小設定。第一個是關閉目錄瀏覽,Apache 加上:
Options -Indexes
第二個是禁止上傳目錄執行 PHP。若你是 Nginx,可用:
location ~* ^/wp-content/uploads/.*.php$ { deny all; }
wp-config.php 也要順手加上後台檔案編輯禁用,避免帳號被盜後直接在後台植入程式碼:
define('DISALLOW_FILE_EDIT', true);
環境差異提醒也很重要:共享主機多半不能改 Nginx 或裝 fail2ban,優先用主機面板(cPanel、Plesk)的防火牆、WAF、備份,再用外掛補齊登入限制與掃描。VPS 才適合把 IP 限制、WAF 規則、系統日誌集中管理,並把 SSH 與主機面板登入也納入 2FA。
如果你想要一份更完整的設定方向(包含權限、更新、使用者管理),可參考這篇偏總整理的WordPress 安全設定完整指南當作比對清單。
更新、掃描、備份與告警,讓你「出事能快速回來」
2026 年的主流做法很明確:安全修補要快,邊界要有 WAF,管理員要有 2FA。更新策略建議分兩層,小版本安全更新可自動,大版本更新先在測試站確認。外掛則採「少而精」,用不到就刪掉,不要只停用。安全外掛也別裝一堆互相打架,挑一套能做到登入防護、檔案完整性掃描、告警通知就好。
你可以用 WP-CLI 把日常檢查變成 3 分鐘的例行公事(在可用 SSH 的環境特別好用):
wp core updatewp plugin update --allwp theme update --allwp user list --role=administratorwp plugin list --status=inactivewp plugin deactivate plugin-slugwp core verify-checksums
備份請用 3-2-1:至少 3 份,2 種不同媒介,1 份在異地(不同帳號或不同平台)。更重要的是還原演練,因為「有備份」不等於「救得回來」。每季選一天,把備份還原到測試站,確認能登入、前台正常、付款與寄信功能也正常。
最後是日誌與告警。把登入失敗、檔案變更、外掛被啟用或停用的事件送到 Email 或即時通訊,並設定「異常峰值」提醒。你不需要看每一行 log,但需要在攻擊量突然升高時第一時間知道。若你想把這些例行事項交給固定流程處理,可直接參考WPTOOLBEAR 的 WordPress 維運服務把更新、監控、備份與復原演練納入長期維護。
風險分級與維護節奏表(照表做最省力)
| 項目 | 風險分級 | 多久檢查一次 | 重點 |
|---|---|---|---|
| 管理員強密碼與 2FA | 高 | 每季 | 新增管理員立刻套用 |
| 限制登入嘗試與登入告警 | 高 | 每月 | 看鎖定紀錄是否暴增 |
| 移除或禁用 admin 帳號 | 高 | 一次性,之後每季 | 新站上線先做 |
| WAF/CDN 規則與國家或 IP 限制 | 中 | 每月 | 攻擊來源變動就調整 |
| XML-RPC 與 REST API 存取策略 | 中 | 每季 | 外掛更換後重驗證 |
| 核心、外掛、主題更新 | 高 | 每週 | 大版本先測試再上線 |
| 檔案權限與 uploads 禁執行 | 高 | 每季 | 權限跑掉要查原因 |
| 檔案完整性與惡意碼掃描 | 中 | 每週 | 掃到可疑檔先隔離 |
| 備份 3-2-1 與還原演練 | 高 | 備份每日,演練每季 | 演練比備份更重要 |
| 日誌檢查與告警規則 | 中 | 每月 | 調低誤報,保留關鍵訊號 |
結尾要記住一件事:WordPress 安全加固做得好,通常看起來很無聊,因為它的成效是「什麼都沒發生」。把上面高風險項目先做完,再用節奏表維持,你的網站就會從容易被路過掃到,變成更難被得手的目標。你希望下次遇到攻擊時,是在告警裡看到被擋下來,而不是在首頁看到被改掉的內容。






