WordPress網站安全

WordPress 網站安全設定:上線前後必做的檢查清單

很多網站主以為裝好佈景、外掛、上線就沒事了,但針對 WordPress 的攻擊,絕大多數是全自動的機器人在掃:掃過期外掛、掃 wp-login、掃弱密碼。它們不在乎你的公司大小,只在乎你有沒有留破口。好消息是,這些自動化攻擊多半只吃「軟柿子」——把基本功做好,你就不在名單上。以下這份清單,分成上線前的設定與上線後的維運,每一節都給你可以照著打勾的項目。

1. 核心、佈景與外掛:先更新,再精簡

過期元件是 WordPress 被入侵最常見的原因,對應 OWASP A06(使用含已知弱點的元件)。攻擊者拿的是公開的漏洞資料庫,你的網站只要慢一步更新,就是現成目標。更新之外還有一件事同樣重要:把根本沒在用的外掛與佈景直接刪掉,因為停用的外掛檔案還在,一樣會被掃描與利用。

自我檢查

  • 核心、佈景、外掛至少每月檢查一次更新;標示為安全性(security)的更新盡快上。
  • 更新前先做一次完整備份,並盡量在測試環境或離峰時間執行。
  • 停用且短期內不會用到的外掛、佈景一律移除——停用不等於安全。
  • 只保留一套正在使用的佈景(加一套官方預設佈景備援),其餘刪除。
  • 刪掉安裝時的測試頁面、範例內容與 readme.html 這類會洩漏版本的檔案。

2. 登入與後台強化:堵住暴力破解

wp-login.php 是機器人最愛敲的門,它們拿字典檔一組一組帳密試。這一關的重點是讓「猜」變得沒有效益:不要用預設帳號、密碼夠長、開兩步驟驗證、限制失敗次數,並讓登入頁不要待在人人都知道的網址。

自我檢查

  • 不要使用 admin 或網站網域當管理員帳號;若已存在,另建新管理員帳號後刪除 admin。
  • 管理員密碼至少 16 碼以上、隨機產生,用密碼管理器保存,不重複使用。
  • 後台開啟兩步驟驗證(2FA),至少對所有管理員與編輯角色強制啟用。
  • 限制登入嘗試次數(例如 5 次失敗鎖定),並記錄來源 IP。
  • 變更或隱藏預設登入路徑,降低被自動化工具直接命中的機率。
  • 關閉 XML-RPC(若無 App 或串接需求),它常被用來放大暴力破解。

3. 使用者角色與最小權限

很多網站每個人都給管理員,這等於把整棟樓的鑰匙發給所有人。WordPress 內建的角色分級(管理員、編輯、作者、投稿者、訂閱者)就是為了最小權限而設計:一個人只給他工作真正需要的權限。帳號越少、權限越低,被盜用後的災情就越小。

自我檢查

  • 依實際職責指派角色,只有真正需要管理外掛與設定的人才是管理員。
  • 寫文章的用編輯或作者角色,外部合作者用投稿者,不要一律給管理員。
  • 定期盤點使用者清單,離職或合作結束的帳號立即停用或刪除。
  • 不要多人共用同一組帳密,出事時才追得到是誰、從哪登入。

4. 檔案權限、資料庫前綴與關閉後台編輯器

這一節是主機層面的基本功,多半在上線前就該設好。合理的檔案權限能防止程式被竄改,非預設的資料庫前綴能擋掉部分自動化的 SQL Injection 腳本,而關閉後台的檔案編輯器,則是讓萬一被盜的管理員帳號無法直接在瀏覽器裡改你的 PHP。

自我檢查

  • 資料夾權限設 755、檔案設 644;wp-config.php 收緊到 640 或 600。
  • 資料庫表格前綴不要用預設的 wp_,改成隨機字串(如 wp_a7x_)。
  • 在 wp-config.php 加入 define('DISALLOW_FILE_EDIT', true); 關閉後台檔案編輯器。
  • 把 wp-config.php 的認證金鑰(SALT)換成官方產生器的新值。
  • 限制或關閉 uploads 目錄執行 PHP 的權限,避免被上傳的後門直接運作。

5. SSL 與基本安全標頭

HTTPS 現在是基本盤,不只是為了 SEO 與瀏覽器不跳警告,更是為了避免登入資訊在傳輸中被竊聽。裝好憑證之後,再補上幾個 HTTP 安全標頭,能擋掉點擊劫持、MIME 混淆這類常見手法,成本很低但實際有效。

