2025年10月31日
2025年10月31日
ユーザー登録機能を無効化する方法
WordPressのユーザー登録、開けっ放しで大丈夫?
「ユーザー数が1万…?」
引き継いだサイトの管理画面を見て、一瞬、何かのバグかと思った。ユーザー一覧。そこには、ロシア語や中国語の、明らかにスパムと分かるメールアドレスがびっしりと並んでいた。スクロールしてもスクロールしても終わらない。1万件以上。全部、ボットが作ったゴミデータだ。
サイトは当然、重い。データベースが無駄に肥大化してるんだから当たり前だ。バックアップ取るにも一苦労。原因は、WordPressをインストールした時に、デフォルトでONになってる「だれでもユーザー登録ができるようにする」設定。ただ、それだけ。たった一つのチェックボックスが、この惨状を生んだ。
どうも。WordPressサイトのセキュリティを飯のタネにしてる、Web屋です。
今日は、この「ユーザー登録機能」の話をしようと思う。なんでこれを開けっ放しにしとくのがヤバいのか。どうやって閉めるのか。僕が見てきた地獄みたいな事例も交えて、洗いざらい書く。もし君のサイトが会員制でもないのにこの機能がONになってたら、この記事を読み終わる頃には、血の気が引いてるかもしれない。
なんで登録機能の放置が「ヤバい」のか
「まあ、登録されるだけでしょ?」って思う? 甘い。甘すぎる。それは、攻撃者からしたら「どうぞ、ここから入ってください」って書かれたドアが開いてるのと同じなんだ。
ゴミデータでDBが腐る
まず、さっきの例。とにかくボットが来る。世界中のボットが、君のサイトを24時間監視してる。そして、登録フォームを見つけたら、片っ端から意味不明なアカウントを作り続ける。一日数百件とか、普通にある。

これが溜まると、データベースはゴミだらけ。サイトの表示速度は落ちるし、サーバーのCPUも無駄に食う。まともなユーザーを探すのだって一苦労だ。いいことなんて一つもない。
攻撃の足場にされる
これが一番怖い。スパムアカウントは、ただのゴミじゃない。攻撃者にとっては、侵入の「足がかり」だ。登録したアカウントを使って、まずサイトの内部構造を探る。そして、管理者権限を乗っ取ろうとブルートフォース攻撃を仕掛けたり、他のプラグインの脆弱性を突いてきたりする。
権限設定がガバガバだと、購読者権限のはずが、なぜか一部の管理機能に触れてしまう、なんてこともある。そうなったらもう、おしまいだ。内部からやりたい放題やられる。
サイトがゴミ捨て場に
プロフィールページが公開される設定になってると、もっと悲惨だ。スパムユーザーが、自分のプロフィール欄に、怪しい海外のECサイトとか、アダルトサイトへのリンクを貼りまくる。君の公式サイトが、そういうサイトへのリンク集に成り下がる。Googleからの評価もダダ下がり。もう、目も当てられない。
じゃあ、どうやって閉めるの?
方法は3つ。簡単な順に説明する。スキルに合わせて選んでくれ。
1.管理画面でチェックを外す(基本中の基本)
まずこれをやれ。今すぐ。
- 管理画面 > 「設定」 > 「一般」
- 「メンバーシップ」って項目があるはずだ。
- 「だれでもユーザー登録ができるようにする」のチェックを外す。
- 「変更を保存」。
以上。これだけ。会員制サイトでもないなら、このチェックが入ってる理由はない。WordPress入れたら、歯を磨くのと同じレベルで、まずここを確認するべきだ。

2.プラグインで蓋をする
チェックを外すだけじゃ不安、というならプラグインを使う手もある。
例えば「WPS Hide Login」。これはログインURL自体(wp-login.php)を、例えばmy-secret-loginみたいな別の名前に変えちゃうプラグインだ。そもそもログインページの場所が分からなければ、登録フォームにもたどり着けない。物理的に道をなくす感じ。結構、効果的だ。
あとは「All In One WP Security & Firewall」みたいな総合セキュリティプラグイン。これなら、登録無効化だけじゃなくて、ログイン試行回数の制限とか、ファイアウォール機能とか、まとめてセキュリティを固められる。ただ、多機能な分、設定項目が多くて、初心者にはちょっと難しいかもしれない。下手にいじると、自分がログインできなくなったりするから注意な。
3.コードで消し去る(開発者向け)
プラグインはあんまり入れたくない、という僕みたいなタイプは、コードで対応する。テーマのfunctions.phpにこれを書く。
// 登録ページにアクセスされたら、問答無用でログインページに飛ばす
add_action('init', function() {
if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php?action=register') !== false) {
wp_redirect(site_url('/wp-login.php'));
exit;
}
});
// ログイン画面の「登録」リンク自体を消す
add_filter('register', '__return_null');
やってることは2つ。登録ページへの直接アクセスを全部ログインページにリダイレクト。それと、ログイン画面の下に出てくる「登録」ってリンクを消してる。これで、登録ページへの入り口は事実上なくなる。クライアントに納品するテーマには、僕はこれを標準で入れてる。親切心、というか自己防衛だな。
どうしても登録機能がいるなら…
「でも、会員サイトだから登録機能は必須なんだ!」って場合。もちろん、あるだろう。その時は、ドアを開けっ放しにするんじゃなくて、屈強なガードマンを雇う必要がある。
reCAPTCHAは最低限のマナー
Googleの「reCAPTCHA」。これはもう、必須。絶対に入れろ。「私はロボットではありません」のチェックボックスがあるだけで、ボットによる自動登録は、体感で99%は防げる。

