如何在 WordPress 設定 Google reCAPTCHA 保護(登入、留言、聯絡)表單,免遭惡意攻擊

如何在 WordPress 設定 Google reCAPTCHA 保護(登入、留言、聯絡)表單,免遭惡意攻擊

在 WordPress 網站運行一段時間後,發現有惡意程式,一直在文章留言區發佈廣告貼文,一直手動刪留言也不是辨法。本文將會教你如何設定 Google reCAPTCHA 來阻擋機器人程式惡意留言。

在我的 WordPress 網站上線大概 2 個多月的時候,就發現有零星的廣告留言,那時候是手動一筆一筆刪,但現在覺得廣告留言變的愈來愈多,一天就有 10 幾筆廣告留言,一直手動刪留言也不是辦法,差不多該安裝一下 Google 推出的 Google reCAPTCHA 來阻擋機器人持續攻擊我的網站。

在 WordPress 所看到的留言大多是廣告的反向連結,其中少部份留言可能會有木馬或病毒程式,如果大家看到留言中的連結,千萬不要去點喔。

在 WordPress 剛安裝好的時候,預設就有一個阻擋惡意留言的外掛,叫做「Akismet Anti-Spam」,這是 WordPress 官方推薦的外掛。
可以做到阻擋惡意留言的功能,可是只要網站有商業行為,包含放置 Google Adsense 廣告,或是提供商業服務的網站,就無法免費使用,若要付費的話每月費用為 US$10。

如果你的文章不需要留言功能的話,也可以在設定中關閉留言功能,也是一種避免攻擊的方法。
如果想要維持留言功能,那就無法避免被機器人留言,所以要安裝保護機制。

對於阻擋機器人留言的功能,我推薦使用 Google reCAPTCHA 就可以了,不只可以用在文章留言區,還可以設定在後台的登入頁面 “wp-login.php”。
如果你有使用 Contact Form 7 做客戶聯絡表單的話,也是可以使用 Google reCAPTCHA。

以下我將會介紹什麼是 Google reCAPTCHA 以及如何在登入、文章留言及聯絡表單中都加入 Google reCAPTCHA 驗證機制。

什麼是 Google reCAPTCHA

Google reCAPTCHA 主要是驗證當網頁中有表單輸入時,判斷使用者行為是人在操作還是機器人在操作。

如果當你輸入表單後送出時,看到勾選「I’m not a rebot (我不是機器人)」的畫面,就是 Google reCAPTCHA 在檢查你的行為是否是機器人。

Google reCAPTCHA

現在常用的 Google reCAPTCHA 有分為 v2 及 v3 兩個版本,而 v1 已經被停用了。

Google reCAPTCHA v2 核取方塊驗證

Google reCAPTCHA v2 發布於 2012 年,使用圖形方塊來驗證,因為目前程式無法判斷圖片中的正確性,只有人類可以正常判斷出來。

Google reCAPTCHA

Google reCAPTCHA v2 因為每次都會中斷使用者行為來選取方塊驗證,也造成了使用者麻煩,Google 進一步改版增加了隱形模式。

隱形模式的驗證機制如同 Google reCAPTCHA v3 一樣,透過機器學習來觀察使用者行為,如果判定為人類操作,則會允許送出表單,反之,就會出現核取方塊確認是否為人類操作。

Google reCAPTCHA v3 機器學習給分驗證

Google reCAPTCHA v3 發布於 2018 年,採用機器學習觀察人類的操作行為給予操作分數。

Google reCAPTCHA v3 會多面性的檢查你的行為,包含滑鼠移動、頁面切換、等待時間、反應時間、過去操作記錄等等,來為你的行為打一個分數。
如果分數越高,表示人為操作,會讓你正常送出表單,畫面上不會有任何的中斷行為。分數太低則會判定為機器人,無法送出表單。

使用 v3 版本的話,還需要自行編寫分數的判斷,在每次送出留言時檢查分數是大於或小於 0.5,如果小於 0.5 的話可能是機器人留言的機率大。

申請 Google reCAPTCHA

Google reCAPTCHA 申請頁面: https://www.google.com/recaptcha/about/

點選上面「v3 Admin Console」。

Google reCAPTCHA

註冊新網站

這邊是加入你 WordPress 的網域。

標籤可以輸入網站名稱或是網址,讓你知道要設定那一個網站。
reCAPTCHA 類型」建立選擇選擇 reCAPTCHA v3 (以分數驗證要求)。
網域就輸入你網站的網域 (不需要輸入 https )。

