SilentShield
← ブログに戻る
WordPressセットアップスパムContact Form 7

WordPressにCAPTCHAを設定してフォームスパムを止める手順

Marc Wagner·2026年10月7日·5分 で読める

このガイドでは、Contact Form 7を使った新規のWordPressサイトを、「保護なし」の状態から多層の保護へと整えていきます。すべて2026年10月7日に、SilentShield 2.15.14、Contact Form 7 6.2、WordPress 7.1.2で検証しました。ここで説明するレイヤーはお客様ご自身のサーバー上で動作します。オプションのSilentShield APIについてはWordPressガイドで説明しています。

インストール直後は何も保護されていません

インストール直後のSilentShieldダッシュボード:赤いお知らせ「No form is protected yet」(保護されているフォームはまだありません)で、すべてのフォームプラグインを個別に有効にする必要があることを伝え、Contact Forms 7、WordPress Comments、Password Reset、WordPress Login、WordPress Registrationを一覧表示し、「Choose what to protect」ボタンを提示している
英語の管理画面のスクリーンショット(SilentShield 2.15.14、WordPress 7.1.2、2026年10月7日にテスト)。

プラグインを有効化すると動作は始まりますが、どのフォームプラグインもまだ有効になっていません。ダッシュボードにもはっきり表示されます。「No form is protected yet」(保護されているフォームはまだありません)という表示と、サイトで見つかったフォームプラグインの一覧です。フォームプラグインを有効にするまで、そのフォームにはCAPTCHAフィールドが表示されず、何もチェックされません。

以下の設定はすべて、WordPress管理画面のSilentShieldメニューにあります。

ステップ1:CAPTCHA方式を選ぶ

Protection Settingsページ:CAPTCHAモジュールがオンになっており、方式としてHoneypot(非表示、推奨)、Math Problem、Image Captchaが選べ、ラベルとプレースホルダーの入力欄、表示テンプレートの選択肢がある
英語の管理画面のスクリーンショット(SilentShield 2.15.14、WordPress 7.1.2、2026年10月7日にテスト)。

SilentShield → Protection Settingsを開きます。方式は3種類あります。

  • Honeypot(デフォルト、非表示)。画面外に罠のフィールドを置きます。訪問者の目には触れませんが、見つけたフィールドをすべて埋めるボットは入力してしまいます。Honeypotは課題ではありません。ページを読み取って罠を避けるボットは通過します。
  • 計算問題。 訪問者が簡単な計算問題(足し算、引き算、掛け算)を解きます。テキストとして表示されるため、実際のブラウザーを操作するボットなら読み取れます。
  • 画像CAPTCHA。 歪んだ文字を訪問者が入力します。サーバーにPHPのGDライブラリが必要で、訪問者にとって最も手間のかかる方式です。

コンバージョンを最優先するなら、まずHoneypotから始めてください。それでもスパムが届く場合は、計算問題または画像CAPTCHAに切り替えます。テンプレートを選び、必要に応じてラベルを調整して、Saveをクリックします。

ステップ2:フォームを有効にする

Formsページ:Contact Forms 7の連携がオンになり、「Detected」と「Fields detected」のバッジが表示されている。その下にフォーム「Contact form 1」が一覧表示され、他のフォームプラグインはインストールされていない
英語の管理画面のスクリーンショット(SilentShield 2.15.14、WordPress 7.1.2、2026年10月7日にテスト)。

SilentShield → Formsを開きます。フォームプラグインごとにスイッチがあり、横のバッジがそのプラグインをサイトで検出したかどうかを示します。Contact Form 7をオンにすると、バッジが「Disabled」から「Fields detected」に変わります。このスイッチは即座に保存されるため、保存ボタンはありません。

個別のフォームに専用の設定が必要な場合は、連携の下にあるそのフォームをクリックします。設定は3つのレベル(グローバル、連携、個別のフォーム)で適用され、下位のレベルが上位のレベルを上書きします。

フォームプラグインごとのステップバイステップガイド:Avada Forms、Elementor Forms、WPForms、WooCommerceのチェックアウト。

ステップ3:検出レイヤーを追加する

Protection Settingsページの下部:Timer Protectionはオフ、JavaScript Detectionはオン、Browser Detectionはオン、Multiple Submission Protectionはオフ、Gibberish Detectionはオンでモードは「Monitor only (record, do not block)」、「Flagged fields required: 3」
英語の管理画面のスクリーンショット(SilentShield 2.15.14、WordPress 7.1.2、2026年10月7日にテスト)。