「Advanced noCaptcha & invisible Captcha (v2 & v3)」みたいなプラグインを使えば、簡単に導入できる。これをやってない会員サイトは、セキュリティ意識が低いと言われても仕方ない。
メール認証も忘れずに
登録時に確認メールを送って、その中のリンクをクリックしないと本登録にならない、っていうアレだ。捨てアドとか、適当なメールアドレスでの登録を防げる。これも、まともな会員サイト用プラグインなら、大抵は機能として持ってるはずだ。
パスワードは厳しくしろ
「123456」とか「password」とか、そんなパスワードを許しちゃダメだ。大文字、小文字、数字、記号を全部使わせる。長さも最低12文字以上。これもセキュリティプラグインで強制できる。ユーザーには嫌がられるかもしれないが、彼らの個人情報を守るためだ。心を鬼にしろ。
ぶっちゃけ、どうなの?
Q. 登録無効にしたら、コメントできなくなる?
A. ならない。コメントとユーザー登録は別。ただ、コメント欄を開放するなら、スパム対策は必須だ。「Akismet」は絶対に入れとけ。話はそれからだ。
Q. ゴミユーザーがもう1万件いるんだけど、どうやって消す?
A. 手で消すのは無理だ。諦めろ。「Bulk Delete」ってプラグインを使うか、サーバーに入れるならWP-CLIでコマンド叩くのが早い。wp user delete $(wp user list --role=subscriber --field=ID)みたいなコマンド一発で、購読者権限のユーザーを全部消せる。まあ、やる時はバックアップ取ってから、自己責任でな。

Q. もしかしたら、将来使うかも…
A. だったら、管理画面でチェック外すだけにしとけ。コードで消しちゃうと、戻すのが面倒だ。でも、本当にその「いつか」は来るのか? 半年以上使ってない機能なら、それはもう、君のサイトには不要な機能だ。
まとめ:いらないドアは、コンクリートで埋めろ
結局、言いたいことはこれだけだ。
- いらないユーザー登録機能は、百害あって一利なし。
- 会員制でもないなら、今すぐ管理画面でチェックを外せ。
- もし必要なら、reCAPTCHAとメール認証は最低限の武装だ。
家の裏口、開けっ放しになってないか? 鍵もかかってない、誰でも入れるドア。それが、君のサイトのユーザー登録機能かもしれない。たった一つのチェックボックス。それだけで、サイトの寿命が縮むこともある。大げさじゃなく、本当の話だ。

セキュリティは、地味で、面倒で、誰も褒めてくれない。でも、何かあってからじゃ遅いんだ。手遅れになる前に、自分のサイトの「裏口」を、今一度確認してみてほしい。
追伸:もう一歩先の話
ここまで読んでくれた君に、もう一つ。もし本当にユーザー情報を守りたいなら、「2要素認証(2FA)」も検討しろ。IDとパスワードが漏れても、スマホがないとログインできない仕組みだ。

「Wordfence Login Security」あたりで実装できる。攻撃者は常に、僕らの想像の一歩先を行く。だから僕らも、常に一歩先を考えて対策しなきゃならない。終わりなき戦い、それがセキュリティだ。

