
「私はロボットではありません」は、ただのチェックボックスじゃない。reCAPTCHAでログイン画面を鉄壁にする方法
「またか…」
月曜の朝、コーヒーを淹れながら、いつものようにサイトの監視ログに目を通す。そこには、見慣れた、しかし決して慣れることのない光景が広がっていた。海外からのIPアドレスの群れが、WordPressのログイン画面、wp-login.phpに、狂ったように押し寄せている。
ログイン試行回数、過去24時間で1万回超え。もちろん、全部失敗。でも、この数字を見るたびに、心臓がヒヤリとする。今は防げている。でも、いつまで? もし、単純なパスワードを設定している管理者がいたら? もし、この攻撃の波の中に、未知の脆弱性を突くものが混じっていたら?
どうも。WordPressサイトのセキュリティ対策に、もう何年も頭を悩ませ続けているWeb屋です。
ブルートフォース攻撃。総当たり攻撃とも言う。パスワードを片っ端から試して、力ずくでログインしようとする、古典的だけど、いまだに強力な攻撃だ。WordPressのように、世界中で使われているCMSは、この手の攻撃の格好の的になる。
今日は、このうっとうしいボット攻撃から、君の、そしてクライアントの大事なサイトを守るための、強力な武器の話をしようと思う。それが、Googleの「reCAPTCHA」だ。
「私はロボットではありません」っていう、あのチェックボックス。見たことあるだろ? あれが、ただの飾りじゃないってことを、この記事で徹底的に解説していく。プラグインを使った簡単な導入方法から、v2とv3の違い、そして、俺が実際に導入して、攻撃がピタッと止まった時の話まで。もし君が、ログイン画面のセキュリティに少しでも不安があるなら、この記事は間違いなく役に立つはずだ。

ボット攻撃、なめてるとマジでヤバい
「どうせパスワードは複雑だから、大丈夫だろ」
そう思ってるなら、ちょっと考えが甘いかもしれない。ボット攻撃の本当の怖さは、ログインされることだけじゃないんだ。
1. サーバーが、死ぬ
ログイン試行も、サーバーにとっては一つの「処理」だ。1秒間に何百、何千というリクエストが来れば、サーバーは当然、悲鳴を上げる。CPU使用率は跳ね上がり、サイトの表示はどんどん遅くなる。そして、最悪の場合、サーバーはダウンする。君のサイトだけじゃない、同じサーバーに入っている他のサイトまで巻き込んで、だ。そうなったら、損害賠償問題に発展することだってある。笑えない話だ。
2. パスワードが、いつか破られる
「パスワードは十分に複雑だ」本当にそうか? 攻撃者は、何十億というパターンの辞書を持っている。よく使われる単語、数字の組み合わせ、過去に漏洩したパスワードのリスト。それらを組み合わせて、執拗に試し続ける。今は大丈夫でも、1年後、2年後は分からない。いつか、その「複雑な」パスワードが、突破される日が来るかもしれない。
3. 君のサイトが、犯罪の踏み台になる
もしログインされたら、サイトは乗っ取られる。記事を改ざんされたり、不正な広告を埋め込まれたりするだけじゃない。君のサイトが、フィッシング詐欺のサイトになったり、他のサイトを攻撃するためのDDoS攻撃の踏み台にされたりする。君が、知らないうちに、犯罪の片棒を担がされることになるんだ。これほど、気分の悪いことはない。
reCAPTCHAは、なぜボットを見破れるのか?
じゃあ、reCAPTCHAはどうやって、人間とボットを見分けてるんだ?
「私はロボットではありません」のチェックボックス。あれをクリックする時、実は、俺たちのマウスの動きは、Googleに筒抜けだ。クリックするまでのカーソルの軌跡、クリックの速さ、画面のどこをクリックしたか。人間が無意識に行う、その「揺らぎ」や「癖」を、GoogleのAIが解析してるんだ。
ボットの動きは、直線的で、機械的だ。人間のような「ためらい」や「無駄な動き」がない。reCAPTCHAは、その違いを敏感に感じ取って、「こいつは怪しい」と判断する。怪しいと判断されると、あの、歪んだ文字を読ませたり、信号機や横断歩道の画像を選ばせる、追加のテストが発動するわけだ。

