「Contact Form 7」を使っていると、スパムが届くことがあると思います。

ひらがなが含まれていない場合は送信拒否したり、画像添付を必須にすることで、ある程度対策できるかもしれません。

ただ最近は、巧妙にひらがなを混ぜて送信されるスパムも増えています。弊社サイトにも実際に海外から自動送信されるケースがありました。

フォーム側で画像添付を必須にしていても、それを突破して送信してきたわけです。

そこで今回は、弊社が実際に行った対策をご紹介します。対策後、スパムはピタッと止まっています。

WordPressテーマ「GLUE」
WordPressテーマ「GLUE」
無料で高機能なWordPressテーマが手に入る。

Contact Form 7の必須オプションはスパム対策にはならない

そもそもなんですが、プラグイン側で設定する「必須オプション」はスパム対策にはならないんですよね。

理由はシンプルで、あくまでブラウザ上で操作するユーザーを対象にしたオプションだからです。

スパムボットはフォーム画面を経由せず、サーバーから直接送信できるので、画像添付を必須オプションにしたところでスパム対策にならないというわけです。

対策:サーバーから直接送信でも画像必須を強制する

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

ブラウザ上から送信されるフォームだけでなく、サーバーから直接送信されるスパムにも、画像の添付を強制すれば効果があります。

「サーバーから直接送信されるスパム」とは、たとえば以下の2種類のケースを指します。

REST API経由の送信 フォーム画面を経由せず、CF7内部APIへ直接データを送る方式
直接POST送信 HTMLやJavaScriptを無視して、フォームURLへ直接POSTする方式

具体的には、CF7の「wpcf7_before_send_mail」フックを使い、メール送信直前に添付ファイルの有無をチェックする対策です。

添付が無ければメール送信を停止し、REST API経由や直接POST送信でもエラーを返すことができます。下記記述を参考にしてみてください。

テーマファイルを直接編集せず、プラグイン「Code Snippets」を使うのがおすすめです。
※「file-68」はCF7フォーム編集画面内にある「name属性」の値に差し替えてください。
add_action('wpcf7_before_send_mail', function($contact_form){
    $submission = WPCF7_Submission::get_instance();
    if($submission){
        $files = $submission->uploaded_files();
        if(empty($files['file-68'])){
            // メール送信を止める
            $contact_form->skip_mail = true;
            // エラーを返す
            $submission->add_error('file-68', 'ファイルの添付は必須です。');
        }
    }
});

この処理を追加するだけで、ブラウザ上からの送信・REST API経由・直接POST送信など、あらゆる経路からの「画像添付が無い送信」をブロックできます。

追加で行える対策

弊社に届いたスパムの中には、ランダムな英文やひらがな入りのもの、営業メールもありました。

すべて自動送信されており、画像添付が無い状態でした。先述の対策でブロック可能ですが、念のため送信元ドメインもブロックしています。

下記記事でご紹介しているプラグインを使えば、ドメイン単位でかんたんにブロックできます。ブラックリストを設定するような使い方です。

また、スパム対策でメジャーなGoogleの「reCAPTCHA」が有料化されるので、代わりにTurnstileに変更するのもおすすめです。

まとめ

画像添付必須でも送られてくるスパムをブロックする方法を解説しました。Contact Form 7の必須オプションは、あくまで画面上だけの対策なので、スパム対策としては機能しません。

当記事でご紹介したように、サーバーから直接送信される場合も、画像添付を必須にすれば確実にブロックできます。

弊社でも対策後はスパムがピタッと止まりました。実際に効果があったので、ぜひ参考にしてください。

何かしらの対策後には、必ず送受信テストを行っておきましょう。

世界最高品質のデザインの
WordPressテーマ集
WordPressテーマ「ISSUE」
WordPressテーマ「ISSUE」
人材不足を解決する求人採用サイトを。
WordPressテーマ「SEEED」
WordPressテーマ「SEEED」
Webサービスを販売するLP型テーマ。
WordPressテーマ「GENESIS」
WordPressテーマ「GENESIS」
スタイリッシュな企業サイトの決定版。
WordPressテーマ「SOLARIS」
WordPressテーマ「SOLARIS」
一流の企業のための一流の企業サイトを。