「Contact Form 7」を使っていると、スパムが届くことがあると思います。
ひらがなが含まれていない場合は送信拒否したり、画像添付を必須にすることで、ある程度対策できるかもしれません。
ただ最近は、巧妙にひらがなを混ぜて送信されるスパムも増えています。弊社サイトにも実際に海外から自動送信されるケースがありました。
フォーム側で画像添付を必須にしていても、それを突破して送信してきたわけです。
そこで今回は、弊社が実際に行った対策をご紹介します。対策後、スパムはピタッと止まっています。
Contact Form 7の必須オプションはスパム対策にはならない
そもそもなんですが、プラグイン側で設定する「必須オプション」はスパム対策にはならないんですよね。
理由はシンプルで、あくまでブラウザ上で操作するユーザーを対象にしたオプションだからです。
スパムボットはフォーム画面を経由せず、サーバーから直接送信できるので、画像添付を必須オプションにしたところでスパム対策にならないというわけです。
対策:サーバーから直接送信でも画像必須を強制する
対策方法もシンプルです。
ブラウザ上から送信されるフォームだけでなく、サーバーから直接送信されるスパムにも、画像の添付を強制すれば効果があります。
「サーバーから直接送信されるスパム」とは、たとえば以下の2種類のケースを指します。
| REST API経由の送信 | フォーム画面を経由せず、CF7内部APIへ直接データを送る方式 |
| 直接POST送信 | HTMLやJavaScriptを無視して、フォームURLへ直接POSTする方式 |
具体的には、CF7の「wpcf7_before_send_mail」フックを使い、メール送信直前に添付ファイルの有無をチェックする対策です。
添付が無ければメール送信を停止し、REST API経由や直接POST送信でもエラーを返すことができます。下記記述を参考にしてみてください。
※「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送信など、あらゆる経路からの「画像添付が無い送信」をブロックできます。
追加で行える対策
弊社に届いたスパムの中には、ランダムな英文やひらがな入りのもの、営業メールもありました。
すべて自動送信されており、画像添付が無い状態でした。先述の対策でブロック可能ですが、念のため送信元ドメインもブロックしています。
下記記事でご紹介しているプラグインを使えば、ドメイン単位でかんたんにブロックできます。ブラックリストを設定するような使い方です。
「お問い合わせフォームで、特定のメールアドレスからの受信を拒否できるようにしたい。」 スパムや迷惑メールなど。セキュリティ上の観点からそのようなケースがあると思います。当記事では、プラグイン「Contact Form 7」で作成したお問い合わせフォームで、特定のメールアドレスからの受信を拒否す...
また、スパム対策でメジャーなGoogleの「reCAPTCHA」が有料化されるので、代わりにTurnstileに変更するのもおすすめです。
WordPressプラグイン「Contact Form 7」をお使いの場合、こんなメッセージが表示されていませんか? スパム対策として、reCAPTCHAを設定している方も多いと思いますが、無料枠を超過した場合、課金される可能性があるというものです。 Contact Form 7...
まとめ
画像添付必須でも送られてくるスパムをブロックする方法を解説しました。Contact Form 7の必須オプションは、あくまで画面上だけの対策なので、スパム対策としては機能しません。
当記事でご紹介したように、サーバーから直接送信される場合も、画像添付を必須にすれば確実にブロックできます。
弊社でも対策後はスパムがピタッと止まりました。実際に効果があったので、ぜひ参考にしてください。
何かしらの対策後には、必ず送受信テストを行っておきましょう。
「Contact Form 7で作成したフォームが送信できない。」 「メッセージの送信に失敗してしまう。」 「いつまで経ってもローディングが止まらない。」 せっかくフォームを設置したのに、肝心のお問い合わせが送信できなければ意味がありません。そこで今回は、サイト管理者向けに、Contact...
WordPressテーマ集











コメント