Contact Form 7 は、お問い合わせフォームを簡単に設置できる人気のあるWordPressプラグインですが、お問い合わせフォームを設置するとスパムの書き込みが頻繁にされるようになります。
スパムは煩わしいことはもちろん、放置すると様々なリスクや被害が発生する可能性があります。これについては後述します。
Contact Form 7 のスパム対策として次の2つが有効です。
- Google reCAPTCHAを利用する
- Akismet Spam Protection プラグインを利用する
「Google reCAPTCHA」はGoogleが提供するCAPTCHA基盤であり、次の2つのバージョンがあります。
- reCAPTCHA Enterprise
- reCAPTCHA
どちらも1か月あたり100万回の呼び出しまでは無料で利用できます。これらの機能比較は「reCAPTCHA のバージョン間の機能の比較」を参照ください。
「Akismet Spam Protection」はWordPressにデフォルトで含まれているプラグインです。WordPressのコメント欄へのスパム対策にも利用できますが、Contact Form 7 のスパム対策にも使うことができます。個人のブログの場合は無料で利用できますが、企業や商用サイトでの利用は有料になります。
おすすめは「Google reCAPTCHA」ですので、ここではその導入方法を説明します。万が一 reCAPTCHA だけでは不十分な場合は Akismet の導入も検討するといいでしょう。
Google reCAPTCHA とは
皆さんもWebサイトで自動車の写真を選ばされたり、歪んだ文字を読んで入力させられたりした経験があるでしょう。これはCAPTCHAと呼ばれます。
CAPTCHAとは「Completely Automated Public Turing test to tell Computers and Humans Apart」の頭文字をとった略語で、ユーザーがボットか人間かを判定するテストのことを言います。
reCAPTCHA は Google が提供する CAPTCHA 基盤です。現在バージョン3までリリースされています。
reCAPTCHA v3 になってユーザーが何か入力したりする必要がなくなりました。reCAPTCHA v3 では、サイトに対するアクティビティがどの程度不審か示すスコアを返します。このスコアに基づいてボットか人間かを判定します。
ユーザーにストレスを与えることなく判定ができるのは非常に素晴らしいことですね。
Contact Form 7 に reCAPTCHA を導入する
それではreCAPTCHAを導入する手順をステップごとにみていきましょう。
すると次のページへ移動しますので、必要な情報を入力します。
- ラベル
-
サイトを識別するためのラベル。わかりやす任意のラベルを設定する
- reCAPTCHA タイプ
-
reCAPTCHA v3 をチェックする
- ドメイン
-
サイトのドメインを入力する。入力したドメインとそのサブドメインが対象となる
- reCAPTCHA 利用条件に同意する
-
チェックする
- アラートをオーナーに送信する
-
設定エラーや不審なトラフィック増加など、サイトで問題があったときにアラートを受け取る。チェックするのがいいでしょう
入力が完了したら「送信」ボタンをクリックします。
ドメインが登録されると次のように「サイトキー」と「シークレットキー」が払い出されます。
「サイトキー」と「シークレットキー」は後で必要ですのでメモしておきます。
WordPressの管理画面に移動して左側メニューから「お問い合わせ > インテグレーション」をクリックします。
表示されたページに「reCAPTCHA」というタイトルのボックスがありますので、「インテグレーションのセットアップ」ボタンをクリックします。
するとサイトキーとシークレットキーの入力項目が表示されますので、先ほどメモした2つのキーを入力して「変更を保存」ボタンをクリックします。
以上で完了です。これでフォームの送信が人間かボットなのか reCAPTCHA で判定できるようになります。
登録したドメインのページの右下に reCAPTCHA のアイコンが表示されていれば reCAPTCHA が動作しています。
特定のページのみ reCAPTCHA を利用する
reCAPTCHA を導入するとドメインの全てのページでreCAPTCHAが機能します。これはページの右下にreCAPTCHAのアイコンが表示されていることからもわかります。
ページの右下に表示されるアイコンも煩わしいですが、余分なコードを読み込むため表示速度にも影響を与えかねません。そのため必要なページだけで reCAPTCHA を利用するようにしてみましょう。
ここでは、お問合せページのみ reCAPTCHA を利用するようにします。お問い合わせページのスラッグが「contact」の場合、テーマの中の functions.php に下記のように記載します。
// お問い合わせページ(contact)以外は reCAPTCHA を読み込まない
add_action( 'wp_enqueue_scripts', function() {
if ( ! is_page('contact') ) {
wp_deregister_script('google-recaptcha');
}
}, 100);
これは「contact」ページ以外の「google-recaptcha」スクリプトを解除するコードです。
お問合せページ以外は reCAPTCHA のアイコンが表示されなくなっていれば正しく設定されています。
スパムの危険性
最後にスパムを放置することの危険性についておさらいして終わりにします。
スパムを放置すると様々なリスクや被害が発生します。幾つか例を挙げて見ましょう。
- スパムによって本当の問い合わせが埋もれてしまう
- スパムを仕分けるための余分な工数が発生する
- 問い合わせを見落とすことによる機会損失
- ウィルスに感染する
- 詐欺被害に遭う
- 第三者へ自動返信してしまい信用を失墜する
これらを詳しく見ていきましょう。
まず、スパムによって本当の問い合わせが埋もれてしいます。問い合わせを見落とすことにより信用を失うことはもちろん、きちんと対応していれば利益につながっていたかもしれないのに、その機会を失うことにもなりかねません(機会損失)。
もちろん本当のメールとスパムを仕分ける作業も発生しますので業務効率も悪くなります。
また、多くのスパムには外部へのリンクが記載されています。これをうっかりクリックすることによって悪意のあるサイトへ誘導される可能性があります。例えばフィッシング詐欺やワンクリック詐欺のサイト、開くだけでウィルスに感染してしまうサイトなどが悪意のあるサイトの一例です。もしウィルスに感染してしっ待って情報漏洩が発生発生すれば、企業であれば被害は甚大です。
フォームに入力されたメールアドレスにメールを自動返信している場合は悪用される可能性もあります。偽のメールアドレスを入力され、そのメールアドレスにメールを送らされるかもしれません。また自動返信メールからメールアドレスを収集されるかもしれません。
まとめ
私の場合はreCAPTCHAを導入することでお問合せページにスパムの書き込みがなくなりました。皆さんも是非導入してみてください。
スパムを放置してもいいことはありませんので、きちんと対策を実施しましょう。