画像ツール一覧

CAPTCHA

CAPTCHA

セキュリティ

Webサイトなどで、操作しているのが人間か、ボットなどの自動化された機械(プログラム)かを判別する仕組みのこと。悪質な自動アクセスやスパム投稿を防ぐために導入されます。

🐾 猫で例えると?

ソファの上でゴロンとお腹を見せて、どこを撫でてほしいか問いかけるような表情の茶トラ
飼い主かどうかをテストするかのようにゴロンとする茶トラ

お腹を見せる茶トラが「いつもの機械的な動きではなく、こちらの反応を見て撫でて」と確かめている、と想像してみましょう。CAPTCHAも課題への応答や利用状況から自動操作らしさを判断します。ただし、通過しても本人確認や善意の証明にはなりません。

🐾 PR

💻 IT現場における「CAPTCHA」とは?

現場におけるCAPTCHAは、主にスパムメールの大量送信、チケットの転売ボットによる買い占め、ブルートフォース攻撃による不正ログインといった「プログラムによる自動化された悪意あるアクセス」を防ぐために設置されます。

代表的なものとしては、ゆがんだ英数字を読ませて入力させるタイプや、「信号機の含まれる画像をすべて選択してください」といった画像認識タイプがあります。これらは、人間にとっては簡単に見分けがついても、プログラム(ボット)にとっては解析が非常に難しいという特徴を利用しています。

⚠️ CAPTCHAの仕組みと注意点

reCAPTCHA v3は操作に対するリスクをスコアで返す方式です。スコアは人間かどうかの確定判定ではなく、サイト側が追加確認や制限を判断する材料です。具体的な検出条件を「マウスの動きだけ」などに決めつけず、実際の誤判定や利用者への影響を見ながら調整します。

ユーザー体験(UX)とのトレードオフ

セキュリティを厳しくしすぎると、人間にとっても「どれが信号機か分からない」「文字が読めない」というストレスになり、サイトから離脱してしまう原因になります。そのため、ユーザーに負担をかけない高度な判別システムの選定が重要です。

// reCAPTCHA v3のクライアント処理の概念例
// 登録済みサイトキーでapi.jsを読み込み済みとする
grecaptcha.ready(async () => {
  const token = await grecaptcha.execute("YOUR_SITE_KEY", { action: "contact" });
  // フォーム送信時にtokenを自分のサーバーへ送る
  // サーバーの検証が完了するまで投稿を受け付けない
});

サーバーでは秘密鍵を使ってトークンを検証し、成功状態に加え、想定するhostname・action・スコアを確認します。トークンは一度だけ検証でき、期限もあるため、操作の直前に取得します。サイトキーと違い秘密鍵はブラウザへ渡しません。

🛠️ CAPTCHAを賢く使うためのポイント

撫でてほしい場所を選ぶ茶トラのように、CAPTCHAにも「どの操作で確かめるか」という設計が必要です。投稿や登録など保護する操作を決め、解けない利用者が先へ進むための代替手段も用意しましょう。導入後は、不正アクセスと利用者のつまずきの両方を確認します。