「うちのサイト、今どのくらい安全なんだろう?」
そんな疑問を持った方は、まずセキュリティ診断を受けてみるのもいいかもしれない。最近では、30秒ほどでサイトの安全性をチェックできる無料診断サービスもある。暗号化の設定やプラグインの脆弱性、情報漏れのリスクなど、気になるポイントを一通り確認できる。
実は、毎日100サイト以上がハッキングの被害に遭っているという現実がある。「まさか自分のサイトが狙われるなんて」と思っていても、被害は突然やってくる。
早めに問題を見つけて対処しておけば、大きなトラブルを未然に防げる。まずは自分のサイトの「健康診断」から始めてみませんか?
実際にあった、ヤバい事例
ここまで読んで、「まあ、そんなに大げさな話でもないでしょ」って思ってる人もいるかもしれない。だから、僕が実際に見た、本当にあった話をいくつか書いておく。
事例1:EC
サイトが乗っ取られた
あるアパレルのECサイト。WordPressにWooCommerceを入れて運営してた。ある日、顧客から「注文してないのに、注文確認メールが来た」って問い合わせが殺到した。調べてみたら、スパムアカウントの一つが、なぜか管理者権限を持ってた。プラグインの脆弱性を突かれて、権限昇格されてたんだ。そのアカウントで、勝手に商品を注文し、配送先を海外に設定してた。被害額は数百万円。結局、サイトを一時閉鎖して、全データをクリーンアップすることになった。
原因は、ユーザー登録を開けっ放しにしてたこと。それだけだ。
事例2:ブログがSEOスパムの踏み台に
個人ブログを運営してた人。ある日、Google検索で自分のサイト名を検索したら、見覚えのないページがヒットした。見てみると、自分のドメインなのに、海外のカジノサイトへのリンクが大量に貼られたページが何百ページも生成されてた。
これも、スパムユーザーが作ったアカウントを使って、サイトに不正なページを自動生成するマルウェアを仕込まれたのが原因だった。Googleからペナルティを受けて、検索順位は圏外へ。何年もかけて育てたブログが、一夜にして消えた。
事例3:サーバーごと凍結
これは、僕が直接関わったケースじゃないんだけど、知り合いから聞いた話。レンタルサーバーを使ってたサイトで、スパムユーザーが数万件登録されてた。そのアカウントを使って、サイトから大量のスパムメールが送信されてた。サーバー会社から警告が来て、最終的にはアカウントごと凍結。サイトは完全に消えた。バックアップもサーバー上にあったから、全部パー。
ユーザー登録機能を開けっ放しにしてたせいで、サイトどころか、サーバーごと失った。笑えない話だ。
「まさか自分が」は、通用しない
こういう事例を話すと、「でも、うちのサイトは小さいから狙われないでしょ」って言う人が必ずいる。
それ、完全に間違ってる。
攻撃者は、サイトの大小なんて見てない。ボットは、機械的に、世界中のWordPressサイトをスキャンして、脆弱性を探してる。君のサイトが「小さいから」「有名じゃないから」狙われない、なんてことはない。むしろ、セキュリティ意識が低い小規模サイトの方が、格好の標的だ。
「まさか自分が」は、通用しない。それが、セキュリティの世界だ。
結局、何をすればいいのか
長々と書いてきたけど、やることはシンプルだ。
- 今すぐ、管理画面の「設定」>「一般」を開け。
- 「だれでもユーザー登録ができるようにする」のチェックが入ってたら、外せ。
- もし会員制サイトなら、reCAPTCHAとメール認証を入れろ。
- 既にスパムユーザーがいるなら、プラグインかWP-CLIで消せ。
これだけだ。難しいことは何もない。でも、これをやるかやらないかで、君のサイトの未来は大きく変わる。
セキュリティは、「やっておけばよかった」って後悔するためにあるんじゃない。「やっておいてよかった」って安心するためにあるんだ。
今、この瞬間に、行動してほしい。
補足:プラグインの選び方で迷ってる人へ
「セキュリティプラグイン、いっぱいあってどれ選べばいいか分からない」って相談をよく受ける。だから、僕なりの選び方を書いておく。
無料 vs 有料、どっちがいい?
結論から言うと、無料でも十分なものは多い。ただ、有料版の方が、サポートが手厚かったり、機能が豊富だったりする。予算があるなら、有料版を選んだ方が安心だ。特に、クライアントワークで使うなら、有料版を推奨する。何かあった時に、「無料だから」は言い訳にならない。
レビューと更新頻度を見ろ
プラグインを選ぶ時、必ずチェックするのが「レビュー」と「最終更新日」だ。レビューが星4以上で、最終更新が3ヶ月以内なら、まあ信頼できる。逆に、最終更新が1年以上前のプラグインは、どんなに評価が高くても避けた方がいい。放置されてるプラグインは、それ自体が脆弱性の温床になる。
インストール数も参考に
インストール数が多いプラグインは、それだけ多くの人が使ってるってことだ。バグや脆弱性が見つかりやすいし、修正も早い。マイナーなプラグインは、機能は良くても、サポートが途絶えるリスクがある。安全を取るなら、メジャーなプラグインを選ぶべきだ。
最後に:セキュリティは「保険」だ
セキュリティ対策って、正直、面倒くさい。時間もかかるし、お金もかかる。でも、これは「保険」と同じだ。
車の保険に入るのは、事故を起こさないためじゃない。万が一、事故を起こした時に、自分と相手を守るためだ。セキュリティも同じ。攻撃を100%防ぐことはできない。でも、攻撃を受けた時のダメージを最小限に抑えることはできる。
ユーザー登録機能を無効化する。たった一つのチェックボックスを外す。それだけで、君のサイトは、確実に安全になる。
今、この記事を読んでる君。今すぐ、管理画面を開いてくれ。そして、確認してくれ。もしチェックが入ってたら、外してくれ。それが、君のサイトを守る、最初の一歩だ。