Start using WordPress in 2021

WordPress 如何阻擋垃圾信?Cloudflare Turnstile 防垃圾留言 4 步驟完整設定教學

WordPress 如何阻擋垃圾信?Cloudflare Turnstile 防垃圾留言 4 步驟完整設定教學
WordPress 教學網頁資訊分享

為什麼網站沒有表單,還是會被垃圾機器人攻擊?

很多人遇到 WordPress 垃圾留言或垃圾訊息時,第一個疑問都是:「我的網站明明沒有聯絡表單,為什麼還是會被垃圾機器人攻擊?」

WordPress 機器人垃圾信攻擊
WordPress 機器人垃圾信攻擊

原因其實很簡單:垃圾機器人(Spam Bot)並不是像真人一樣,打開網站、找到表單,再一個欄位一個欄位填寫。

這類機器人通常會透過自動化程式大量掃描網站,辨識網站使用的系統與常見入口,再直接發送請求。

而 WordPress 本身就具有許多可以接受使用者資料的功能,例如:

  • WordPress 登入。
  • 使用者註冊。
  • 忘記密碼/重設密碼。
  • 文章留言。
  • Contact Form 7 等聯絡表單。

因此,「網站前台沒有聯絡表單」並不代表網站沒有可以被垃圾機器人嘗試存取或提交資料的入口。

 

明明沒有開放文章留言,為什麼還會出現垃圾留言?

這也是 WordPress 網站很常見的情況。

有些企業網站根本沒有製作留言區,也沒有讓訪客留言的需求,但 WordPress 後台卻還是陸續出現英文廣告、可疑網址或毫無意義的垃圾留言。

原因在於:

前台沒有顯示留言區,與 WordPress 是否允許文章接受留言,是兩件不同的事情。

例如佈景主題沒有將留言區顯示在文章頁面,但 WordPress 的留言功能仍然處於開啟狀態,垃圾機器人仍可能嘗試對相關入口發送請求。

注意

沒有看到表單,不代表網站沒有可以被 Bot 嘗試攻擊的入口。

垃圾機器人不需要像真人一樣找到網站上的輸入框,才開始填寫資料。如果網站完全不需要留言功能,建議除了增加 Bot 防護之外,也直接關閉不需要的留言功能,減少不必要的攻擊面。

Cloudflare Turnstile 是什麼?可以阻擋哪些垃圾訊息?

Cloudflare Turnstile 是 Cloudflare 提供的真人與機器人驗證機制,主要用途是在網站接受登入、留言、表單送出等操作之前,協助判斷這次請求比較可能來自真人還是自動化程式。

它的用途和常見的 CAPTCHA 類似,但 Turnstile 的設計重點之一,是盡可能降低驗證機制對正常使用者的干擾

例如設定為「僅互動時顯示」後,大部分正常訪客不需要辨識圖片,也不需要額外完成驗證操作;只有 Cloudflare 判斷需要進一步確認時,才會顯示互動式驗證。

 

WordPress 可以用 Turnstile 保護哪些地方?

本篇教學會使用 Simple CAPTCHA with Cloudflare Turnstile 外掛,將 Cloudflare Turnstile 套用到 WordPress 常見的提交入口。

防護一 WordPress 登入

可以在 WordPress 登入頁加入 Turnstile 驗證,降低自動化程式大量嘗試登入的情況。

防護二 使用者註冊與重設密碼

如果網站開放會員註冊,可以針對註冊與重設密碼表單增加驗證,降低機器人大量建立帳號或濫用相關功能。

防護三 WordPress 文章留言

Turnstile 可以套用在 WordPress 原生留言功能,減少自動化程式大量送出廣告、網址與垃圾留言。

防護四 Contact Form 7 聯絡表單

如果網站使用 Contact Form 7,可以設定在全部 Contact Form 7 聯絡表單啟用 Turnstile,不需要每建立一張表單就重新設定一次。

重點

Cloudflare Turnstile 不只可以用在聯絡表單。

即使網站沒有 Contact Form 7,也可以針對 WordPress 登入、註冊、重設密碼與留言等功能增加 Bot 驗證,因此更適合作為 WordPress 網站的基礎垃圾機器人防護之一。

Cloudflare Turnstile 不等於完整的網站防火牆

