[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」と入力し、表示される以下のプラグインをインストール・有効化します。

フォーム編集画面のフォームタグに「ハニーポット」ボタンが追加されます。
送信ボタンの上あたりで「ハニーポット」をクリックします。

「名前」を任意の名前に変更します。
初期値の「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)