速度改善・安全対策

WordPressのスパム対策|コメント・お問い合わせフォームを安全に守る方法

WordPressのコメント欄やお問い合わせフォームへ、英語の宣伝、意味のない文章、大量のURL、営業メッセージが届き続けていませんか。迷惑投稿を減らしたくても、CAPTCHAを入れれば十分なのか、海外アクセスを止めてよいのか、正規の問い合わせまで消えないかが分かりにくいものです。

安全なスパム対策は、届いている入口を特定し、負担の小さい対策から重ね、正規送信が通るかを確認する順で進めます。コメント、問い合わせフォーム、会員登録、ログインは処理する場所が違うため、一つの設定だけですべてを止めようとしないことが重要です。

最初から国単位の一括遮断や厳しすぎる回数制限を設定しないでください。正規の読者、海外出張中の担当者、VPN利用者、企業や携帯回線の共有IPまで巻き込むおそれがあります。

先に結論|入口を分けて4段階で対策する

  1. コメント、問い合わせ、会員登録、ログインのどこへ届いたかを確認する
  2. 時刻、対象URL、件数、内容の特徴を保存する
  3. コメントは承認・リンク数・モデレーションなどWordPress標準設定から始める
  4. フォームは入力検証、ハニーポット、チャレンジ、送信頻度制限を段階的に重ねる
  5. 大量送信が続く場合だけ、対象URLを限定してWAFやレート制限を使う
  6. PC・スマートフォン・別回線で正規送信をテストする
  7. 隔離件数と誤検知を定期的に見直す

スパムを完全にゼロにすることだけを目標にすると、問い合わせフォームが使いにくくなり、正規の相談を失うことがあります。目標は、迷惑投稿の処理時間とリスクを減らしながら、必要な利用者が送信できる状態を保つことです。

最初にスパムの入口を特定する

コメントと問い合わせと会員登録の三つの入口を異なる投入口で表した画像
入口見える場所主な対策場所
コメント・ピンバックWordPressのコメント一覧、通知メール設定→ディスカッション、投稿ごとのコメント設定
お問い合わせフォーム通知メール、フォームの保存履歴フォーム設定、送信処理、チャレンジ、WAF
会員登録ユーザー一覧、登録通知登録設定、メール確認、フォーム保護
ログインログイン履歴、WAF・サーバーログ認証、二要素認証、回数制限、WAF
通常メールメールボックスへ直接届くメールサービス側の迷惑メール対策

お問い合わせフォーム経由に見えても、メールヘッダーやフォーム保存履歴に記録がなければ、公開されているメールアドレスへ直接送られた可能性があります。反対に、フォーム履歴にはあるのに通知メールだけ届かない場合は、スパム対策ではなくメール到達の問題かもしれません。WordPressからメールが届かないときの確認順で送信と受信を分けてください。

対策前にサンプルと正常状態を保存する

  • 最初に増えた日時と、特に多い時間帯
  • 対象ページとフォーム名
  • 1時間・1日あたりのおおよその件数
  • 同じURL、文面、送信元名、言語などの共通点
  • WordPress、フォーム、CDN、WAFに残る同時刻の記録
  • 正規の問い合わせが通常どの程度届くか
  • 変更前にPC・スマートフォンで正常送信できるか

送信内容やIPアドレス、メールアドレスは個人情報になり得ます。調査に必要な範囲だけ保存し、閲覧者と保存期間を限定します。公開掲示板へログ全文やフォーム内容を貼らず、相談時はドメイン、メール、IP、氏名などを伏せてください。

迷惑メッセージ内のURLを確認目的で開かないことも重要です。フィッシング、マルウェア配布、アクセス確認用リンクの可能性があります。内容の特徴は文字列として記録し、危険なリンクを通常のブラウザーで訪問しないでください。

コメントスパムはWordPress標準設定から減らす

WordPressにはコメントを公開前に保留し、リンク数や語句で振り分け、不要な場所では閉じる機能があります。いきなり追加プラグインを増やす前に、「設定→ディスカッション」を確認します。

設定向いている状況注意点
手動承認コメント数が少なく、公開前に確認できる承認待ちを放置しない
以前承認された投稿者継続読者の負担を減らしたいメールアドレスだけで本人確認とは限らない
リンク数で保留URLを多く含む迷惑投稿が多い正規コメントも保留される
モデレーション語句繰り返す特徴が明確部分一致で無関係な語にも当たる
古い記事を自動で閉じる過去記事への大量投稿が多い古い記事で議論が必要なら不向き
コメントを無効化コメント機能を使わない既存記事は個別設定が残る場合がある

WordPress公式のコメントスパムの解説は、手動承認、投稿者情報、リンク数、モデレーション語句、不要箇所のコメント停止を基本対策として案内しています。コメントを使わないサイトなら、新規記事の既定値だけでなく既存記事の設定も確認します。