這裡要特別釐清一個觀念:安裝 Turnstile,不代表網站從此不會受到任何機器人或惡意流量攻擊。

Turnstile 主要處理的是需要驗證或提交資料的入口,例如登入、留言及聯絡表單。

如果遇到的是網站弱點掃描、大量異常 Request、DDoS 或其他網站層級的惡意流量,就需要進一步透過 Cloudflare WAF、防火牆規則、Rate Limiting、主機安全機制或其他 WordPress 資安措施處理。

核心觀念

Turnstile 是 WordPress 防垃圾機器人的其中一道防線,而不是完整的網站資安解決方案。

它最適合處理的是垃圾留言、垃圾表單以及各種自動化提交行為。

WordPress 如何設定 Cloudflare Turnstile?

接下來會從 Cloudflare 帳號申請開始,只需要 4 個步驟,就可以完成 Cloudflare Turnstile 與 WordPress 的設定。

Step 1:申請 Cloudflare Turnstile 並取得網站金鑰

首先前往 Cloudflare 官網。如果還沒有 Cloudflare 帳號,先註冊一個免費帳號;已有帳號則直接登入。

登入 Cloudflare 後,進入 Turnstile,新增一個要使用 Turnstile 的網站。

Cloudflare Turnstile 進入 Turnstile
Cloudflare Turnstile 進入 Turnstile

新增 Turnstile 小工具
建立新的 Turnstile 小工具,輸入方便自己辨識的名稱,並加入要使用 Turnstile 的網站網域。

新增 Turnstile 小工具
新增 Turnstile 小工具

取得 Site Key 與 Secret Key
設定完成後,Cloudflare 會產生兩組 WordPress 串接時需要使用的金鑰:

  • Site Key:網站金鑰。
  • Secret Key:秘密金鑰。

先不要關閉這個畫面,下一個步驟會將這兩組金鑰貼到 WordPress。

取得 Site Key 與 Secret Key
取得 Site Key 與 Secret Key

Step 2:WordPress 安裝 Turnstile 外掛並串接 Cloudflare

進入 WordPress 後台「外掛 → 安裝外掛」,搜尋 Simple CAPTCHA with Cloudflare Turnstile,安裝並啟用外掛。

安裝 Simple CAPTCHA with Cloudflare Turnstile
安裝 Simple CAPTCHA with Cloudflare Turnstile

1. 貼上 Cloudflare API 金鑰
進入 Turnstile 外掛設定,將 Step 1 從 Cloudflare 取得的兩組金鑰,分別貼到對應欄位:

  • 網站金鑰:貼上 Site Key。
  • 秘密金鑰:貼上 Secret Key。
貼上 Cloudflare API 金鑰
貼上 Cloudflare API 金鑰

2. 啟用 WordPress 預設功能表單防護
在「依據需求啟用 Cloudflare Turnstile 人機驗證」中,建議將 WordPress 預設的 4 個表單全部勾選:

  • WordPress 登入表單。
  • WordPress 註冊表單。
  • WordPress 重設密碼表單。
  • WordPress 留言表單。
啟用 WordPress 預設功能表單防護
啟用 WordPress 預設功能表單防護

3. Contact Form 7 設定
如果網站有使用 Contact Form 7,展開「Contact Form 7」,勾選「在全部 Contact Form 7 聯絡表單中啟用」

設定後 Turnstile 會自動套用到所有 Contact Form 7 表單,不需要逐一修改每張表單,也不需要另外加入 Turnstile 標籤。

ontact Form 7 設定
ontact Form 7 設定

點擊”測試回應”

點擊"測試回應"
點擊”測試回應”

看到測試成功回應

看到測試成功回應
看到測試成功回應

前台表單就可以看見”Cloudflare”的標誌,如果怕破壞前台美觀,可以調整「顯示模式」(參考Step 3)

前台表單 Cloudflare 安裝成功
前台表單 Cloudflare 安裝成功

Step 3:設定 Cloudflare Turnstile 顯示模式

在 Turnstile 外掛設定中找到「顯示模式」,這裡可以決定 Turnstile 驗證元件平常是否顯示在網站上。

建議選擇:「僅互動時顯示」

