Contact Form 7を使ってお問い合わせフォームを設置したはいいものの、お問い合わせフォームからのスパムが散見されるようになったため対策を講じました。備忘録がてらcontact form 7 で設置したお問い合わせフォームでのスパム対策方法をご紹介します。
目次
チェックボックスを用意する
こちらはお問い合わせフォームの設置と同時に実装しましたが結局スパムが来てしまったので、現在のスパムにどの程度有効なのかわかりませんがないよりはあった方がスパムは減るのではないでしょうか。
contact form 7のコンタクトフォーム編集ページでタグを入力することで実装可能です。
[acceptance acceptance-577] 送信内容をご確認の上、チェックを入れてから送信してください。 [/acceptance]
ただしスパムでない本来のユーザーがお問い合わせをしようとした時もひと手間増やしてしまうことになるため、正規のお問い合わせも減ってしまう可能性がある点は理解しておきましょう。
Akismet によるスパムフィルタリング
contact form 7 は WordPressにデフォルトで入っているアンチスパムプラグイン Akismet と連携させてスパム対策をすることができます。この方法を使うには Akismet を有効化してAPIキーをセットしておく必要があります。
方法としてはcontact form 7 のコンタクトフォーム編集ページで入力するタグに追加の記述をするだけです。
- akismet:author
- akismet:author_email
- akismet:author_url
送信者の名前を入力する項目にフィルタリングをかけます。
例:[text* your-name akismet:author]
送信者のメールアドレスを入力する項目にフィルタリングをかけます。
例:[email* your-email akismet:author_email]
送信者のURLを入力する項目にフィルタリングをかけます。
例:[text your-url akismet:author_url]
上記のどれか1つでもセットされていればContact Form 7 は送信者のすべての入力内容を Akismet に送り、Akismetがスパム判定を行ってくれます。ただし正確な判定のためにもこれら全てのオプションをセットすることが推奨されています。
この機能を使えばAkismet がスパムと判定した場合はContact Form 7 はメールの送信をキャンセルし、メッセージ送信に失敗した旨のメッセージが表示されます。
スパムと判定された場合、応答メッセージはオレンジの枠線で囲まれて表示されます。
Akismet によるスパムフィルタリングが機能しているかどうかテストしたい場合は、お問い合わせフォームの送信者名に『viagra-test-123』と入力して送信してみましょう。この送信者名を使えばスパムとして判定されるはずです。
reCAPTCHAを使う
Googleが保有する『reCAPTCHA』というサービスを使ったスパム対策です。最初のチェックボックスの上位版ともいえる機能です。
このサービスを利用するにはまずサイトを登録してキーを取得する必要があります。
管理画面メニューの『お問い合わせ → コンタクトフォーム』を開き、メッセージ内にある『reCAPTCHA』というリンクをクリックします。
reCAPTCHAの管理画面へのアクセスページにジャンプします。『reCAPTCHA admin page』をクリック。
reCAPTCHAを使用するサイトを登録します。
- Label
- Choose the type of reCAPTCHA
登録するサイトの名前(任意の名前)を入力します。
使用するreCAPTCHAのタイプを選択します。上記で紹介したよく見かけるボタンは『reCAPTCHA v2』、『Invisible reCAPTCHA』はJavaScriptですでにサイト上に設置されている任意のボタンと関連付けてチェックを実行できます。
今回は『reCAPTCHA v2』を選んで進めていきます。
- Domains
- Accept the reCAPTCHA Terms of Service.
サイトのドメインを入力します。
利用規約(プライバシーポリシー)への同意ボタンです。
入力と確認が完了したらRegisterボタンを押してサイトを登録します。
サイトの登録が完了したら Contact Form 7 で使う API Key が発行されます。
『Site Key』と『Secret Key』の2つとも必要になりますので、ウィンドウを開いたままにするかメモ帳などにコピペしておきましょう。
WordPressの管理画面から『お問い合わせ → インテグレーション』をクリックし、reCAPTCHA の『キーを設定する』ボタンをクリックします。
先ほど確認したサイトキーとシークレットキーを入力し『保存』をクリックします。
これでreCAPTCHA が使えるようになりました。あとは実際にお問い合わせフォームに『私はロボットではありません』ボタンを設置しましょう。
管理画面から『お問い合わせ → コンタクトフォーム』をクリックしフォーム作成画面を開くと『reCAPTCHA』タグが用意されていますのでこれを配置するだけです。
サイズやテーマを選択できるほか、CSSのIDとクラスを設定することもできます。
『私はロボットではありません』ボタンにチェックを入れずに『送信』ボタンを押すとしっかりとエラーが表示されました。ここまですればそうそうスパムに悩まされることもないでしょう。
コンタクトフォームは顧客との接点となる重要な窓口ですので、変更を加えた際は必ず動作テストを行いましょう。