WordPressでブログを開設したら必ず設置しておいたほうがいいのは「お問い合わせフォーム」です。
ブログユーザーさんとのやり取りにも当然必要ですし、近年ではGoogleアドセンス審査において、お問い合わせフォームの設置は重視されているようです。
しかし、最近はこのお問い合わせフォームを狙ったスパム攻撃が急増しているようですので、設置とともにその対策も大切です。
そこで今回はお問い合わせフォームの設置時のスパム対策について解説していきたいと思います。
お問い合わせフォームのスパム対策 その1
お問い合わせフォームを設置する際には「Contact Form 7」というプラグインを利用する方法が一番簡単です。
設置方法については以下の記事をご覧ください。
WordPressでブログを運営するのであれば「お問い合わせフォーム」は必ず設置すべきです。 万が一あなたの運営するサイトに法規的な問題が生じた場合(著作権侵害、名誉毀損等)、連絡を取る手段がなければ相手からいきなり訴えられる[…]
お問い合わせフォームのスパム対策として最初に施しておきたいのはパーマリンクの設定です。
Contact Form 7ではフォーム設定後、ショートコードを固定ページにコピペ、さらにパーマリンクを設定して公開します。
このパーマリンクの設定時に大抵の方は「contact」とスラッグ部分に入力すると思うのですがこの文字列をローマ字表記に変更することがスパム対策につながります。
例えば、「otoiawase」、「situmon」等ですね。
本サイトのお問い合わせフォームのパーマリンクは「https://t-sawachi.com/hatena(はてな)」としています。
これがなぜスパム対策になるのかというとお問い合わせフォームであることが推測されにくくなるためです。
スパムメールを受け取った経験がある方であれば分かると思うのですが、そのほとんどは英文のメールですよね?
お問い合わせフォームを悪用する英語圏の人はお問い合わせフォームに設定されていそうなパーマリンクをBOTで検索してスパム攻撃をしているようなのです。
そのため、すぐにBOTに引っ掛かりそうな「contact」、「mail」、「 message」といった英単語を避けるだけでもスパム対策となるのです。
とはいえ日本語をターゲットとするBOTもないとは言い切れませんのであまりに簡単なローマ字は検索されることもあるかもしれませんので万全を期すのであれば完全にランダムな文字列を設定するのがベストと言えます。
お問い合わせフォームのスパム対策 その2
続いてのスパム対策は「reCAPTCHA」を使う方法です。
reCAPTCHAとはGoogleが提供する無料のスパム対策ツールで、これを導入すると人間かBOTかを自動で見分けてくれるのです。
ウェブサイトで何か登録する際などにこんなのや・・・
あるいはこんなのや・・・
はたまたこんなのを・・・
一度は見たことありますよね?
これ全てreCAPTCHAなのです。
文字、あるいは画像を識別することで人間かBOTかを判別するためにこれらの「チャレンジ」をユーザーに要求するわけですが、このワンクッションを嫌って入力を拒否するユーザーも中にはいるようです。
しかし、最新のreCAPTCHA Ver3ではこれらのチャレンジを経ずとも人間かBOTかを判別できるようになっていますのでユーザビリティにも優れたスパム対策ツールと言えます。
それではさっそくreCAPTCHAを導入していきましょう。
まずはGoogleアカウントにログインした状態でreCAPTCHAの管理画面に移動します。
以下、画面に沿って必要事項を入力していきます。
ラベル
管理画面に表示される名称です。
ブログ名を入力すると良いでしょう。
reCAPTCHAタイプ
Ver.2かVer.3かを選択出来ます。
最新のV3を選択しましょう。
ドメイン
reCAPTCHAを導入するブログのURLを入力します。
オーナー
メールアドレスが入力済みとなっています。
reCAPTCHA利用条件に同意する
利用規約を確認してチェックボックスにチェックを入れます。
アラートをオーナーに送信する
設定エラーや不審なトラフィックの増加など、サイトで問題が検出された場合にメールでお知らせしてくれる機能です。
チェックをいれておきましょう。
ここまで入力したら「送信」をクリックします。
するとサイトキーとシークレットキーが表示されます。
※ reCAPTCHAキーは後ほど使用しますのでブラウザは開いたままにしておいてください。
reCAPTCHAの管理画面上での操作は以上となります。
続いてWordPressでの設定となります。
ダッシュボードの「お問い合わせ」→「インテグレーション」と進みます。
「インテグレーションのセットアップ」をクリックします。
ここでさきほどreCAPTCHAの管理画面で取得したサイトキーとシークレットキーを入力して「変更を保存」をクリックします。
reCAPTCHAの設定は以上となります。
滞りなく設定を終えていればサイトの右下にreCAPTCHAのタグが表示されているはずです。
お問い合わせフォームのスパム対策 その3
上述したようにお問い合わせフォームからのスパムメールは大半が英文です。
ということはお問い合わせフォームで受け付けるメールを日本語のみに設定すればたいていのスパムメールは防げるようになるはずです。
この方法については以下の記事を参考にさせていただきました。
WordPress ブログを運営していると必ずといってよいほど発生する「お問い合わせからの英語等のスパムメール」。今回は…
以下のコードを使用しているテーマの fanction.phpにコピペします。
//メールフォームの textarea にひらがなが無ければ送信できない(contact form7)
add_filter('wpcf7_validate_textarea', 'wpcf7_validation_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'wpcf7_validation_textarea_hiragana', 10, 2);
function wpcf7_validation_textarea_hiragana($result, $tag)
{
$name = $tag['name'];
$value = (isset($_POST[$name])) ? (string) $_POST[$name] : '';
if ($value !== '' && !preg_match('/[ぁ-ん]/u', $value)) {
$result['valid'] = false;
$result['reason'] = array($name => 'エラー / この内容は送信できません。');
}
return $result;
}
試しに本文をアルファベットの羅列のみにして送信ボタンを押してみると・・・
このようにエラーメッセージが表示され、送信できません。
※ 編集後の動作については保証は出来ませんので実際の作業については自己責任のうえ行うようにお願いいたします。
あとがき
お問い合わせフォームを悪用したスパム行為で被害を被るのは自分ばかりではありません。
最近ではお問い合わせフォームの自動返信メール機能を悪用して第3者に対して大量のスパムメールが送信されるといった手口も頻発しています。
スパム行為を放っておくとマルウェア感染の恐れはもちろん、なによりサイトの信頼性が損なわれてしまいますので対策は必ず講じるようにしておきたいものです。