網站被入侵多數都係因為驗證機制太弱,WordPress 用戶身份驗證如果冇做好,分分鐘帳號就畀人hack走。其實只要設定得當,已經可以大幅降低風險,唔使驚。今次會直接拆解最有效嘅驗證方法,由基本登入保護到進階 JWT、OAuth 應用,一步步教你建立更穩陣嘅安全防線,兼顧效能同用戶體驗。
如何設定 WordPress 雙重身份驗證提升安全性
WordPress 用戶身份驗證是整個網站安全架構的核心環節,很多站長在這個地方掉以輕心,結果被攻破才後悔。雙重身份驗證(2FA)的原理是在傳統密碼之外加上第二層驗證,即使密碼外洩,攻擊者也無法登入。
設定 2FA 的步驟其實不複雜,但很多人做到一半就放棄,主要是因為沒搞清楚各種方法的適用情境。以下是最常見的完整設定流程:
- 安裝插件:推薦使用 WP 2FA 或 Two Factor Authentication,前者的使用者介面對新手更友善
- 選擇驗證方式:TOTP(時間型一次性密碼)搭配 Google Authenticator 或 Authy 是目前最穩定的方案
- 掃描 QR Code:在插件設定頁面會生成 QR Code,用手機 App 掃描後輸入六位數驗證碼確認啟用
- 備份救援碼:這步驟很多人跳過,但萬一手機遺失就完蛋了,一定要把備份碼存在安全位置
- 針對管理員強制啟用:在插件設定中可強制特定用戶角色必須開啟 2FA,管理員帳號絕對要納入
香港不少中小企網站是由一個人同時負責開發與管理,帳號安全往往被當作「之後再處理」的事項。實際上,登入安全的設定成本極低,但事後補救的代價卻極高,這個優先順序必須調整過來。
防止暴力破解登入的實用身份驗證方法
暴力破解(Brute Force Attack)是針對 WordPress 登入頁面最常見的攻擊手法,攻擊者會用自動化工具不斷嘗試不同密碼組合,直到成功為止。預設的 WordPress 對登入嘗試次數沒有限制,這是非常明顯的安全漏洞。
三層防護策略
第一層:限制登入嘗試次數。安裝 Limit Login Attempts Reloaded 插件,設定例如連續失敗 5 次就鎖定 IP 20 分鐘,連續觸發三次鎖定就拉黑 24 小時。這個設定可以擋掉絕大部分自動化攻擊腳本。
第二層:更改預設登入網址。WordPress 預設登入頁是 /wp-login.php,攻擊者直接知道目標在哪。使用 WPS Hide Login 插件把登入路徑改成自訂網址,可以大幅降低被掃描到的機率。
第三層:IP 白名單控制。如果你的管理工作主要在固定地點進行,可以透過伺服器設定(如 .htaccess 或 Nginx 設定)限制只有特定 IP 才能存取 wp-admin 目錄。這招對香港辦公室環境特別實用,因為公司通常有固定的靜態 IP。
有一點要留意:單純依靠驗證碼(CAPTCHA)來防暴力破解的效果愈來愈有限,因為現代攻擊工具已經可以繞過部分驗證碼機制。帳號保護應該是多層疊加,而不是單一手段。
多重身份驗證插件推薦與詳細設定步驟
市面上 MFA 插件選擇多,但不是每一個都適合每種情境。以下是實際使用過的比較整理:
| 插件名稱 | 適合對象 | 主要功能 | 免費版限制 |
| WP 2FA | 中小企、個人站長 | TOTP、電郵 OTP、備份碼 | 無用戶數限制 |
| Wordfence Login Security | 已有 Wordfence 的用戶 | 2FA、登入通知、CAPTCHA | 功能完整,整合防火牆 |
| miniOrange OTP | 需要 SMS 驗證的用戶 | SMS OTP、WhatsApp、TOTP | 免費版有發送次數上限 |
| Two Factor Authentication | 技術用戶 | TOTP、FIDO U2F 支援 | 部分進階功能需付費 |
以 Wordfence Login Security 為例,設定流程是:安裝並啟用插件 → 進入「Login Security」頁面 → 用 Authenticator App 掃描 QR Code → 輸入六位數確認 → 儲存備份碼。整個過程不超過五分鐘,但能帶來的安全提升卻相當顯著。
選擇建議:如果你的網站已經安裝 Wordfence 防火牆,直接用它附帶的 2FA 功能就夠了,不需要額外安裝插件。如果需要支援多位員工登入並集中管理,WP 2FA 的管理界面更適合。
強化管理員帳號身份驗證安全策略
管理員帳號是整個 WordPress 網站的最高權限,一旦被入侵,後果幾乎是災難性的。光靠複雜密碼已經不夠,需要從多個維度強化。
帳號設定上的常見錯誤
- 使用「admin」作為用戶名——這是攻擊者優先嘗試的帳號名稱
- 管理員電郵地址暴露在公開頁面上
- 多個管理員帳號長期閒置但未停用
- 沒有定期檢查用戶角色清單,前員工帳號還存在系統內
實務建議清單
- 重新命名管理員帳號:建立一個新的管理員帳號,刪除原有的 admin 帳號,用一個不容易被猜到的名稱
- 啟用登入活動通知:有插件可以在管理員帳號登入時發送電郵通知,異常登入即時知道
- 定期審查用戶清單:每季度檢查一次,移除不再需要的帳號,調整不必要的高權限
- 使用應用程式密碼管理 API 存取:WordPress 5.6 後原生支援應用程式密碼功能,API 存取應使用獨立密碼而非主帳號密碼
網站安全有一個現實是:攻擊者的目標往往是「最容易下手的那個」,而不是技術上最複雜的漏洞。把管理員帳號設定做好,已經可以排除大部分風險。
WordPress 登入驗證失敗的常見問題與解決方案
開了 2FA 之後,最常見的投訴就是「登不進去」。驗證失敗的原因通常比想像中簡單,逐一排查基本上都能解決。
最常見的失敗原因及解法
時間不同步問題:TOTP 驗證碼是基於時間計算的,如果手機時間與伺服器時間差超過 30 秒,驗證就會失敗。解決方法是確保手機設定為自動同步時間,或在插件設定中調整允許的時間容差(通常可設定為 ±1 個時間窗口)。
插件衝突:某些快取插件或安全插件會攔截登入請求,導致驗證流程中斷。可以先停用其他插件,確認問題是否來自衝突。Wordfence 與部分快取插件之間的相容性問題尤其常見。
瀏覽器快取干擾:舊版 Cookie 或快取資料有時會影響登入流程,清除瀏覽器快取後重試往往能解決問題。
忘記備份碼:如果 Authenticator App 遺失且沒有備份碼,就需要透過 FTP 或資料庫直接停用 2FA 插件。具體做法是登入主機後台,透過 phpMyAdmin 找到對應的 usermeta 資料,刪除 2FA 相關的設定值,或直接在 wp-content/plugins 目錄重新命名插件資料夾使其停用。
API 用戶身份驗證流程與實作技巧解析
當你的 WordPress 網站需要對接第三方應用程式、行動 App 或自動化工具時,API 身份驗證就變得不可或缺。WordPress REST API 預設只對部分端點開放公開存取,敏感操作需要驗證身份。
最基本的方式是使用 WordPress 內建的應用程式密碼(Application Passwords),這個功能在 WordPress 5.6 之後已內建,不需要額外插件。操作方式是進入用戶設定頁面,在「應用程式密碼」區域輸入應用名稱,系統會生成一組專用密碼,用於 API 請求的 Basic Auth 驗證。
如果需要更精細的權限控制,可考慮以下方案:
- JWT Authentication for WP REST API:適合需要 Token 式驗證的前後端分離架構,Token 有效期可設定,安全性較 Basic Auth 更高
- WP REST API Authentication(miniOrange):支援多種驗證方式,包括 OAuth 2.0、JWT、API Key,適合有多種第三方整合需求的場景
實作時有一個常被忽略的細節:API 密鑰應該限制只能存取必要的端點和資料範圍,不要用管理員的主帳號密碼做 API 驗證,這樣一旦密鑰外洩,影響範圍可以控制在最小。
OAuth 與 JWT 身份驗證整合操作指南
OAuth 2.0 和 JWT(JSON Web Token)是目前最廣泛使用的 API 驗證標準,兩者的應用場景有所不同。OAuth 2.0 主要用於授權第三方應用代表用戶存取資源,JWT 則側重於在服務之間安全傳遞已驗證的身份資訊。
OAuth 2.0 整合步驟
- 安裝 WP OAuth Server 插件,將 WordPress 設定為 OAuth 授權伺服器
- 在插件中建立客戶端應用,取得 Client ID 和 Client Secret
- 第三方應用透過標準 OAuth 授權流程請求存取 Token
- 使用 Token 呼叫 WordPress REST API,伺服器驗證 Token 後返回資料
JWT 整合步驟
- 安裝 JWT Authentication for WP REST API 插件
- 在 wp-config.php 加入 JWT 密鑰設定:
define('JWT_AUTH_SECRET_KEY', '自訂密鑰'); - 呼叫
/wp-json/jwt-auth/v1/token端點,以用戶名和密碼換取 JWT Token - 後續 API 請求在 Header 加入
Authorization: Bearer {token}
根據 Auth0 官方文件的說明,JWT 的主要安全考量在於密鑰的管理,密鑰一旦外洩,所有 Token 都會失效。建議定期輪換密鑰,並且不要在前端程式碼中硬編碼密鑰。
提升用戶體驗的登入流程安全優化方法
安全性和用戶體驗之間的矛盾是真實存在的——加了太多驗證步驟,用戶會煩,甚至直接放棄登入。但這個問題是可以用對的方法平衡的,唔係一定要二選一。
減少用戶摩擦的實用設計
記住裝置功能:在 2FA 設定中啟用「信任此裝置 30 天」選項,用戶在熟悉的裝置上登入後,短期內不需要重複完成驗證流程。這對每天使用同一台電腦的辦公室員工來說非常實用。
提供多種驗證選項:不是所有人都習慣用 Authenticator App,電郵 OTP 或 SMS 驗證可以作為備選方案。miniOrange 插件支援 WhatsApp 驗證,在香港用戶群中接受度更高。
清晰的錯誤訊息:登入失敗時給出明確的指引,例如「驗證碼已過期,請重新取得」而不是籠統的「驗證失敗」,可以大幅降低用戶因困惑而放棄的比例。
根據 WordPress 官方安全強化指引,登入安全的最佳實踐應兼顧防護效果與管理可行性。過度複雜的設定反而會讓管理員繞過安全機制,結果適得其反。
單一登入(SSO)也值得考慮,特別是企業環境下有多個系統需要管理。透過 WP SAML SSO 插件整合公司的身份提供者(如 Google Workspace 或 Microsoft Azure AD),員工用同一組帳號存取所有系統,既方便又安全,離職時只需停用一個帳號就能切斷所有存取。
總結核心要點,立即可以採取行動的方向:
- 今天就啟用 2FA:從安裝 WP 2FA 或 Wordfence Login Security 開始,管理員帳號必須優先設定,整個過程不超過十分鐘
- 改掉 admin 用戶名:建立一個新的管理員帳號並刪除預設帳號,這個改動即時生效
- 限制登入嘗試:安裝 Limit Login Attempts Reloaded,用預設設定就已足夠應付大部分暴力破解攻擊
- API 存取使用專用密碼:啟用應用程式密碼功能,不要讓第三方工具使用主帳號憑證
- 定期審查用戶清單:每季度一次,清理閒置帳號和不必要的高權限角色
WordPress 用戶身份驗證的強化不需要一次全部做完,但愈早開始愈好。揀一兩個最容易執行的先做,比完美計劃但遲遲不行動要實際得多。現在就去裝那個插件吧。






