reCAPTCHA v3について調べて欲しいとお達しがあったので、調べました。reCAPTCHA v2とv3で、思想の違いが垣間見えて面白かったです。せっかくなので、調べた内容を記事にしました。
- 調査の経緯
- 結論
- reCAPTCHA v3とは
- reCAPTCHA v1とv2の紹介
- reCAPTCHA v2とv3の違い
- 低スコアが付く可能性のある操作は分からない
- reCAPTCHA v2とv3の使い分け
- テストについて
- まとめ
- その他の参考サイト
調査の経緯
reCAPTCHA v3をローカルで導入したが、どんなテストをしたら良いのか分からないので調べて欲しいとのことでした。詳しく聞いてみると、reCAPTCHA v3を導入したのはいいもののbotを弾くところを再現できないので、botを弾くロジックを知りたいということでした。
余談ですが、「reCAPTCHA v3」という単語を聞いたとき、仮面ライダーが思い浮かびました。
結論
reCAPTCHA v3は、トークンチェックの結果とアクションとスコアを返します。botを弾くロジックは、自分たちのサーバーに自分たちで実装します。導入しただけでは、botを弾きません。
reCAPTCHA v3とは
構成
分かりやすい構成図があったので、下記の参考サイトを参照ください。
構成をテキストで表すと以下です。
- ユーザ:送信ボタンをクリック
- クライアント:サイトキーを使ってGoogleサーバにトークンを要求
- Googleサーバ:トークン発行
- クライアント:トークンと入力データをセットにして自サーバに送信
- 自サーバ:シークレットキーを使ってGoogleサーバにトークンをチェックしてもらう
- Googleサーバ:OK,NGを自サーバに返す
- OKの場合は、アクションとスコアも返す
- 自サーバ:OKの場合、スコアをチェック
- 自サーバ:スコアチェックがONの場合、次の処理に進む
メリット
- ユーザが認証操作しなくて良い
- AIによってスコアの精度が上がる
- 学習させるため、複数のページに導入すると良い
デメリット
サイト運営者の運用負担が大きい。
- 閾値の検討
- bot判定した場合の処理を実装する
- サイト運営者側でbotによる攻撃への対応をする
- ログインフォームの場合:2段階認証など
- コメントフォームの場合:管理者が確認するまで、掲示板に掲載しない
reCAPTCHA v1とv2の紹介
- v1:歪んだ文字が書かれている画像を見て、何が書かれているのか入力して認証する。
- v2:「○○の画像を選択して、確認をクリックしてください。」で認証する。
reCAPTCHA v2とv3の違い
- v2:人間だけ認証を通す
- v3:全員通してスコアを付ける
低スコアが付く可能性のある操作は分からない
テストをしている方がいたので、そちらの記事を参照してください。
結論、どのような操作をするとスコアが低くなるのかは分かりません。
reCAPTCHA v2とv3の使い分け
v2とv3でユーザの操作が変わります。そのため、2つを使い分けることも考えられます。例えば、人間なのにv3でbotだと判断されて弾かれた場合に、次の認証としてv2を使うということができます。
テストについて
テスト箇所として大雑把に以下の2つを挙げます。
- トークンチェック時
- スコアによる判定時
- スコアに応じて自前で実装
まとめ
認証するときに行っていた「○○の画像を選択して、確認をクリックしてください。」に名前があるとことを初めて知りました。今回、調べてみていい勉強になりました。v2とv3で思想の違いを知りました。