CAPTCHA
CAPTCHA
Webサイトなどで、操作しているのが人間か、ボットなどの自動化された機械(プログラム)かを判別する仕組みのこと。悪質な自動アクセスやスパム投稿を防ぐために導入されます。
🐾 猫で例えると?
お腹を見せる茶トラが「いつもの機械的な動きではなく、こちらの反応を見て撫でて」と確かめている、と想像してみましょう。CAPTCHAも課題への応答や利用状況から自動操作らしさを判断します。ただし、通過しても本人確認や善意の証明にはなりません。
💻 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だけで自動アクセスを完全に止められるわけではありません。
- 保護する操作を決める: フォーム送信など実際に制限したい処理でサーバー検証を行います。画面に置くだけで安心せず、直接その処理へアクセスされても回避できないことを確認します。
- 代替手段の用意: アクセシビリティの観点から、視覚的な画像認証だけでなく、音声で数字を読み上げるような音声認証の選択肢も提供することが望ましいです。
撫でてほしい場所を選ぶ茶トラのように、CAPTCHAにも「どの操作で確かめるか」という設計が必要です。投稿や登録など保護する操作を決め、解けない利用者が先へ進むための代替手段も用意しましょう。導入後は、不正アクセスと利用者のつまずきの両方を確認します。