確認なしで、短い語句や一般的な単語をブロックリストへ大量登録しないでください。WordPressのディスカッション設定は語句が部分一致する場合があり、無関係な正規コメントまで巻き込みます。まずはモデレーションで保留へ送り、数日から数週間の結果を見て調整します。

フォームは4層を順番に重ねる

入力検証とハニーポットとチャレンジと頻度制限を連動設備で表した画像
層役割注意点
入力検証必須項目、形式、長さ、許可値をサーバー側で確認ブラウザー表示だけの検証に頼らない
ハニーポット人には見せない項目へ入力する単純なボットを検出単独では高度な送信を止めきれない
チャレンジ自動送信らしさを判定し、必要時だけ追加確認サーバー側でトークン検証が必要
頻度制限同じ送信元から短時間に繰り返す投稿を抑える共有IPと正規の連続送信を考慮

1. 入力検証をサーバー側で行う

必須項目、メール形式、文字数、選択肢、ファイル形式を検証します。ブラウザーのJavaScriptだけで検証しても、送信処理へ直接リクエストするボットには回避されます。利用中フォームプラグインの現行公式手順で、サーバー側検証と不正送信時の扱いを確認してください。

2. ハニーポットを追加する

ハニーポットは、人には通常見えない入力欄を用意し、すべての欄へ機械的に入力するボットを見分ける方法です。利用者に画像問題を解かせずに導入できますが、フォーム構造を理解するボットや、人が送る営業メッセージには効かない場合があります。

3. 必要に応じてTurnstileなどのチャレンジを使う

Cloudflare Turnstileは、サイトをCloudflare経由で配信していなくてもフォームへ組み込めます。CloudflareのTurnstile公式資料によると、フォーム入力内容自体はアクセス・保存・送信せず、WCAG 2.2 AAに準拠すると案内されています。

ただし、画面へ部品を表示するだけでは保護になりません。ブラウザー側で発行されたトークンを、フォーム受信時にサーバー側から検証する必要があります。利用中フォームが公式に対応している方法を使い、秘密鍵を公開ページ、本文、スクリーンショットへ載せないでください。

4. 送信URLだけに頻度制限をかける

同じ送信元から短時間に大量投稿される場合は、フォームの送信先URLやHTTPメソッドなど対象を絞って頻度制限を検討します。サイト全体へ低い上限を設定すると、画像や通常ページの閲覧まで止めるおそれがあります。

WAF・レート制限は狭く始める

  1. 通常時の送信件数と、急増時の件数を把握する
  2. 対象をフォーム送信先や登録処理へ限定する
  3. 管理者、決済、APIなど別の処理を巻き込まない条件にする
  4. 可能なら最初は記録またはチャレンジで動作を見る
  5. 正規送信と迷惑送信の両方で記録を確認する
  6. 確信が持てた範囲だけ遮断へ進める
  7. 変更日時、条件、戻し方を記録する

CloudflareのRate limiting rules公式資料では、対象条件、集計単位、期間、リクエスト数、対処時間を組み合わせます。利用できる条件、件数、期間はプランで異なるため、画面や契約の現行仕様を確認してください。

しきい値を決めるときは、攻撃時の最大数だけでなく通常時の上限を見ます。Cloudflareの適切な上限を探す公式手順も、通常トラフィックから外れた値を見つけ、初めはLogで検証してからChallengeやBlockへ変更する考え方を示しています。

制限により一般的な429が出る場合はWordPressの429 Too Many Requests確認手順、Cloudflare固有の1015が出る場合はCloudflare Error 1015の確認手順で発行元を分けてください。

国・IP・語句の一括遮断を主役にしない

方法効く場合限界・副作用
国単位の遮断利用地域が明確で緊急性が高い旅行者、VPN、海外拠点、検索ロボットを巻き込む
IP遮断短時間に同一IPから繰り返すIP変更、共有回線、IPv6の扱い
語句遮断特徴的な文言が反復する表記変更、部分一致、正規文面の誤検知
メールドメイン遮断同じ送信元が明確偽装、使い捨て、正規利用者への影響

国やIPは補助条件として役立つことがありますが、それだけで人間とボットを正確に区別できません。利用地域が日本中心でも、検索エンジン、監視サービス、CDN、出張中の担当者が海外経路を使うことがあります。緊急遮断を行う場合は対象URLと期間を限定し、解除条件を決めます。

WAFルールが正規利用者を止めている場合、Cloudflareの通常のブロックならCloudflare Error 1020の直し方、どのルールが一致したかの調査はCloudflare Security Eventsの見方を参考にします。防御機能を全停止せず、該当イベントとルールだけを確認してください。

対策後は正規送信の誤検知をテストする