設定 Cloudflare Turnstile 顯示模式
設定 Cloudflare Turnstile 顯示模式

為什麼建議選「僅互動時顯示」?
Turnstile 只會在需要進一步驗證時顯示互動元件,因此對大部分正常訪客來說,驗證元件會維持不可見的狀態。

這樣可以在增加垃圾機器人防護的同時,盡量避免干擾正常使用者操作網站。

Step 4:測試 Cloudflare Turnstile 是否正常運作

全部設定完成後,建議開啟瀏覽器無痕模式重新進入網站,實際測試有啟用 Turnstile 的功能。
例如網站有使用 Contact Form 7,可以實際填寫並送出一次聯絡表單,確認表單可以正常送出。

沒有看到 Turnstile 驗證框是正常的嗎?
如果 Step 3 選擇的是「僅互動時顯示」,正常訪客不一定會看到 Turnstile 驗證元件。

Turnstile 只有在判斷需要使用者進一步互動時才會顯示,因此沒有看到驗證框,不代表 Turnstile 沒有運作。

設定重點

如果使用 Contact Form 7,不需要在每張表單手動加入 Turnstile。

只要在外掛設定中勾選「在全部 Contact Form 7 聯絡表單中啟用」,即可統一套用到所有 CF7 聯絡表單。

安裝 Turnstile 後還是收到垃圾信怎麼辦?

Cloudflare Turnstile 可以有效降低一般自動化 Bot 的垃圾提交,但沒有任何一套 CAPTCHA 或 Bot 驗證機制能保證阻擋所有垃圾訊息。

如果完成設定後仍然收到垃圾信,不要急著認定 Turnstile 沒有效果,第一步應該先確認垃圾訊息到底是從哪個入口進來。

檢查一 確認垃圾訊息的真正來源

先確認垃圾訊息是來自 WordPress 文章留言、Contact Form 7、其他表單外掛、WooCommerce、會員註冊,還是直接寄到公開 Email 地址的垃圾郵件。

如果對方是直接寄信到網站公開的 Email 地址,這封信根本沒有經過 WordPress 表單,Turnstile 自然無法阻擋。

檢查二 不需要留言功能,就直接關閉

如果網站是一般企業形象網站,完全沒有開放文章留言的需求,最直接的方法不是一直過濾垃圾留言,而是直接關閉 WordPress 不需要的留言功能。

不需要的功能就不開放,可以直接減少網站暴露給 Bot 的入口。

檢查三 確認 Turnstile 是否真的套用到需要保護的位置

安裝外掛並輸入 Cloudflare 金鑰,不代表所有 WordPress 功能都已經受到保護。

應確認外掛設定中是否已經啟用 WordPress 登入、註冊、重設密碼、留言,以及網站實際使用的聯絡表單。

檢查四 必要時搭配 Honeypot

如果垃圾表單仍然很多,可以再增加 Honeypot(蜜罐)機制。

Honeypot 會在表單中加入一般使用者不會填寫、但自動化 Bot 可能會填寫的隱藏欄位。一旦這個欄位被填寫,就能將這次提交判定為可疑。

Turnstile 與 Honeypot 的判斷方式不同,因此可以作為不同層級的防護。

檢查五 大量惡意流量改從 Cloudflare WAF 處理

如果遇到的已經不是單純幾封垃圾留言,而是大量異常 Request、特定來源持續掃描網站、暴力登入或其他明顯的惡意流量,問題就已經超出 Turnstile 的主要用途。

這時應進一步從 Cloudflare WAF、防火牆規則、Rate Limiting 或主機端安全機制處理,而不是單純增加更多 CAPTCHA。

小提醒

  • 先確認垃圾訊息從哪個入口進來,再決定防護方式。
  • 網站不需要的留言、註冊等功能,可以直接關閉。
  • Turnstile 適合阻擋自動化提交,但不是完整的網站防火牆。
  • 如果是直接寄到 Email 的垃圾郵件,Turnstile 無法處理。

關於作者

Popcorn

專職網頁設計師|擁有 15 年以上設計與網站製作經驗
累積超過 50 個 WordPress 架站實務。曾歷經印刷、電商與前端開發等產業,熟悉從品牌呈現、網站規劃、UI/UX 設計到前端開發的完整流程。

相關文章