愛知県名古屋市のブランディングで育てる
ECコンサルティング・ECサイト構築会社|アイヴィクス株式会社

アイヴィクス株式会社
  • twitter
  • twitter
  • facebook
  • お問い合わせ
  • 0529903467

愛知県名古屋市のブランディングで育てる
ECコンサルティング・ECサイト構築会社|アイヴィクス株式会社

WordPressのContact Form 7でスパム対策!URLを含む問い合わせを拒否する方法とは?

blog

ブログ

投稿日:20250411 更新日:20250411 カテゴリー: ブログ , 業務改善

WordPressのContact Form 7でスパム対策!URLを含む問い合わせを拒否する方法とは?

当社WebサイトはWordPressで運営されていますが、営業目的のメッセージやスパムメールが急増してきました。
特に気になったのが、本文にURLを含んだフィッシング詐欺のような内容の投稿です。
こうしたメールが届くと、本当に必要なメールを見落としてしまうことにつながるのではと考え、問い合わせフォーム(Contact Form7 )をカスタマイズすることにしました。
具体的には、URLを含むお問い合わせを自動で拒否できるようにする対策を施しました。

この記事では、実際にどのような背景でこのカスタマイズに至ったのか、
導入したコードの内容、そして実際に効果があったのか?というリアルな結果まで、詳しくお伝えしていきます。

Contact Form 7でスパム対策を強化した理由

営業メール・スパムの増加と対応への課題

当社のWebサイトでは、毎日、フリーのコーダーさんや営業マンからのメールが届いていました。そのたびに「あぁまたか」と残念な気持ちになってしまいます。なかにはそうではないメールもあるのですが、定型文を使った文章が多く、本当に営業をする気があるのかと思える内容まで様々です。
一見無害に見えるものの、フォーム経由で大量に送られてくると、本来の問い合わせを見逃すリスクが高まります。

URL付きのフィッシングメールが届くリスク

さらに最近では、短縮URLや不審なドメインが含まれるスパムメールも届くようになりました。サーバーで事前に拒否しているメールもあるようですが、100%防ぎきれていないものもありました。
これらはフィッシング詐欺やマルウェアへの誘導を目的としている可能性もあり、放置すればサーバー全体が感染の危険に晒されたり、お客様の信頼を損なう危険性があります。

セキュリティ対策は「フォーム対策」から見直す時代

reCAPTCHAやAkismetといった基本的なスパム対策は随分前からしてきました。しかし、URLを明示的にブロックしたいというニーズはこれらのツールでは十分に対応できません。
そのため、「フォーム送信時にURLを検出して拒否する」カスタマイズを導入するに至りました。

Google検索で実装されたハッシュタグ検索の概要と実態調査

WordPress × Contact Form 7 のスパム対策方法

WordPress × Contact Form 7 のスパム対策方法

JavaScriptでURL記載をリアルタイムチェック

まず、フォームが送信される前に、JavaScriptでtextarea内にURLが含まれていないかを検出します。
これにより、ユーザーが送信ボタンを押す前にブロックできるため、UXを損なわずにセキュリティを強化できます。

<script>
document.addEventListener('DOMContentLoaded', function () {
  const form = document.querySelector('.wpcf7 form');
  if (!form) return;

  form.addEventListener('submit', function (event) {
    const textarea = form.querySelector('textarea[name="your-message"]');
    const urlPattern = /(https?:\/\/[^\s]+)/gi;

    if (textarea && urlPattern.test(textarea.value)) {
      alert("URLの記載は禁止されています。");
      event.preventDefault();
    }
  });
});
</script>

※ your-message の部分は、実際のフォームのname属性に合わせて変更してください。弊社では、footer-lp.phpの</body>タグ直前に挿入しました。


PHPでサーバー側でもブロック(バリデーション)

JavaScriptは便利ですが、無効化されている環境やBotには効きません
そのため、Contact Form 7のバリデーションフィルターを使ってサーバー側でもURLチェックを行います。

add_filter('wpcf7_validate_textarea*', 'deny_url_in_textarea', 20, 2);
add_filter('wpcf7_validate_textarea', 'deny_url_in_textarea', 20, 2);

function deny_url_in_textarea($result, $tag) {
  $name = $tag->name;

  if ($name === 'your-message') {
    $value = isset($_POST[$name]) ? $_POST[$name] : '';
    if (preg_match('/https?:\/\/[^\s]+/', $value)) {
      $result->invalidate($tag, 'URLの記載はご遠慮ください。');
    }
  }
  return $result;
}

この処理を functions.php に追記することで、URLを含む投稿はサーバー側でも自動的に拒否されます。弊社では、?>タグの直前に挿入してみました。

なぜフロントとサーバー両方で対策すべきか?

  • JavaScript:ユーザーに即時通知でき、無駄な送信を防げる
  • PHP(サーバー):JSを無効化しているBotや悪質な投稿を確実にブロックできる

このように、二重のセキュリティを施すことでより堅牢なフォーム環境を実現できます。

aiship Google Tag ManagerでGA4のeコマース設定を完了する【GTM】

導入後の効果と実感したメリット

営業メールが激減した

設置してから2週間ほど経過しましたが、URLを含む営業メールは完全にブロックされるようになりました
本来の問い合わせが埋もれることがなくなり、ストレスも激減しました。

URL付きスパムも通らなくなった

特にありがたかったのは、フィッシング詐欺系のメッセージがピタリと止まったことです。
ドメイン信頼性を保つ上でも非常に有効です。

お客様からの問い合わせの質も向上

スパムが減ることで、本当に必要としているユーザーとの接点が明確になり、商談率も改善しました。
無駄なフィルター作業が減ったことで、心理的・時間的コストも軽減できました。

Contact Form 7でできるスパム対策まとめ

reCAPTCHAやAkismetとの併用もおすすめ

今回のようなJSやPHPのカスタマイズでフィルタリングすることは非常に強力ですが、reCAPTCHAやAkismetといったツールとの併用で、幅広いスパムへの対応が可能になります。さらにサーバーのスパム対策と組み合わせると最強です。

フォームのセキュリティは定期的な見直しを

スパム手法は日々進化しています。
Contact Form 7のフォームは定期的に見直し・強化を行うことで、継続的な安心運用が可能になります。

    お問い合わせ

    送信前にチェックボックスにチェックを入れてください。

    ブランディングで育てるECコンサルティング会社|アイヴィクス株式会社

    WordPressのContact Form 7でスパム対策!URLを含む問い合わせを拒否する方法とは?

    この記事が気に入ったらいいね!しよう

    ECコンサルティングの最新記事をお届けします