WordPress のスパム登録(偽ユーザー登録)を止めるには?
執筆:Eureka Studio · 更新日
要点
ユーザー登録を公開する必要がないなら、オフにしましょう。必要な場合は、IP ごと・ネットワークごとに 1 時間あたりの登録数を制限し、作動すると新規アカウントを確認待ちとして保留するサイト全体の 1 時間あたりの上限を設け、使い捨てメールアドレスをブロックし、見えないハニーポットを追加して、ウェルカムメールの送信を抑えます。WooCommerce ではチェックアウトを決してブロックせず、代わりに不審なアカウントを保留します。
手順
1手順 1
ユーザー登録を公開しておく必要があるか確認する
「設定 → 一般」で、メンバーシップの「だれでもユーザー登録ができるようにする」にチェックが入っているか確認します。WooCommerce では、顧客がマイアカウントページでアカウントを作成できるかを確認します。誰も必要としていないなら、オフにしてください。
2手順 2
登録保護を監視モードでオンにする
Hushfort で「登録保護」を開いてオンにし、「モード」を「記録のみ — 監視モード (登録をブロックしません)」に設定します。「見えないハニーポット」はオンのまま保存します。これで、実際に動作させる前にログを確認できます。

3手順 3
1 時間あたりの上限とサイト全体の上限を設定する
IP ごと・ネットワークごとに 1 時間あたりの登録数を制限し、続いてサイト全体の「1 時間あたりの登録上限 (サイト全体)」を設定します。上限を超えるとサーキットブレーカーが作動し、新規アカウントを確認待ちとして保留します。
4手順 4
大量登録が上限に達したときの動きを確認する
登録数が 1 時間あたりの上限を超えると、新規アカウントは理由「サーキットブレーカー作動」とともに「保留中のアカウント」に入ります。本物のアカウントは承認し、残りは削除します。
5手順 5
すでに作成されたアカウントを整理する
「クリーンアップウィザード」を使います。「1. プレビュー」を押すと注文・コメント・投稿のないアカウントが一覧表示されるので、続けて「2. バックアップして削除」を押します。削除したアカウントは 30 日間復元できます。