複数の正規送信経路が誤って隔離されないか検品する設備を表した画像
テスト確認すること
PC・通常ブラウザー入力、チャレンジ、送信、完了画面
スマートフォン表示崩れ、入力しやすさ、送信完了
別回線固定回線と携帯回線で不必要に止まらない
必須エラー不足項目が分かり、入力内容を失いすぎない
日本語・英語必要な利用言語を誤検知しない
通知管理者メールと自動返信が届く
保存フォーム履歴やCRMへ一度だけ登録される
記録通過・保留・遮断が期待どおり残る

「自分のPCで1回送れた」だけで本番確認を終えないでください。管理者はCookieや許可済みIPの影響を受けることがあります。ログアウト状態、スマートフォン、別回線でも試し、正規送信が隔離や遮断へ入っていないか確認します。

迷惑投稿が急増したときの緊急対応

  1. 対象の入口、URL、時刻、件数を保存する
  2. 迷惑投稿内のリンクを開かず、管理画面で保留・隔離する
  3. 正規送信が届いているかを別に確認する
  4. コメントなら一時的に手動承認へ変更する
  5. フォームならハニーポットまたはチャレンジを追加する
  6. 大量送信が続く場合は対象URLへ短期間の頻度制限を設定する
  7. サーバー負荷やメール送信制限へ波及していないか確認する
  8. 落ち着いた後に誤検知と対策範囲を見直す

受付業務が止まるほど大量の場合は、フォームを一時停止し、代替連絡先を公開する判断もあります。ただし公開メールアドレスをそのまま掲示すると別のスパム経路になるため、電話、予約システム、既存顧客向け窓口など事業に合う代替を選びます。

大量送信でサーバーが重い、メール送信上限へ達した、WAFで正規操作も止まった場合は、時刻とルール変更を残してホスティング会社または保守担当へ連絡します。セキュリティ設定の全体像はWordPressセキュリティ設定の基本も合わせて確認してください。

スパム対策ツールを選ぶ基準

  • コメント、フォーム、会員登録のどこに対応するか
  • 利用中テーマ・フォームとの公式な互換性があるか
  • サーバー側検証が実装されるか
  • 保留・隔離した内容を確認して戻せるか
  • 誤検知の記録と除外設定があるか
  • 個人情報を外部送信する場合、送信内容と保存期間が明確か
  • アクセシビリティとスマートフォン表示に配慮されているか
  • 料金、送信上限、商用利用条件を公式情報で確認できるか
  • 更新とサポートが継続しているか

「導入数が多い」「AI判定」「99%ブロック」などの表示だけで選ばず、自分の入口と運用に合うかを確認します。検出率が高くても、正規問い合わせを確認できず削除する仕組みでは事業サイトに向かない場合があります。無料・有料を問わず、利用条件とデータの扱いは導入時点の公式ページで確認してください。

よくある質問

CAPTCHAだけでスパムは止まりますか?

すべてを止めるとは限りません。自動送信の一部を減らせても、人が送る営業メッセージ、別経路からの直接送信、高度なボットは残る場合があります。入力検証、ハニーポット、チャレンジ、頻度制限を入口に応じて組み合わせます。

コメントを使わない場合はどうすればよいですか?

新規記事の既定コメントを無効にし、既存記事でも許可が残っていないか確認します。ピンバック・トラックバックも用途がなければ見直します。設定変更後も既存記事への投稿が続く場合は、記事ごとのコメント状態を確認してください。

海外からの送信を全部止めてもよいですか?

顧客や担当者が海外から利用しないと断言できる場合でも、VPN、共有回線、検索エンジン、監視サービスへの影響を確認します。まず送信URL、送信頻度、チャレンジで範囲を狭くし、国単位の遮断は緊急時の限定策として期限と解除条件を決めます。

スパム対策後に問い合わせが来なくなりました

送信テスト、フォーム保存履歴、メール通知、WAFイベントを同じ時刻で照合します。フォームで送信前に止まるのか、WordPressは受信したがメールだけ届かないのかを分け、直前に追加したルールを対象限定で戻します。防御機能を全部無効にしたまま公開しないでください。

まとめ|止める強さより正しく仕分けることが大切

WordPressのスパム対策は、強い遮断を一つ入れて終わる作業ではありません。コメント、問い合わせフォーム、会員登録、ログインの入口を分け、WordPress標準設定、入力検証、ハニーポット、チャレンジ、頻度制限を必要な順で重ねます。

まずは迷惑投稿の時刻・対象URL・件数を保存し、変更前の正規送信を確認してください。対策後はPC、スマートフォン、別回線で受信・自動返信・保存まで試します。スパムが減った件数だけでなく、正規の問い合わせを失っていないことまで確認できて、対策は完了です。

-速度改善・安全対策