v2とv3、どっちを使えばいい?
reCAPTCHAには、いくつかバージョンがあるけど、今、主に使われているのはv2とv3だ。この二つは、思想が全く違う。
reCAPTCHA v2
- 「私はロボットではありません」チェックボックス:ユーザーに、明確なアクションを求める。怪しい場合は、画像選択などのテストを追加する。
- メリット:分かりやすい。ボットをほぼ確実にブロックできる。
- デメリット:ユーザーに、一手間かけさせてしまう。
reCAPTCHA v3
- 透明なreCAPTCHA:ユーザーには、何も見えない。バックグラウンドで、ユーザーの行動をスコア付け(0.0〜1.0)している。
- メリット:ユーザーに、一切手間をかけさせない。UXを損なわない。
- デメリット:スコアが低いユーザーをどう扱うか、自分で決めないといけない(例えば、ログインはさせるけど、管理画面の一部機能を制限する、など)。実装の難易度が少し上がる。
結論から言うと、WordPressのログイン画面に導入するなら、俺は断然、v2をおすすめする。
なぜなら、ログイン画面は、UXよりもセキュリティが優先されるべき場所だからだ。一手間かかっても、確実にボットをブロックする方が、メリットが大きい。v3は、コメントフォームとか、お問い合わせフォームとか、UXを重視したい場所に向いている。
プラグインで、5分で導入する
理屈は分かった。じゃあ、どうやって導入するんだ?
一番簡単なのは、プラグインを使う方法だ。いくつかあるけど、俺がよく使うのは「Advanced noCaptcha & invisible Captcha (v2 & v3)」だ。シンプルで、設定も分かりやすい。
1. Google reCAPTCHAでキーを取得する
まず、Google reCAPTCHAの公式サイトで、自分のサイトを登録して、「サイトキー」と「シークレットキー」っていう、2つの鍵を手に入れる必要がある。
- Google reCAPTCHAの管理コンソールにアクセスする。
- ラベル:サイトの名前とか、分かりやすい名前を入力する。
- reCAPTCHAタイプ:「reCAPTCHA v2」→「「私はロボットではありません」チェックボックス」を選ぶ。
- ドメイン:自分のサイトのドメインを入力する。(例:
example.com) - 利用規約に同意して、送信する。
そうすると、「サイトキー」と「シークレットキー」が表示される。これを、どこかにコピーしておく。

2. プラグインをインストールして、設定する
- WordPressの管理画面で、「プラグイン」→「新規追加」と進む。
- 「Advanced noCaptcha & invisible Captcha」で検索して、インストール、有効化する。
- 設定画面が開くので、さっき取得した「サイトキー」と「シークレットキー」を、それぞれコピペする。
- Enabled Forms(どのフォームで有効にするか)のセクションで、「Login Form」にチェックを入れる。
- 変更を保存する。
以上。これだけだ。
一度ログアウトして、ログイン画面(wp-login.php)にアクセスしてみてくれ。「私はロボットではありません」のチェックボックスが表示されていれば、成功だ。

導入後、攻撃はピタッと止まった
俺が、あるクライアントのサイトにこれを導入した時の話だ。そのサイトも、1日に数千件のブルートフォース攻撃を受けていて、サーバーが不安定になっていた。
reCAPTCHAを導入した、次の日。監視ログを見て、俺は思わず声が出た。あれだけ大量にあったログイン試行のエラーログが、ゼロになっていたんだ。文字通り、ゼロ。ピタッと、止まっていた。
ボットは、チェックボックスを突破できない。だから、ログインを試行することすら、できなくなったんだ。サーバーの負荷は劇的に下がり、サイトの表示速度も安定した。クライアントにも、心から感謝された。
reCAPTCHAは、本当に、効果てきめんだ。

まとめ:セキュリティ対策に、「やりすぎ」はない
ログイン画面のセキュリティ対策は、WordPressを守る上で、基本中の基本だ。他にも、
- パスワードを複雑にする
- ユーザー名を「admin」にしない
- ログインURLを変更する
- ログイン試行回数を制限する
など、やるべきことはたくさんある。reCAPTCHAは、その中でも、特に費用対効果が高い、強力な一手だ。
「面倒くさい」「よく分からない」
そう言って、対策を後回しにしていると、いつか必ず、痛い目を見る。俺がそうだったように、ある日突然、サーバーが落ちたり、サイトが乗っ取られたりする。そうなってからじゃ、遅いんだ。
セキュリティ対策に、「やりすぎ」なんてことはない。考えられる限りの対策を、一つずつ、着実にやっていく。その地道な努力だけが、君の大事なサイトを、悪意ある攻撃者から守る、唯一の方法なんだ。
この記事が、その第一歩になってくれたら、これ以上嬉しいことはない。

FAQ:よくある質問
Q. reCAPTCHAを導入したら、サイトが重くなったりしない?
A. ほとんど影響はない、と言っていい。Googleのスクリプトを読み込む分、ほんのわずかな遅延はあるかもしれないけど、体感できるレベルじゃない。むしろ、ボット攻撃を防ぐことで、サーバー全体のパフォーマンスが向上するメリットの方が、はるかに大きい。
Q. v2とv3を、場所によって使い分けることはできる?
A. できる。さっき紹介したプラグイン「Advanced noCaptcha & invisible Captcha」なら、フォームごとに、v2を使うかv3を使うかを選べる。例えば、ログイン画面はv2、コメントフォームはv3、みたいに設定できる。柔軟性が高くて、便利だ。
Q. プラグインを使わずに、手動で導入したいんだけど。
A. もちろん、できる。テーマのfunctions.phpに、いくつかコードを追記する必要がある。具体的には、Googleのスクリプトを読み込むコード、ログインフォームにreCAPTCHAのチェックボックスを表示するコード、そして、ログイン処理の前に、reCAPTCHAの認証結果を検証するコードだ。ちょっと長くなるから、ここでは割愛するけど、「WordPress reCAPTCHA functions.php」とかでググれば、詳しいやり方が見つかるはずだ。自分でコードを管理したい、っていうこだわりがあるなら、挑戦してみるのもいいだろう。ただし、やる時はバックアップ取ってから、自己責任でな。
「うちのサイト、今どのくらい安全なんだろう?」
そんな疑問を持った方は、まずセキュリティ診断を受けてみるのもいいかもしれない。最近では、30秒ほどでサイトの安全性をチェックできる無料診断サービスもある。暗号化の設定やプラグインの脆弱性、情報漏れのリスクなど、気になるポイントを一通り確認できる。

