WordPressサイトにフォームを設置していると、スパム(迷惑メール)が飛んでくることがあります。

例えばこういうのです。

ランダムな英字を各項目に入力して飛ばしてきています。こういったスパムは昼夜問わず何度も送信されてきて厄介ですし、正規ユーザーのお問い合わせが埋もれてしまうので、対策が必要です。

というわけで今回は、スパムを防止するために、最もシンプルで効果的な対策方法をご紹介します。

「ひらがな」を含まなければ送信できないようにする。

対策方法はとてもシンプルです。

Contact Form 7」をお使いの場合、文章を入力する項目(テキストエリア)に「ひらがな」を含まなければ送信できないようにする。という制限を加えるだけです。

これにより、ランダムな英字の羅列で送られてくるスパムはすべて防止できます。

以下の記述をそのままコピペしてご活用いただけます。

//textareaに「ひらがな」を含まなければ送信できないようにする。
function validate_textarea_hiragana($result, $tag) {
    $name = $tag['name'];
    $value = $_POST[$name] ?? '';

    if ($value && !preg_match('/[ぁ-ん]/u', $value)) {
        $result->invalidate($tag, 'ひらがなを1文字以上含めてください。');
    }
    return $result;
}
add_filter('wpcf7_validate_textarea', 'validate_textarea_hiragana', 10, 2);
add_filter('wpcf7_validate_textarea*', 'validate_textarea_hiragana', 10, 2);

テーマファイルのfunction.phpを編集するのではなく、次のようなプラグインを使うのが安心です。

基本的にはプラグインを有効化して、上記記述をコピペすればOKです。

この対策によって、テキストエリアにひらがなが1文字も含まれていない場合は、次のようにエラーメッセージが表示されるようになります。

ひらがなが1文字も含まれていない場合のエラーメッセージの例

これでランダムな英字の羅列だけのスパムは片っ端からブロックできるというわけです。

最後に「ひらがな」を含めた正しい文章であれば、正常に送信されることも確認しておきましょう。

※注意点
この対策の場合、一部の正規ユーザー(海外ユーザー、英語話者など)が影響を受ける可能性があるので、お使いのサイトやフォームによっては別途考慮が必要です。国内の日本語話者を対象にした採用エントリーフォーム等であれば問題ないはずです。

併用したいスパム対策

Contact Form 7」のスパム対策は他にもあります。併用することで効果を高められます。

フォームを設置するなら、reCAPTCHAの設定はセットで考えておいた方がいいでしょう。詳しくは下記記事を参考にご覧ください。

また、次のような対策が可能なContact Form 7専用のスパム対策プラグインもあります。

  • 指定したメールアドレスの受信拒否
  • ドメイン、単語、フレーズ等を設定してブロック
  • なぜ拒否されるのかを示すエラーメッセージを表示

ご興味のある方は、下記記事をチェックしてみてください。

導入してみた結果

弊社の採用エントリーフォームに届いていた英文スパムに対し、筆者が実施した対策をご紹介しました。

「日本語(ひらがな)が含まれていなければ送信できないようにする」というシンプルな対策ですが、数分おきに届いていたスパムがピタッと止まりました。お困りの方は、ぜひ参考にしてみてください。

ただし、英語話者も利用するフォームでは、この方法が適さない場合があります。サイトの用途に合わせて、reCAPTCHAなどの他の対策も検討してください。

採用サイトが作成できる
WordPressテーマ

WordPressを使うとこんな採用サイトも低コストで自作できるようになります。

WordPressテーマ「ISSUE」
WordPressテーマ「ISSUE」
圧倒的なインパクトを残す採用サイト。
WordPressテーマ「MASSIVE」
WordPressテーマ「MASSIVE」
先進的な企業のための採用サイト。