人の操作か自動操作かを見分けるCAPTCHA

CAPTCHAは、人間には簡単で機械には解きにくい問いを出し、自動化されたプログラムによる不正な操作を見分ける仕組みです。

「信号機が写っている画像をすべて選んでください」「ゆがんだ文字を読み取って入力してください」。会員登録やログインの途中で出てくるこの問いかけが、CAPTCHA(キャプチャ)です。

CAPTCHAは、フォームなどを操作しているのが人間かプログラムかを見分けるための問いかけです。遊園地の入場口で、係員が「この絵に写っている動物は?」のような、人にはすぐ答えられる問いを一つはさむ場面を想像してください。人は難なく通れますが、機械仕掛けの人形はとっさに答えられず立ち止まる。会員登録やお問い合わせのフォームは誰でも送信できるので、そのままだと自動プログラムに大量に送りつけられることがあります。CAPTCHAは、そうした自動の操作をふるい落とします。

置く場所と強さの決め方

置き場所としてよく選ばれるのは、次のようなところです。

  • 会員登録フォーム。自動プログラムによる大量登録を防ぐ
  • ログイン画面。レートリミットと組み合わせて、パスワードの総当たりを抑える
  • チケット予約やキャンペーン応募。転売目的の自動購入を防ぐ
  • 問い合わせフォームやコメント欄。迷惑投稿を減らす

問いを難しくすれば機械は通りにくくなりますが、正規の利用者まで途中で帰ってしまいます。目や耳が不自由な人のために、音声の読み上げなどの代わりの手段も要ります。フォームの重要度に合わせて、強さを調整してください。すり抜けを請け負う自動化サービスも存在するので、置けば完全に防げると考えないことも大切です。

CAPTCHAが見分けるのは「人か機械か」だけで、「本人かどうか」ではありません。ログインを安全にしたいなら、二要素認証のような本人確認の仕組みを別に組み合わせます。回数で絞るレートリミットとも役割が違います。