実は、毎日100サイト以上がハッキングの被害に遭っているという現実がある。「まさか自分のサイトが狙われるなんて」と思っていても、被害は突然やってくる。
早めに問題を見つけて対処しておけば、大きなトラブルを未然に防げる。まずは自分のサイトの「健康診断」から始めてみませんか?
手動導入の道:なぜ、俺はプラグインを卒業したか
プラグインは手軽でいい。でも、俺は最近、クライアントの重要なサイトでは、プラグインを使わずに手動でreCAPTCHAを導入することが増えた。なぜか?
理由は3つある。
1. 依存を減らしたい
プラグインは、結局、他人の作ったコードだ。そのプラグインが、いつ開発を停止するか分からない。脆弱性が見つかるかもしれない。WordPress本体のアップデートに追従できなくなるかもしれない。そういう、自分ではコントロールできないリスクを、サイトのセキュリティの根幹に関わる部分で抱えたくなかったんだ。
2. パフォーマンスへのこだわり
優れたプラグインでも、不要なCSSやJavaScriptを読み込むことがある。サイトの表示速度にコンマ1秒でもこだわりたい、っていう職人気質みたいなもんだ。手動で実装すれば、本当に必要なコードだけを、必要な場所に、必要なタイミングで読み込める。この、完全なコントロール感が、俺にはたまらなく魅力的なんだ。
3. 理解が深まる
手動で実装する過程で、reCAPTCHAがどういう仕組みで動いているのか、WordPressのログイン処理がどういうフックでカスタマイズできるのか、っていう理解が、めちゃくちゃ深まる。この知識は、単にreCAPTCHAを導入するだけじゃなく、他のカスタマイズやトラブルシューティングにも、必ず活きてくる。
もちろん、誰にでも手動実装を勧めるわけじゃない。PHPやWordPressのフックに詳しくないなら、下手にいじってサイトを壊すリスクの方が高い。でも、もし君が、もう一歩先に進みたい、WordPressを自分の手足のようにコントロールしたい、って思うなら、挑戦してみる価値は、絶対にある。
追伸:reCAPTCHAだけじゃ、まだ足りない
reCAPTCHAは強力だ。でも、これだけで安心しちゃいけない。セキュリティは、多層防御が基本だ。複数の壁を築くことで、初めて、本当に「安全」に近づける。
ログイン画面に関して言えば、最低でも、あと二つはやっておくべきことがある。
1. 2要素認証(2FA)
パスワードが突破されても、もう一つの壁があれば、侵入を防げる。それが、2要素認証だ。Google Authenticatorみたいな認証アプリで生成される、30秒ごとに変わるワンタイムパスワード。これを、パスワードと組み合わせて使う。
もし攻撃者が、君のパスワードを盗んだとしても、君のスマホがなければ、ログインできない。これは、ブルートフォース攻撃だけじゃなく、キーロガーみたいな、もっと悪質な攻撃にも有効だ。WordPressなら、「Two-Factor」みたいなプラグインで、簡単に導入できる。
2. ログインURLの変更
そもそも、ログイン画面の場所が分からなければ、攻撃しようがない。WordPressのデフォルトのログインURLは、wp-login.phpだ。これは、世界中の攻撃者が知っている。だから、ここを、君しか知らない、秘密のURLに変えてしまうんだ。
「WPS Hide Login」っていうプラグインを使えば、管理画面から、好きなURLに、簡単に変更できる。例えば、example.com/secret-gateみたいに。これだけで、ほとんどの機械的なボット攻撃は、シャットアウトできる。
reCAPTCHA、2要素認証、ログインURLの変更。この3つを組み合わせれば、君のWordPressのログイン画面は、まさに「鉄壁」になる。面倒くさがらずに、必ず、全部やっておくことを、強く、強く、おすすめする。
WordPressのセキュリティ、不安に思っていませんか?

「自分のサイトは大丈夫だろうか…」
「何から手をつければいいか分からない…」
もしあなたが少しでもそう感じているなら、専門家によるセキュリティ診断を受けてみることを強くお勧めします。
上記のサイトでは、WordPressのプロがあなたのサイトの脆弱性を無料で診断してくれます。問題が見つかれば、具体的な対策方法についてもアドバイスをもらえます。手遅れになる前に、一度プロの目でチェックしてもらい、安心を手に入れましょう。