Contact Form 7を削除せずにスパム対策するにはどうするべきか

前回、「Contact Form 7を非表示にしてもスパム送信された話」という記事を書きました。
実際に、自動返信メール機能が悪用され、さくらインターネットから警告を受けるというトラブルが発生しました。
その際は、Contact Form 7 自体を削除することで対応しました。
ただ、実務では「お問い合わせフォームを削除する」という判断は難しいと思います。
- お問い合わせフォームは必要
- 自動返信メールも残したい
- 問い合わせ完了メールが欲しい
という要望は普通にあります。
では、Contact Form 7 を残したまま運用する場合、どのようにスパム対策を考えればよいのでしょうか。
今回は、「1つの対策で防ぐ」のではなく、「複数の対策を組み合わせてリスクを下げる」という視点で整理してみます。
1つの対策だけでは防ぎきれない
今回いろいろ調べてみて感じたのは、実際には1つの対策だけで完全に防ぐのは難しいということです。
例えば、
- WAFはサーバー全体の防御
- reCAPTCHAはフォーム送信対策
- Honeypotは自動送信対策
のように、それぞれ役割が異なります。
そのため、複数の対策を組み合わせながら、リスクを下げていく考え方が重要です。
サーバーWAFはまず有効にする
まず基本として、レンタルサーバー側のWAFは有効にしておいた方がよいです。
WAFは、
- 不正アクセス
- SQLインジェクション
- 異常アクセス
などを検知・遮断してくれる仕組みです。
最近のレンタルサーバーでは標準搭載されていることも多いため、まずは有効になっているか確認しておきましょう。
reCAPTCHA や Cloudflare Turnstile を導入する
お問い合わせフォーム側の対策として、reCAPTCHA や Cloudflare Turnstile の導入はかなり有効です。
これらは、
- 人間の送信
- 自動送信
を判別するための仕組みです。
ただし、これだけで完全に防げるわけではないため、「入口防御の1つ」として考えるのが現実的だと思いました。
個人的には、最近は Cloudflare Turnstile が気になっています。
Honeypot はかなり良さそうだった
今回調べていて、個人的にかなり興味を持ったのが Honeypot です。
これは、人間には見えない入力欄を用意し、その項目に値が入っていたら「自動送信の可能性が高い」と判定する仕組みです。
Contact Form 7にHoneypotを設定できるプラグイン「CF7 Apps」がありますので、こちらの導入をおすすめします。
自動返信メールはどうするべきか
個人的には、自動返信メールを使わない構成が一番安全だと考えています。
理由は、今回のようにフォーム送信機能が悪用された場合、自動返信メール機能がスパム送信の踏み台として利用される可能性があるためです。
ただし、実務では「問い合わせ完了メールを送りたい」という要望も多く、自動返信メールを完全になくすのが難しいケースもあります。
そのため実際には、
- サーバーWAF
- reCAPTCHA / Turnstile
- Honeypot
- 送信回数制限
- WordPress更新
など、複数の対策を組み合わせながら、リスクを下げて運用することが現実的なのだと思います。
WordPress全体のセキュリティ対策も重要
お問い合わせフォームだけでなく、WordPress全体のセキュリティ対策も重要です。
例えば、
- WordPress本体やプラグインの更新
- 不要プラグインの削除
- ログイン保護
- 問題発生時のスキャン確認
なども、日常的な運用として必要です。
Wordfence Security などのセキュリティプラグインを活用し、不審なファイルや改ざんがないか定期的に確認することも重要です。
まとめ
今回の件を通して感じたのは、「これを入れれば絶対安全」という単一の対策は存在しないということです。
実際には、
- WAF
- reCAPTCHA / Turnstile
- Honeypot
- WordPress更新
- 不要プラグイン削除
など、それぞれ役割の異なる対策を組み合わせながら運用していくことが重要です。
お問い合わせフォームは便利な機能ですが、その分、継続的な運用とセキュリティ対策も必要なのだと改めて感じました。