自我檢查

  • 全站啟用 HTTPS,並用 Let's Encrypt 這類憑證設定自動續期,避免過期。
  • 設定 HTTP 全站轉址到 HTTPS,並在網站設定裡把網址改成 https。
  • 加上 HSTS 標頭(Strict-Transport-Security),強制瀏覽器只走加密連線。
  • 補上 X-Content-Type-Options: nosniff 與 X-Frame-Options(或 CSP frame-ancestors)防點擊劫持。
  • 上線後用 SSL Labs 之類的工具檢查憑證與協定設定是否安全。

6. 定期異地備份與還原測試

備份是被駭之後唯一能救你的東西,但「有備份」和「還原得回來」是兩回事。太多人備份檔就放在同一台主機,主機被打掉時備份也一起陪葬;也有人從沒實際還原過,真的出事才發現檔案是壞的。異地存放加上定期演練,備份才有意義。

自我檢查

  • 同時備份資料庫與檔案(含 uploads、佈景、外掛),不要只備其中一項。
  • 備份存到異地(另一朵雲或另一台主機),不要跟網站放在同一台。
  • 依更新頻率決定備份週期,並保留多個時間點的版本,而非只留最新一份。
  • 每季實際做一次還原測試,確認備份檔真的能還原、內容完整。
  • 記錄一份簡單的還原步驟,讓你或維運方在慌亂時也能照做。

7. 外掛挑選原則與基本防護(WAF 概念)

外掛是 WordPress 最強大也最危險的地方——一個來路不明或年久失修的外掛,就足以拖垮整站。挑外掛要看來源、看維護頻率、看安裝量與評價,而不是搜到就裝。防護層面,登入防護與網站應用防火牆(WAF)能在流量進到 WordPress 前先擋掉明顯的惡意請求,是很划算的一道外牆——但要誠實說,沒有任何工具能保證絕對不被駭,它降低的是風險,不是歸零。

自我檢查

  • 只從官方外掛庫或原廠官網下載,絕不安裝來路不明的破解版(nulled)外掛。
  • 看外掛最後更新時間,超過一年沒更新的謹慎使用或找替代品。
  • 參考安裝量與評價,優先選維護穩定、有明確作者與支援的外掛。
  • 評估導入 WAF(雲端或外掛型),擋掉常見的自動化掃描與注入攻擊。
  • 開啟登入防護與惡意流量記錄,異常時能收到通知並回溯。
  • 外掛裝越多攻擊面越大,定期檢視「這個真的還需要嗎」。

資安沒有一勞永逸,這份清單也不是打完勾就永遠安全——它把你從自動化攻擊最愛的「軟柿子」名單上移開,剩下的是持續的更新、備份與監控。如果你沒有時間每個月盯這些,把維運交給人做,往往比出事後才找人止血划算得多。

常見問題

WordPress 網站一定要裝資安外掛嗎?沒裝會怎樣?
不是非裝不可,但強烈建議至少有一套涵蓋登入防護與惡意流量偵測的外掛。核心的更新、強密碼、2FA、備份這些基本功其實不靠外掛也能做,資安外掛的價值在於幫你集中管理、及早示警。沒裝不代表一定會被駭,但你少了一層外牆與預警,被自動化攻擊命中的機率會明顯提高。
WordPress 被駭了、首頁被改掉或被植入廣告,第一步該怎麼辦?
先別急著自己亂刪。第一步是保留現場並讓網站暫時下線或維護模式,避免繼續散播惡意內容;接著從乾淨的異地備份還原,並在還原後立刻更新所有核心與外掛、更換全部密碼與資料庫金鑰。如果找不到入侵點,很容易還原後又被打回來,這時建議找專業做入侵止血與根因排查,確認後門真的清乾淨。
改了 wp-login 登入路徑、限制登入次數,就不會被暴力破解了嗎?
會大幅減少,但不能說絕對。隱藏登入頁與限制次數能擋掉絕大多數只認 wp-login.php 的自動化機器人,對降低雜訊很有效。不過真正決定成敗的還是密碼強度與 2FA——路徑只是讓對方找不到門,強密碼加兩步驟驗證才是就算找到門也打不開。兩者一起做效果最好。