[WordPress] Contact Form 7のスパム対策プラグイン「Honeypot for Contact Form 7」
WordPressの「Contact Form 7」プラグインを使用して作成したフォームのスパム対策として、「Honeypot for Contact Form 7」プラグインを導入した際の記録です。
導入時点の状況
- WordPressプラグイン「Contact Form 7」を使用して作成したお問い合わせフォームを運用中
- reCAPTCHA v3を導入済み
- 月に数件だったスパム送信が、突然1日に数十件届くようになった
上記の状況を踏まえ、reCAPTCHA v3と併用するスパム対策として、「Honeypot for Contact Form 7」プラグインを導入することにしました。
Honeypotの仕組み
- フォームに、ユーザーには見えない隠しフィールドを設置
- 自動で全てのフィールドにデータを入力するスパムbotの特性を逆手に取り、隠しフィールドへの入力を誘導
- 隠しフィールドにデータが入力された場合、スパムと判定して送信をブロック
Honeypotの導入手順
プラグインのインストール・有効化
「プラグインを追加」画面の検索窓で「Honeypot for Contact Form 7」と入力し、表示される以下のプラグインをインストール・有効化します。

※現在は「CF7 Apps」というプラグインに変わっています
ハニーポットの基本設定
「お問い合わせ」メニュー内に表示される 「ハニーポット」をクリックします。
以下のような設定項目が表示されます。

| 項目 | 内容 | チェックを入れると | おすすめ設定 |
|---|---|---|---|
|
Store Honeypot Value (ハニーポットの値を保存) |
ハニーポットに入力された値を、Flamingo などの保存系プラグインに保存するかどうか | スパムボットが入力した内容を確認でき、スパム分析に役立つ | 常運用:チェックなし スパム調査・検証中:チェック |
|
Global Placeholder (グローバルプレースホルダー) |
ハニーポット項目に placeholder を設定するかどうか 他の入力欄に placeholder を使用している場合、見た目を似せる目的で使用 |
ボットが通常の入力欄と誤認しやすくなる | placeholder を多用しているフォーム:設定推奨 迷った場合:設定なし |
|
Accessibility Message (アクセシビリティ用メッセージ) |
スクリーンリーダー向けに 「このフィールドは空のままにしてください。」 という非表示メッセージを出力 | 視覚に障がいがある方への配慮となり、WCAG 対応に役立つ | デフォルト文言のまま(設定なし) |
|
Use Standard Autocomplete Value (autocomplete を標準値にする) |
通常はブラウザの自動入力を防ぐため、変則的な autocomplete 値が使用される | autocomplete="off" に変更される一部ブラウザでの誤動作が減る場合があるが、スパム対策効果はやや下がる |
問題がなければ チェックなし 自動入力される場合のみ チェック |
|
Move Inline CSS (CSSをフッターへ移動) |
ハニーポット欄を非表示にする CSS を、インラインからフッターへ移動する | 「いかにも隠しているフィールド」感が減り、ボットにハニーポットだと見抜かれにくくなる | チェック推奨 |
|
Disable Accessibility Label (アクセシビリティラベルを無効化) |
スクリーンリーダー用の label を生成しない | アクセシビリティは低下するが、一部のボットを騙しやすくなる可能性がある | 通常:チェックなし スパムが非常に多い場合の最終手段:チェック |
|
Enable Time Check (送信までの時間チェック) |
フォーム表示から送信までの時間でスパム判定を行う デフォルトでは4秒未満で送信されるとスパム扱いされる |
高精度なスパム検出が可能になるが、入力が非常に早いユーザーが弾かれる可能性がある | 入力項目数やスパム状況に応じて判断 |
フォームにハニーポットフィールドを追加
送信ボタンの上あたりにカーソルを合わせ「ハニーポット」をクリックします。

「名前」を任意の名前に変更し、「挿入タグ」をクリックします。

項目名は初期値の「honeypot-xxx」のままだと、botに検知されてしまう可能性があるため、「honeypot」という文字列は避けた名称にしておくと安心です。
また、honeypot に指定する項目名は、実際のフォームで使用している項目名と重複しないように設定することをおすすめします。
例えば、フォームで [text your-age] を使用している場合は、honeypot に [honeypot your-age] のような指定は避けた方がよいです。
項目名が重複すると、フォームの値が上書きされてしまい、メールで入力内容を正しく取得できないなど、意図しない不具合が発生する可能性があります。
honeypotのタグが挿入されたことを確認したら、「保存」をクリックします。

フォームの表示確認
お問い合わせ内容と送信ボタンの間にhoneypotのタグが追加されますが、表示上は何の変化もありません。


デベロッパーツールでソースコードを確認すると、display:noneで見えないフィールドが追加されていることが分かります。
これは、botトラップ用の隠しフィールドを追加し、それをdisplay:noneでユーザーには見えないようにしている、というシンプルな仕組みです。
まとめ
「Honeypot for Contact Form 7」は、ユーザビリティを損なうことなくスパム対策が可能です。
現状のスパム対策に不安がある場合、このプラグインを導入してみることを検討してみてはいかがでしょうか。
現在は「CF7 Apps」というプラグインに変わっています
「旧 Honeypot for Contact Form 7」(作者:WPExperts)は、
現在は CF7 Apps – [Honeypot and hCAPTCHA for Contact Form 7](作者:CF7Apps)というプラグインに変わっています。
プラグインインストール画面で「Honeypot for Contact Form 7」で検索しても表示されませんのでご注意ください。
フォーム編集画面での使い方に大きな変更はありません。
CF7 Apps – [Honeypot and hCAPTCHA for Contact Form 7] の基本設定については以下の記事でご紹介しています。
![MARKLEAPS[マークリープス]](https://markleaps.com/blog/wp-content/themes/mkl/images/00_logo.png)