Contact Form 7(コンタクトフォーム7)で簡易スパム対策

WordPressで定番のメールフォーム用のプラグインContact Form 7(コンタクトフォーム7)でフォームを設置したとき、スパムメールで悩んでいました。スパムメールを弾くプラグインやreCAPTCHAなどロボットを防ぐ便利なプラグインがありますが、Contact Formに最初からついてる「クイズ」を使ったバリデーション機能で簡易的に海外からのスパムをはじく方法をご紹介します。この方法でHIRAEのお問合わせお申し込みのフォームを使っていますが、今のところ問題なく運用できております。

そもそもスパムは防げるのか(スパムの原因を考える)

スパムメールはほとんどの場合、海外からのBOTを使ったプログラムが多いと思われますが、海外からのフィルタを作る&BOT対策という2つの処理を考えてみます。といっても簡単で「日本語でランダムな文字では送信できない」という条件を作ってContact Form 7 にあるクイズと回答のタグを使うとシンプルに施工できます。

Contact Form 7 のフォーム作成で、赤帯の部分の「クイズ」の部分からクイズを作成できます。出されたクイズに回答できないと送信ができないというもので、例えば、ランダムに表示された漢字をひらがなで入力してもらわないと送信できないという「設問」を設ける場合。

福岡|ふくおか
熊本|くまもと
長崎|ながさき

のように、漢字とひらがなを|で区切って作ります。改行してたくさんのパターンを作ることで毎回ページを開くたびにランダムに質問されます。 あとはここで作成したタグを下記のように挿入することで、

<label>下記の地名をひらがなで入力してください(スパムメール対策)</label>
[quiz quiz-976 "福岡=>|ふくおか" "熊本=>|くまもと" "長崎=>|ながさき"] 

送信前に表示された地名をひらがなで入力しないと送信できない。という事ができ、海外からのBOTはまず弾くことができますし、英数字だけの総当りのような攻撃パターンも日本語を使う必要があるので簡易的ですが防止できます。手っ取り早く設置したい場合は試してみてはいかがでしょうか。