【WordPress】Contact Form 7からのスパムコメントに悩まないための対策

随分と前からスパムコメントに悩まされている。多いときは一日に10件以上届くこともあり、さすがに鬱陶しい。記事にコメントがあったのかな、と思って意気揚々と確認したのにスパムだったりすると、それなりに落ち込むものである。

自分の場合はメールアドレスをどこかに公開しているわけではないので、これらのスパムコメントはすべてブログのお問い合わせページから投稿されていることになる。ブログのコメント欄には対策を施していたのだが(今となってはそのコメント欄すら撤去したが)、お問い合わせからのスパム対策は何もしていなかったので、調べつつ効果の高そうな方法を試してみることにした次第。

定番のAkismetはお問い合わせフォームのスパム対策もできる

自分はお問い合わせフォームに「Contact Form 7」というプラグインを利用している。というかWordpressを使用している人のほとんどがそうだろう。このプラグインと同じかそれ以上に定番のものとして「Akismet」というスパム対策プラグインがあるのだが、どうやら設定さえすれば「Contact Form 7」のスパムも弾いてくれるらしい。長いことお世話になっているがそんな機能があるとはまったく知らなかった。

Akismet によるスパムフィルタリング | Contact Form 7 [日本語]

設定方法

「ダッシュボード>お問い合わせ>コンタクトフォーム」と進み、対策をしたいコンタクトフォームの「編集」をクリック。

「フォーム」タブを開き、以下のオプションをそれぞれの項目に追加する。具体的にどうなるかは画像を参照(自分の場合はURLの入力欄が無いのでakismet:author_urlは省略)。追加ができたら忘れずに保存。

akismet:author

送信者の名前を入力する項目にこのオプションを追加する。
例: [text your-name akismet:author]

akismet:author_email

送信者のメールアドレスを入力する項目にこのオプションを追加する。
例: [email your-email akismet:author_email]

akismet:author_url

送信者の URL を入力する項目にこのオプションを追加する。
例: [text your-url akismet:author_url]

引用元:https://contactform7.com/ja/spam-filtering-with-akismet/

たったこれだけでスパムコメントの対策ができるとのこと。正しく設定されているかのチェックは送信者の名前を「viagra-test-123」とすることで可能。以下のようなメッセージが表示されたら成功だ。

以上の設定をしたことでスパムをほぼ遮断することができた。

しかし一週間ほど経過するとポツポツとまたスパムコメントが来るように。もちろん以前と比較して数は激減しているのだが、どうせなら完全に対策してしまいたい。そこでもうひとつの方法としてGoogleが提供している「reCAPTCHA」というサービスも利用してみることにした。

より徹底するためにreCAPTCHAを設定する

画像を見て「あー、これね」と思う人は多いかもしれない。ざっくり言えば操作しているのが人間か否かを識別する仕組みであり、個人情報の登録ページなどで見かけることが多い。

※画像です

前述の「Contact Form 7」はこの「reCAPTCHA」にも対応しており、Googleアカウントに登録済みであれば比較的簡単に利用できる。

 reCAPTCHA | Contact Form 7 [日本語]

設定方法

reCAPTCHA 管理ページに移動する。「Label」には後から管理しやすいように適当な名前を入れればOK。

少し悩むのが「Choose the type of reCAPTCHA 」の項目。そのままの意味でreCAPTCHAの種類を選ぶわけだが、reCAPTCHA V2が従来どおりの方式に対し、第三世代とも呼ばれるInvisible reCAPTCHAは自動でスパムを判別するためユーザーに煩わしい操作をさせることが無い。今回はとりあえず前者を選択してみることにした。「Domains」には自分が使用したいサイトのドメインを入力。ひととおり入力できたら「Register」をクリックして次のページへ。

表示されたページでとりあえず必要になるのが「Site key」と「Secret key」のふたつ。ここでコピペしたりしなくても後から再確認できるので問題ない。こちらの登録は以上なので今度はWordpress側の設定へ。

「ダッシュボード>お問い合わせ>インテグレーション」にreCAPTCHAの設定項目があるので、「キーを設定する」から先程のふたつのキーをそれぞれ入力。「保存」も忘れずに。

最後にコンタクトフォームでreCAPTCHAを表示させたい箇所に[recaptcha]を挿入する。基本的には送信ボタンの前か後になるだろう。

自分のお問い合わせページを確認し、問題なく表示されているのを確認して完了。

結果

設定してから数日しか経過していないが、現状ではスパムと思しきコメントが来ることはまったく無くなった。設定自体は簡単だったので、それならブログ開設当初にやるべきだったなと軽く反省している。

どちらか片方だと間隙を縫うようなスパムもあるかもしれないので、二重に設定しておくのはやりすぎでもないのかなと思う。Akismetの方は記述を加えるだけだし、reCAPTCHAも外部のサービスなので、Wordpress自体が重くなる心配も少ないのが嬉しい。


SNSでもご購読できます。