為 WordPress 導入 Google 帳戶登入機制,進一步提升網站安全性

Google 近年來推出了帳戶兩步驟驗證、FIDO2 系列的安全性服務,讓使用者的帳號安全提升了一大步。如果能將 Google 的安全性機制導入我們的 WordPress 網站,勢必也能使網站的資安防護更加完善。

畢竟樹大招風,隨著網站的規模越來越大,WordPress 預設的 wp-login.php 帳號登入機制也越常被挖出來進行破解,甚至能在記錄檔中發現數十萬條的登入失敗紀錄,讓人怵目驚心。為了解決這個問題,最近找到了一個專門將 Google 帳號登入機制導入 WordPress 的外掛「Google Apps Login」。使用 Google 的登入機制來取代 WordPress 的驗證機制,除了能避免掉被暴力破解時的資源消耗,也能有效提升網站安全性。

事不宜遲,我們現在就來進行操作吧!

一、新增 Google APIs 專案

如果你還沒有 Google 帳號的話,請先前往 建立您的 Google 帳戶 進行註冊,再開啟 這個連結,新增一個 Google APIs 專案。

如果建立專案後系統沒有自動切換至新專案的話,可以點擊左上角 Logo 旁的下拉選單,點選並手動開啟你的專案。

二、建立憑證

Google 與你的網站溝通時必須通過一個被稱為「憑證」的東西,只不過在取得這憑證之前,我們還要先進行 OAuth 同意畫面 的設定。

從 Google APIs 左上角的選單內的 API 和服務 進入 憑證

接下來切換畫面到 OAuth 同意畫面 分頁,依序填入 應用程式名稱已授權網域
已授權網域的部分請直接填入網站的網域,不需包含任何的「/」、「http://」與「https://」。

儲存設定後,網頁會自動跳回 建立憑證 的頁面,
請點選藍色的 建立憑證按鈕 並選擇 OAuth 用戶端 ID 來進行後續步驟。

應用程式類型請選取 網路應用程式,並在 已授權的 JavaScript 來源已授權的重新導向 URI 內依序填入你網站的 首頁網址登入網址

範例格式

已授權的 JavaScript 來源 https://example.com
已授權的重新導向 URI https://example.com/wp-login.php

建立完成後你將會取得一份 OAuth 用戶端 IDOAuth 用戶端密鑰,這兩項資料請先將它紀錄下來,後續步驟會使用到。

安裝 Google Apps Login 外掛

進入你的 WordPress 控制台,開啟 安裝外掛 頁面,輸入關鍵字 Google Apps Login 進行搜尋。
找到此外掛後直接按下 立即安裝 並啟用外掛。

接下來從 WordPress 控制台進入 Google Apps Login 設定介面,將剛才記錄下來的 OAuth 用戶端 IDOAuth 用戶端密鑰 分別填入 Client IDClient Secret

設定完成後請進入 使用者 > 個人資料 仔細確認你的 WordPress 使用者 Email 與 準備用來登入的 Google 帳號是否一致。因為這個外掛最終會進行 Email 的比對,如果不一致的話是無法登入成功的。

如果都沒問題的話,現在就可以登出你的網站,並點擊登入介面中的 Login with Google 進行登入。

如果一切都超級完美,你可以回到 Google Apps Login 設定介面,勾選 Advanced Options 分頁內的 Automatically redirect to Google from login page ,強制網站只能用 Google 帳號進行登入,這下愛暴力破解的爬蟲們就沒輒了。d(d'∀')

後續處理

目前發現這個外掛有個問題,當 wp-login.php 後面加上了 ?xxx 任意參數時他不會自動重新導向至 Google 帳戶登入頁面。

我是這樣解決的:
前往 WordPress 控制台 > 外掛 > 外掛編輯器,選擇 Google Apps Login 外掛,修改 core/core_google_apps_login.php 檔案內大約 189 行的程式碼,將

$do_autologin = false;

改為

$do_autologin = true;

解決問題 (ㄏ ̄▽ ̄)ㄏ ㄟ( ̄▽ ̄ㄟ)

「資安」就是心安

感謝閱讀 (๑´ㅁ`)

參考資料