Protection Settingsの下の方では、各レイヤーに専用のスイッチがあります。インストール直後の状態は次のとおりです。

  • JavaScript検出(オン)。 JavaScriptを実行していないクライアントからの送信をブロックします。たとえば、フォームのアドレスに直接投稿するスクリプトなどです。
  • ブラウザー検出(オン)。 リクエストに有効なユーザーエージェントが含まれているかを確認します。
  • タイマー保護(オフ)。 ページの読み込みから最小時間より早く届いた送信を拒否します。デフォルトの最小時間は500ミリ秒です。
  • 多重送信防止(オフ)。 同じCAPTCHAセッションが2回以上送信されるのを防ぎます。
  • Gibberish Detection(オン、「Monitor only」)。 「dQgJlwEhfxaLZSKYLy」のような、ランダムな文字でできたテキストを検出します。モニターモードでは、拒否していたはずの内容を記録するだけで、何もブロックしません。しばらく結果を観察してから、モードを「Block」に切り替えてください。

有効なレイヤーのいずれかが問題と判定した時点で、その送信は拒否されます。

ステップ4:しつこいスパムにはレート制限とコンテンツルールを

Advanced Settingsページ:IP-based Rate LimitingとContent Rules(URL limit、BBCode、word blacklist)はどちらもオフで、IP blacklistには例として192.168.1.1と10.0.0.0/24が入力されている
英語の管理画面のスクリーンショット(SilentShield 2.15.14、WordPress 7.1.2、2026年10月7日にテスト)。

SilentShield → Advanced Settingsを開きます。ここにある項目はすべて、デフォルトではオフです。

  • IPベースのレート制限。 5分以内に3回失敗すると、そのアドレスは1時間ブロックされます(デフォルト値で、すべて調整できます)。アドレスはソルト付きハッシュとして保存されます。
  • コンテンツルール。 メッセージ内のリンク数の上限、BBCodeリンク([url=…])のブロック、単語のブラックリストです。ブラックリストはWordPress標準のリストで、「設定 → ディスカッション」の「Disallowed Comment Keys」(コメントの禁止キーワード)にあたります。どちらで編集しても同じ効果があります。
  • IPブラックリスト。 常にブロックしたいアドレスを、1行に1つずつ入力します。

ステップ5:管理者ではなく訪問者としてテストする

CAPTCHAの答えを間違えた後のContact Form 7:フォームに入力済みの値が残り、「Captcha check」というテキストの応答ボックスが強調表示されている
英語の管理画面のスクリーンショット(SilentShield 2.15.14、WordPress 7.1.2、2026年10月7日にテスト)。

管理者とログイン中のユーザーは、デフォルトですべてのチェックをスキップします(同じページのホワイトリスト)。そのため、ログインしたままテストしても何も証明できません。代わりに、プライベートブラウジングウィンドウでフォームを開いてください。

  1. 間違ったCAPTCHAの答えで送信します。送信はブロックされるはずです。Contact Form 7は、その理由を応答ボックスに表示します。ここでは「Captcha check」です。
  2. フォームを再読み込みして、正しい答えで送信します。今度は通過するはずです。

どの設定がどのスパムを止めるか

  • ブラウザーを使わず直接送信するスクリプト:JavaScript検出とブラウザー検出。
  • すべてのフィールドを埋めるボット:Honeypot。
  • 数ミリ秒でフォームを入力して送信するスクリプト:タイマー保護。
  • ランダムな文字のダミーテキスト:Gibberish Detection。
  • リンクスパム:リンク数の上限、BBCodeのブロック、単語のブラックリスト。
  • 同じアドレスが何度も試行する:IPベースのレート制限。

限界

  • 人が手で入力するスパムは、どの設定でも止められません。
  • 実際のブラウザーを操作するボットは、クライアント側のチェックを通過できます。コンテンツルールとGibberish Detectionは、代わりに入力された内容を調べます。このケースに対応するレイヤーが行動分析です。
  • ブラウザーでJavaScriptが無効な場合、保護されたフォームへの送信は拒否されます。

フォーム保護ガイド

CAPTCHAをやめる準備はできましたか?

フォームを目に見えない形で保護しましょう。クレジットカード不要。