なぜ重要なのか
偽アカウントが少しあるだけなら無害です。しかし大量に押し寄せると話は別です。このレイヤーを作ったのは、あるサイトが 1 時間に約 10,000 件の登録リクエストを受け、最終的に数万件の偽アカウントを抱えたのがきっかけでした。別のサイトでは、偽アカウントに送られたウェルカムメールがメールの送信枠を使い果たし、本物の注文メールが送られなくなりました。
偽の登録は、目立たない形でもコストを生みます。肥大化したユーザーテーブル、遅くなる管理画面、汚れた顧客リストやメールのレポート、そして存在しないアドレスでウェルカムメールが不達になるたびに下がっていくメールサーバーの評価です。
よくある間違い
- うっかり登録を公開したままにしている。 「だれでもユーザー登録ができるようにする」が、セットアップ中にオンにされたまま忘れられていることがあります。
- デフォルトの権限グループが強すぎる。 新規ユーザーは購読者か顧客にすべきで、投稿者以上には決してしないでください。
- IP ごとの上限しかない。 大量登録は、同じネットワーク内の多数のアドレスから来ることがよくあります。ネットワークごとにも制限してください。
- 大量登録が来たら登録を停止する。 それでは本物の顧客を締め出すことになり、まさに攻撃者の思うつぼです。新規アカウントを保留中として扱えば、大量登録が過ぎ去るまで入口を開けたままにできます。
- チェックアウトでブロックする。 ストアがスパムフィルターのせいで注文を失うことは、あってはなりません。
- バックアップなしで削除する。 一括削除は元に戻せません。まずプレビューし、コピーを残してください。
プラグインを使わない方法
- 必要なければ 登録をオフにします: 「設定 → 一般」で「だれでもユーザー登録ができるようにする」のチェックを外します。WooCommerce の場合は「WooCommerce → 設定 → アカウントとプライバシー」で、マイアカウントページでのアカウント作成のチェックを外します。
- デフォルトの権限グループを低くしておきます: 「設定 → 一般 → 新規ユーザーのデフォルト権限グループ → 購読者」。
- 2 つの小さなフックで、WordPress のフォームに ハニーポットを追加します:
<?php
add_action( 'register_form', function () {
echo '<p style="position:absolute;left:-9999px" aria-hidden="true">'
. '<input type="text" name="hp_company" tabindex="-1" autocomplete="off"></p>';
} );
add_filter( 'registration_errors', function ( $errors ) {
if ( ! empty( $_POST['hp_company'] ) ) {
$errors->add( 'spam', 'Registration failed.' );
}
return $errors;
} );
これが対象とするのは WordPress コアのフォームだけで、WooCommerce やその他の登録フォームは含まれません。また、回数制限もサイト全体の上限もクリーンアップもありません。進行中の大量登録に対しては、これらの手順は役に立ちますが、止めることはできません。
うまくいかないときは
- 本物の顧客が登録できない。 監視モードでログを確認し、オフィスやイベント会場のネットワークがネットワークごとの上限に達していないか確認してください。上限を引き上げるか、その IP を許可リストに追加します。
- 保留中のアカウントがたまった。 7 日後に自動的に削除されます。それまでに本物のアカウントを承認してください。
- 顧客にウェルカムメールが届かなかった。 サイト全体の上限によってサーキットブレーカーが作動した場合、保留されたアカウントには承認されるまでメールが送られません。これは意図した動作です。
Hushfort なら
登録保護は、無料の WordPress セキュリティプラグイン Hushfort Security に追加する有料アドオン Hushfort Pro の機能です。
Hushfort の 登録保護 は、WordPress と WooCommerce の登録に加え、その他の登録フォームにも対応します:
- デフォルトで IP ごとに 1 時間あたり 3 件 (IPv6 は /64)、ネットワークごとに 1 時間あたり 10 件 (/24、IPv6 は /48)。
- サイト全体で 1 時間あたり 50 件の上限と、60 分間作動し続けるサーキットブレーカー。デフォルトでは新規アカウントを保留中として作成し、メールは送信しません。代わりに登録を停止することも選べます。
- 使い捨てメールアドレスのブロックと、Gmail の変形アドレス (ドット、+タグ、googlemail) の検出。
- WordPress と WooCommerce の登録フォームに見えないハニーポット。
- ウェルカムメールの送信抑制。偽の登録でメールの送信枠を使い果たすことはありません。
- プレビューと、30 日間復元できるバックアップ付きのクリーンアップウィザード。
- 保留中のアカウントは 7 日後に自動的に削除。
チェックアウトは決してブロックされません。まず監視モードで動かして、実際に動作させる前に効果を確認することもできます。
よくある質問
なぜこんなに偽のユーザー登録が来るのですか?
WordPress の偽ユーザーを一括削除するには?
登録数を制限すると、本物の WooCommerce の顧客までブロックされませんか?
Gmail の変形アドレスとは何ですか?
登録フォームに CAPTCHA を追加すべきですか?
関連するハウツー
CAPTCHA を使わずに WordPress のお問い合わせフォームのスパムを防ぐには?
CAPTCHA なしでお問い合わせフォームのスパム対策。Elementor、Contact Form 7、WPForms をハニーポットと送信上限で守ります。
手順を読むWordPress で偽の Googlebot を見分けてブロックするには?
WordPress で偽の Googlebot や悪質なボットをブロックする方法。本物は IP で確認し、IP ごとのリクエスト予算で負荷を抑えます。
手順を読むWordPress のコメントを無効にするには? スパムコメントを止めるには?
WordPress のコメントを無効化するか、開いたままスパムだけを止める方法。投稿と商品レビューを別々に設定でき、CAPTCHA も不要です。
手順を読む