Google reCAPTCHA 申請

完成後在下面勾選「接受《reCAPTCHA 服務條款》」,再按「提交」。

取得網站金鑰與密鑰

接下來出現的「網站金鑰」與「密鑰」等等在 WordPress 會用到,這裡先保留畫面,我們另開畫面到 WordPress 後台。

Google reCAPTCHA 申請

安裝 Advanced noCaptcha & invisible Captcha 外掛

Advanced noCaptcha & invisible Captcha 是將 Google reCAPTCHA 導入 WordPress 的外掛。

在 WordPress 「安裝外掛」的地方輸入「Advanced noCaptcha & invisible Captcha」搜尋外掛,安裝並啟用此外掛。

Advanced noCaptcha & invisible Captcha

安裝之後在「設定 > Invisible reCaptcha」點選單會進入設定頁面。

Advanced noCaptcha & invisible Captcha

填入網站金鑰與密鑰

第 1 個要設定的動作是選擇 reCAPTCHA type 為 V3,
然後在 Site Key 填入金鑰,在 Secret Key 填入密鑰。

第 2 是勾選要嵌入的表單,我基本的需求是放在登入頁及留言區使用,你可以依照想放的位置勾選起來。

調整介面語法 Captcha Language 為 Chinese (Traditional)

以 V3 版本來說,再往下的調整可以維持預設就行,最後在下面執行「儲存設定」。

回到前台的文章留言處,看一下。
會發現在網頁的右下角多了一個 Google reCAPTCHA 圖示,有看到這個圖片,就表示 Google reCAPTCHA 的機器人驗證已經開始了。

當使用者輸入留言後,要送出時,就會啟動驗證。

Invisible reCaptcha for WordPress

防止登入攻擊新選擇

雖然 Advanced noCaptcha & invisible Captcha 外掛提供了登入驗證 reCAPTCHA,可是我建議除了增加 reCAPTCHA 還可以將登入頁面修改為新網址,讓駭客找不到登入頁面。

安裝 WPS Hide Login 外掛,更換登入頁網址。
詳細的說明請參考另一篇文章: WordPress WPS Hide Login 外掛教學,隱藏登入網址,防止暴力登入攻擊

會使用 WPS Hide Login 的原因是,如果沒有將預設的登入網址換掉,後台還是會一直被機器人嘗試登入,雖然不會成功,但駭客通常是用暴力破解法攻擊,時間久是會被登入成功的。

在駭客嘗試登入網站時,伺服器無形中在浪費效能回應這些惡意攻擊,會造成伺服器的速度變慢。

只要更換網址,駭客就不知道入口在那,也就無法直接攻擊了,這方式也需要定期更換網址才行,不然我發現新的登入頁面在幾個月過後,又遭受登入攻擊了。

啟用聯絡表單 (Contact Form 7) 驗證

如果你有安裝聯絡表單 (Contact Form 7) 的話,也可以在 Contact Form 7 裡面設定送出表單時,驗證 Google reCAPTCHA。

在選單「Contact > Integration」開啟畫面。

Contact Form 7

在方塊中找「reCAPTCHA」,執行「Setup Integration」。

Contact Form 7 reCAPTCHA

輸入在Google reCAPTCHA 取得的「網站金鑰」與「密鑰」。
在「Site Key」輸入「網站金鑰」。
在「Secret Key」填入「密鑰」。

Contact Form 7 reCAPTCHA

輸入後儲存設定,之後再使用聯絡表單 (Contact Form 7) 送出時,就會進行機器人檢查了。
當回到前台的聯絡表單,只要看到有出現 Google reCAPTCHA 圖示就是成功了。

重點整理

  1. 留言被攻擊是無法避免的,所以要設定機器人驗證機制
  2. 使用 Google reCAPTCHA 免費驗證服務
  3. 在 Google reCAPTCHA 註冊網址
  4. 在 Advanced noCaptcha & invisible Captcha 填入「網站金鑰」與「密鑰」
    開啟留言表單保護
  5. 可開啟登入保護或安裝 WPS Hide Login 更換登入網址
  6. 聯絡表單 (Contact Form 7) 也可以使用 Google reCAPTCHA

相關學習文章

如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝

加入社團一起討論

關注我的 IG

One thought on “如何在 WordPress 設定 Google reCAPTCHA 保護(登入、留言、聯絡)表單,免遭惡意攻擊

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

sixteen − 3 =


The reCAPTCHA verification period has expired. Please reload the page.