WordPressサイトのお問い合わせフォームから、短時間に大量のスパムメールが届くケースがあります。
今回は、MW WP Formで作成した「製品問い合わせフォーム」から、数分おきにスパムメールが送信される状態になっていました。
内容を確認すると、お問い合わせ本文が「20」など極端に短いものが多く、名前・住所・電話番号なども明らかに不自然な内容でした。
そこで、まずは応急対応として、MW WP Formのバリデーション機能を使い、お問い合わせ内容欄に「最低文字数」を設定しました。
今回のスパムの状態
今回届いていたスパムは、主に以下のような特徴がありました。
- 短時間に何通も連続で届く
- 製品問い合わせフォームから送信されている
- お問い合わせ内容が極端に短い
- 名前や住所が英数字中心
- メールアドレスがダミーっぽい
- 電話番号や住所が海外風
- 本文に意味のある問い合わせ内容が書かれていない
例えば、お問い合わせ内容が「20」だけのようなものもありました。
このような内容であれば、本文の最低文字数を設定するだけでも、一部の自動投稿を弾ける可能性があります。
なぜ文字数制限にしたのか
スパム対策としては、Google reCAPTCHA、ハニーポット、日本語チェック、IP制限など、いくつか方法があります。
ただし、今回はまず急ぎで件数を減らしたかったため、影響が比較的少なく、管理画面からすぐに設定できる「文字数制限」を一次対応として選びました。
特に、MW WP Formにはバリデーションルールで最小文字数を設定できる項目があります。
これを使えば、プログラムを触らずに、本文が短すぎる投稿を確認画面に進めないようにできます。
MW WP Formで文字数制限を設定する方法
MW WP Formの管理画面から、対象のフォームを開きます。
今回は「お問い合わせ内容」にあたる項目に文字数制限を設定しました。

手順は以下の通りです。
- WordPress管理画面にログイン
- 左メニューから「MW WP Form」を開く
- 対象のフォームを編集
- 「バリデーションルール」を開く
- お問い合わせ内容の項目を確認
- 「バリデーションを適用する項目」に対象項目名を入力
- 「必須項目」にチェック
- 「最小文字数」に数値を入力
- 更新する
- 実際のフォームで送信テストを行う
今回の場合、「message」という項目に対して、最小文字数を「5」に設定しました。
設定例
今回の設定内容は以下です。
- 対象項目:message
- 必須項目:チェックあり
- 最小文字数:5
これにより、お問い合わせ内容が5文字未満の場合は、確認画面に進めず、エラーメッセージが表示されるようになります。
実際にテストしたところ、
- 「テストです」→ 送信できる
- 「20」→ 文字数不足で確認画面に進めない
という動作を確認できました。
注意点
文字数制限は、スパムを完全に止める対策ではありません。
あくまで、極端に短い内容の自動投稿を弾くための応急対応です。
また、最小文字数を厳しくしすぎると、正規のお問い合わせまで弾いてしまう可能性があります。
例えば、「価格確認」「在庫確認」などの短い問い合わせも考えられます。
そのため、最初から10文字以上などにするより、まずは5文字以上程度から様子を見る方が安全です。
送信テストで確認したこと
設定後は、必ず実際のフォームからテスト送信を行います。
今回は以下を確認しました。
- 通常の日本語本文で送信できるか
- 短すぎる本文でエラーになるか
- 確認画面に進めるか
- メールが正常に届くか
- 製品名などの引き渡し項目がメールに反映されるか
特に今回は、製品詳細ページから製品名をフォームに引き渡す構成だったため、文字数制限を追加した後も、製品名が正しくメールに入るかを確認しました。
「ひらがな」「カタカナ」のチェックには注意
MW WP Formのバリデーションルールには、「ひらがな」「カタカナ」「ひらがな または カタカナ」などのチェック項目もあります。
一見、日本語チェックに使えそうですが、お問い合わせ本文に対して使う場合は注意が必要です。
これらは「入力内容がひらがなだけか」「カタカナだけか」を判定するためのもので、通常の文章に使うと、漢字や英数字を含む自然な問い合わせまでエラーになる可能性があります。
今回やりたかったのは、
「本文の中に日本語が含まれていればOK」
という判定でした。
そのため、管理画面上の「ひらがな」「カタカナ」チェックは使わず、まずは最小文字数だけを設定しました。
今回の対応はあくまで一次対応
今回行った文字数制限は、あくまで応急的なスパム対策です。
スパムの内容が変われば、文字数制限をすり抜けてくる可能性もあります。
そのため、必要に応じて、以下のような追加対策も検討します。
- Google reCAPTCHAの導入
- ハニーポット機能の追加
- 日本語が含まれない投稿の制限
- URLを含む投稿の制限
- 短時間の連続送信対策
- セキュリティプラグインやWAFの確認
- フォームプラグイン自体の見直し
まずは影響の少ない対策から行い、それでも止まらなければ段階的に対策を強めていくのが良いと思います。
まとめ
MW WP Formで作成したお問い合わせフォームに大量のスパムが届いたため、今回は一次対応として「お問い合わせ内容の最小文字数」を設定しました。
今回のポイントは以下です。
- スパムの内容を確認する
- どのフォームから送信されているか特定する
- 影響の少ない範囲で応急対応する
- MW WP Formのバリデーションルールで最小文字数を設定する
- 設定後は必ず送信テストを行う
- 文字数制限はあくまで一次対応として考える
スパム対策は、最初から強い制限を入れすぎると、正規のお問い合わせまで減らしてしまう可能性があります。
まずは現状のスパムの特徴を見て、影響の少ない対策から段階的に行うことが大切だと感じました。
