← PC・IT用語集へ戻る

reCAPTCHA

reCAPTCHA
security web beginner
ウェブサイトの問い合わせフォームなどに対して、悪意のあるプログラム(ボット)による自動投稿やスパム行為を防ぐためのGoogleのセキュリティサービス。
reCAPTCHA (reCAPTCHA)

概要(サマリー)

reCAPTCHA(リキャプチャ)とは、ウェブサイトのお問い合わせフォームやログイン画面に、悪意のある自動プログラム(ボット)が侵入するのを防ぐための、Googleの無料セキュリティサービスである。

たとえば、「信号機の写っている写真をすべて選択してください」という画像パズルや、「私はロボットではありません」というチェックボックスをサイト上で見たことがあるだろう。あれがreCAPTCHAである。
人間にとっては簡単な操作だが、機械(ボット)にとっては解くのが非常に難しいクイズを出すことで、大量の迷惑メール(スパム)の自動送信や、他人のアカウントへの総当たりログイン攻撃(ブルートフォース攻撃)を強力にブロックしてくれる。

詳細解説

reCAPTCHAのバージョンの違い

GoogleのreCAPTCHAには、時代に合わせていくつかのバージョンが存在し、ユーザーの負担を減らすように進化している。

  • reCAPTCHA v2 (「私はロボットではありません」チェックボックス):
    チェックボックスをクリックさせ、怪しい挙動(マウスの細かな動きなど)を検出すると、「消火栓の画像をすべて選択してください」などの画像パズルを表示して人間であることを証明させる。
  • reCAPTCHA v2 (非表示バッジ):
    画面上にチェックボックスを表示せず、ユーザーがフォームの「送信」ボタンを押した瞬間に、裏側でバックグラウンド判定を行う。
  • reCAPTCHA v3 (完全自動・ユーザー操作不要):
    現在最も推奨されるバージョン。
    ユーザーにチェックボックスや画像パズルを一切表示しない。ユーザーがページ内でスクロールしたり、文字を入力したりする日常的な「自然な挙動」をAIが監視し、人間らしさを「0.0(ボット)から1.0(人間)」のスコアで裏側で判定する。
    サイト運営者は、このスコアが一定値(例: 0.5未満)を下回った場合のみ、追加の認証を求めたり送信をブロックしたりするプログラムを書く。

仕組みと処理の流れ

  1. キーの取得: サイト運営者はGoogleにサイトを登録し、「サイトキー(HTMLに貼る用)」と「シークレットキー(サーバーで検証する用)」の2つの鍵を取得する。
  2. トークンの生成: ユーザーがフォームを操作すると、ブラウザ上のreCAPTCHA(JavaScript)が一時的な「トークン(証明書)」を生成してフォームと一緒に送信する。
  3. サーバーでの検証: 送信されたトークンとシークレットキーを、WebサーバーからGoogleのサーバーへ送信して照合する。Googleから検証結果(人間かどうかの判定)が返却され、それを元に処理を許可または拒否する。

AIコーディングとの関係

お問い合わせフォームをAIに作らせると、プログラム自体は正常に動くものの、そのまま公開するとスパムボットの標的になってしまう。
AIに「セキュリティ対策も兼ねて、GoogleのreCAPTCHA v3を組み込んだ問い合わせフォームのコードを書いて」と指示することで、フロントエンドでのスクリプト読み込みと、バックエンドでのAPI検証処理が組み込まれた安全なコードを生成してもらえる。

AIへ指示する際のポイント

  • 「HTMLフォームにreCAPTCHA v3を導入し、JavaScriptで送信トークンを取得してPHPサーバーへ送信する一連のサンプルコードを書いて」
  • 「Next.js(React)で react-google-recaptcha-v3 ライブラリを使用して、問い合わせ送信時にボット判定を行うコンポーネントを作成して」

よくある勘違い

reCAPTCHAと「入力バリデーション」は同じ?

目的が異なる。
- 入力バリデーション: 入力されたメールアドレスの形式が正しいか、必須項目が空でないかなど、「データの形式チェック」を行う。
- reCAPTCHA: 送信しようとしているのが「人間か、それとも自動化されたプログラム(ボット)か」を判定する。

バリデーションを厳しくしても、ボットが正しいメールアドレス形式で大量送信してくるスパムは防げない。そのため、バリデーションとreCAPTCHAの両方を組み合わせる必要がある。

認証パズルが毎回出るとユーザーが嫌がる?

古い「reCAPTCHA v2」では画像パズルが頻繁に表示され、ユーザーにストレスを与える要因になっていた。
しかし、最新の「reCAPTCHA v3」であれば、パズルやチェックボックスは一切表示されず、バックグラウンドで完全自動判定される。そのため、ユーザー体験(UX)を損なうことなく安全性を高めることができる。

reCAPTCHAを設置すればすべてのボット攻撃を防げる?

reCAPTCHAはフォームへのスパム自動送信やブルートフォース攻撃を大幅に抑制できるが、あらゆる攻撃を完全にブロックするものではない。
たとえば、巧妙に人間の挙動を模倣するように作られた高度なボットや、クラウドソーシングを使った人間によるCAPTCHA突破には対応できない。
reCAPTCHAは有効な防御層の一つとして捉え、バリデーション・レートリミット(連続送信の制限)・IPブロックなどの対策と組み合わせて使うのが現実的なセキュリティ設計である。

まとめ

  • reCAPTCHAは、ボットによる問い合わせフォームのスパム自動送信や不正ログインを防ぐGoogleのセキュリティツール。
  • 最新のv3では、画像パズルを表示せず、ユーザーの挙動スコア(0.0〜1.0)によって裏側でボットを自動判定する。
  • 導入の際は、ブラウザ側(HTML)とサーバー側(PHP等)の双方にGoogle APIとの連携コードを書く必要がある。
  • AIを活用すれば、フロント・バックエンドが連携する複雑なreCAPTCHAの検証ロジックを正確に実装できる。

情報ソース

より詳しくAIに聞いてみよう

  • WordPressにお問い合わせフォームプラグイン(Contact Form 7など)を使っていて、reCAPTCHA v3を設定する手順を教えてください。
  • reCAPTCHA v3のスコア(0.0〜1.0)の判定基準のカスタマイズ方法と、一般的に「ボット」と判定してブロックすべき閾値の目安を教えてください。
  • PHPで、フロントエンドから送られてきたreCAPTCHA v3のトークンを、GoogleのAPI(siteverify)に送信してボット判定結果を取得するサーバー側コードを書いてください。
  • reCAPTCHAの「サイトキー(Site Key)」と「シークレットキー(Secret Key)」の役割の違いと、漏洩した際の危険性について教えてください。
  • reCAPTCHA v3を設定したページに表示される「プライバシーと利用規約」のバッジ(ロゴマーク)を、CSSで非表示にすることは規約違反になりますか?代替手段があれば教えてください。