フォームの自動返信を利用したスパム
スパムメールの目的はURLの入ったメールを送付してアクセスを促すことです。
大量に送付先アドレスを持っていたとして、自分のメールアドレスから送付してもすぐに迷惑メールアドレスとして登録されてしまします。
そこで問い合わせフォームの自動返信を利用して、自分を特定させずにURLを送りつける迷惑行為が多くあります。
対策として有効なのがGoogleの提供する「reCAPTCHA」です。
reCAPTCHAは、自動化されたボットやスクリプトによるスパムの送信や不正アクセスを防ぎます。
Contact Form 7ではサイトキー(公開鍵)とシークレットキー(秘密鍵)を設定画面で定義するだけで導入できます。
簡単ですので、導入してみます。
Contact Form 7にreCAPTCHAを導入する
Contact Form 7のメニューの一番下に「インテグレーション」という項目があります。
クリックするといくつかのサービスメニューが紹介され、その中に「reCAPTCHA」があります。
インテグレーションのセットアップをクリックすると「サイトキー」と「シークレットキー」を入力する画面が表示されます。
reCAPTCHAのページにアクセスし、ドメインを登録してキーを取得してください。
すでに登録している場合はドメインの画面の設定リンクをクリックすると「reCAPTCHA のキー」でリンクがあり、クリックするとアコーディオンカーテンが開き下記が表示されます。
キーをにゅうりょくるだけで設定は観葉です。
もう一度「インテグレーションのセットアップ」を見ると
「reCAPTCHA はこのサイト上で有効化されています。」と表示されています。
実際にフォームにアクセスすると右下にreCAPTCHAのマークが表示されています。
一応成功のようです。
全ページで表示されるのを避けたい
完了かと思ってトップページにアクセスすると同じように右下にマークが表示されています。
どうやら全ページに表示されてしまうようです。
スパム対策が目的ならCSSでマークを消してしまっても構いません。
CSSは
.grecaptcha-badge {
visibility: hidden;
}
です。
必要に応じて入れてください。
もしフォームのページだけは復活させて表示させてい場合にはフォームのページのソースを開いて(対象ページでCtrl+u)ボタンを押して検索機能で「<body」を検索し、横にあるclass内の「page-id-XX(XXは数値)」という部分をさがしてください。
たとえば46なら
.page-id-46 .grecaptcha-badge {
visibility: visible;
}
を追加してください。
これで対象フォームのみに絞れます。