WordPress

WordPressのお問合せフォームのスパム一斉送信対策にreCAPTCHAを実装する方法

投稿日:

昔からウェブサイト運営者にとってスパムとの戦いは付き物でありました。コメントスパム、メールスパムなど色々ありましたが、いたちごっこでした。

近頃増えてきたのは WordPress のお問合せフォームから直接送られてくるスパムです。お問合せは本来ありがたいものですが、サイトの内容に一切関係ないお問合せや営業メールが急に増えてきました。

従来なら無視するだけでしたが、私が運営する複数サイトに同じ内容のお問合せが来るので何かおかしいなと思ったわけです。

調べてみると WordPress のお問合せフォームに一斉送信するサービスが誕生しているようです。はがきのダイレクトメールのインターネット版のようなものです。全国100万件を人の手でやっているわけがありません。bot で送信しているのでしょう。

サイトの内容に一切関係ないお問合せが急増した理由に合点がいきました。

対策方法は?

WordPress にも reCAPTCHA を実装できる事がわかりました。reCAPTCHA を実装する事で人の手で送信されたお問合せは通常通り送信し、bot によるお問合せをブロックしてくれます。

reCAPTCHAとは?

ウェブサイトやウェブサービスへの不正アクセスや悪意のあるプログラムの侵入から防御するシステムです。

一昔前には人間にも読みづらい文字を入力させるフォームを見たことがあるのではないでしょうか。その後は「私はロボットではありません」というチェックボックスに変わりました。

reCAPTCHA も進化しており、現在はバージョン3になっています。バージョン3では「私はロボットではありません」のチェックボックスをオンにする必要はありません。何もする必要がないのです。

WordPressにreCAPTCHAを実装

WordPress のお問合せフォームが設置できるプラグインの「Contact Form 7」は定番プラグインなので導入している人も多いと思います。

Contact Form 7 Ver 5.11 以降、reCAPTCHA バージョン3に対応しました。Google アカウントさえ持っていれば簡単に導入する事ができます。

WordPress 管理画面でお問い合わせメニューからインテグレーションを選択します。

ここから reCAPTCHA を設定できます。まずは赤線部のリンクから Google の reCAPTCHA ページへ移動しましょう。

reCAPTCHA はスパムやその他の自動化された嫌がらせからあなたを守ります。Contact Form 7 の reCAPTCHA インテグレーションモジュールを使えば、スパムボットによる不正なフォーム送信を遮断できます。

Admin Console ボタンを押します。Google アカウントにログインしていない場合は、ログインしましょう。すると reCAPTCHA の管理画面へ移動できます。

新しいサイトを登録する画面になります。

ラベルにはわかりやすい名前を付けましょう。

reCAPTCHA タイプを選びます。

  • reCAPTCHA v3:お問合せする人は何もしなくて良い
  • reCAPTCHA v2:「私はロボットではありません」のチェックボックスを表示

ドメインの部分には reCAPTCHA を導入する URL を「https://」なしで入力します。これをしないとエラーで使えない状態になります。

最後に reCAPTCHA 利用条件を確認し、同意するチェックボックスをオンにします。

保存ボタンを押したら完了です。

サイトキーとシークレットキーが発行されます。このキーは WordPress 側で利用します。

WordPress 管理画面に戻ります。次にインテグレーションのセットアップボタンを押します。

ここに先程のサイトキーとシークレットキーをコピーペーストします。そして変更を保存ボタンを押します。

お問合せページに行ってみると、画面右下に reCAPTCHA のバッジが表示されるようになります。正常に導入が完了した事になります。

しかし、ここで問題がありました。reCAPTCHA のバッジが全ページに表示されているのです。

reCAPTCHAのバッジをお問合せページのみに表示

画面右下に reCAPTCHA のバッジが表示されますが、これを消すと利用規約違反になります。

でも全ページ表示するのではなく、お問合せページのみ表示できたら OK です。

テーマのための関数 function.php に以下のコードを追記して保存します。

add_action( 'wp_enqueue_scripts', function() {
	if(is_page('contact')) return;
    wp_deregister_script( 'google-recaptcha' );
});

お問合せページのパーマリンクが contact ではない場合は、contact の部分をあなたのサイトのものに変更してください。

これで reCAPTCHA を使うお問合せページのみに reCAPTCHA のバッジが表示されます。

個人サイトで reCAPTCHA を導入している所はあまり見かけませんでしたが、今後は増えてくるのではないでしょうか。

-WordPress

Copyright© ウェブミスト(Webmist) , 2020 AllRights Reserved Powered by STINGER.