問い合わせフォーム(WPFormsプラグイン)のスパム対策CAPTCHAをreCAPTCHA v3からTurnstileに変更

問い合わせフォーム(WPFormsプラグイン)のスパム対策CAPTCHAをreCAPTCHA v3からTurnstileに変更

このサイトの問い合わせフォームは、2種類用意している。

  • WPFormsプラグイン
  • 外部サービス「フォームメーラー」(入力→確認→送信ステップ)

今回、「フォームメーラー」から問い合わせが届いた。そして、問い合わせユーザさんから、WPFormsプラグインから問い合わせが出来ないことを報告していただいた。
不具合は、送信ボタンをクリックすると赤字で「破損した投稿データを送信しようとしています」と表示され入力内容はそのままで送信できないという。

WPFormsプラグイン問い合わせフォームから送信できない現象

問い合わせフォームWPFormsプラグイン「破損した投稿データを送信しようとしています」エラーメッセージ
「破損した投稿データを送信しようとしています」エラーメッセージ

テストしてみたところ、確かに送信できない。

WPFormsプラグインのアップデートは自動更新設定しており、都度問題なく更新されていたはず(メール通知あり)。
また、2件の問い合わせフォームに関してのメール通知

  • WPFormsプラグイン:件名「www.taskmother.jp の毎週の WPForms サマリー」として、フォームのパフォーマンス状況
  • WP Mail SMTPプラグイン(WPFormsプラグインと連携):件名「サマリー 於 www.taskmother.jp」として、送信したメール数状況

が、週1回、きちんと届いていたので問題なく動いていたと思い込んでいた。

このエラーメッセージ+αで検索してみたが、ヒットする記事がなく、どうしたものかと思いながら、テスト用フォームを作成して気がついた。どうやら、Google reCAPTCHA v3の設定を外すと送信できる。

対応策として、CAPTCHA設定をGoogle reCAPTCHA v3 → Turnstile に変更して、問い合わせフォームの不具合を解消した。不具合の原因やCAPTCHAを変更した理由は後述。

WPFormsプラグインにスパム対策ツール「Cloudflare Turnstile」を設定する

設定はとても簡単。
Cloudflare Turnstile1にて、アカウントを取得(無料)する。

アカウントの登録が完了しログインすると、管理画面が表示される。
アプリケーション セキュリティ > Turnstile ウィジェット で「ウィジェットを追加」ボタンをクリックする。

Cloudflare Turnstileの管理ページ、ウィジェットを新規追加

ウィジェット名(識別できる名前)を入力し、カスタムホスト名に設定するドメイン名を入力する。

Cloudflare Turnstileの管理ページ、ホスト名の追加

下部の2つの項目は、デフォルトのままで「作成」ボタンをクリックして、設定は完了。

  • ウィジェットモードは:管理対象
  • このサイトの事前クリアランスを選択しますか?:いいえ
Cloudflare Turnstileの管理ページ、ウィジェットモードと事前クリアランスの選択

ウィジェットの作成が完成すると、サイトキーとシークレットキーが発行される。
この2つのキーをWPFormsプラグインに設定することになる。

Turnstile のサイトキーとシークレットキーが発行
Turnstile のサイトキーとシークレットキーが発行された

次に、WordPressのWPFormsプラグインの設定を行う。

WPForms > 設定 のCAPTCHA にアクセスすると、CAPTCHAの3サービス画像↓が表示される。
ここで、Turnstileマークを選択する。
Turnstile管理ページで発行されたサイトキーとシークレットキーを入力する。

WPFormsのCAPTCHA設定でTurnstileを選択し、各キーを設定する
Turnstileを選択し、各キーを設定する

「設定を保存」ボタンをクリックして、設定が完了。

下記のように、正しく設定されると、プレビュー項目に、フォームに表示されるTurnstile画像が表示される。

Turnstileの設定が完了すると、チェックボックスとCloudflareのアイコン画像が表示される
プレビュー項目にチェックボックスとCloudflareのアイコン画像が表示される

次にCAPTCHAを問い合わせフォームに反映させるため、該当するフォームを選択し、設定メニュー > スパム対策とセキュリティ のCAPTCHA項目の「Cloudflare Turnstileを有効化」をONにする。

「Cloudflare Turnstileを有効化」をON
「Cloudflare Turnstileを有効化」をON

これで、WPFormsプラグインの問い合わせフォームのスパム対策であるCAPTCHA設定が完了した。

スパム対策CAPTCHAをreCAPTCHA v3からTurnstileにした理由

まずは、フォーム不具合の原因から。

reCAPTCHA v3の各キーが無効になっていたからである。reCAPTCHA v3の設定が消えていた。
確かに、reCAPTCHAバッジ(ロゴマーク)が出ていなかった(とはいえ、あとから気がついたのだが・・・)。
というのも、reCAPTCHA v3の管理ページにアクセスしたところ、新規に作成しますか?と表示され、reCAPTCHA v2→v3と長く使い続けていたはずなのに全くデータが存在していないのである。

そういえば、reCAPTCHA v3は2025年末からreCAPTCHA Enterpriseになって、有料化(アクセス数件数によって)になることを告知していたのでその影響かと思われた。

reCAPTCHA v3からreCAPTCHA Enterpriseへの移行案内「reCAPTCHA Classic から移行する2」に従って移行処理が必要なのか?と進めるも、やはり「reCAPTCHA 管理コンソール」にデータは存在しない。

reCAPTCHA v3の設定がなぜ無くなったか?原因は不明であるが、ひとつ考えられるのは、春頃にさかんに複数のプロジェクトを設定している「Google Cloud」から請求アカウントの更新メッセージが数回きていた。その際、GA4がらみで設定していたプロジェクトを削除したのだが(削除したら、再三のメッセージが無くなった)、GA4だけでなくreCAPTCHA v3も関係していたのだろうか?今となってはわからない・・・

ということで、reCAPTCHA v3の無効になった2つのキーは設定したままで、WPFormsプラグインと連携していたので不具合が発生したと考えられる。もう少しわかりやすいエラーエラーメッセージを出してほしいものだ。

ということで、reCAPTCHA Enterpriseを新たに設定することも考えたが、有料化のことや、WPFormsプラグインのCAPTCHA設定がreCAPTCHA v3には対応しているが、まだreCAPTCHA Enterpriseへの対応について明確な情報を提供していないようなので、今回は見送ることにした。

「Google Cloud」は既に利用しているので、有料化になった場合の予算アラートの設定をすれば問題ないかと思われたが、Turnstileへの移行の方がはるかに簡単なので、今回はこちらの選択となった。

また、同じ問い合わせフォームプラグインContact Form 7も「今後の CAPTCHA のサポートについて3」として、Cloudflare Turnstileへの変更を発表している。Contact Form 7プラグインユーザも、今年中(2025年)の変更が必要だろう。

今後の動向を見ながら、reCAPTCHA Enterpriseの方が精度がよければ、また見直しを図ることも考えている。

  1. Cloudflare Turnstile:CAPTCHAに代わる検証ツール ↩︎
  2. reCAPTCHA Classic から移行する:Google Cloud Documentation ↩︎
  3. 今後の CAPTCHA のサポートについて:Contact Form 7 ↩︎