このページでは、スコアを解釈してユーザーによる操作がもたらすリスクの度合いを把握し、サイトに対して適切な措置を講じる方法について説明します。
reCAPTCHA は、キーのタイプに関係なく、サイトとのインタラクションに基づいてリクエストごとにスコアを返します。reCAPTCHA からスコアを入手したら、そのスコアを解釈して、サイトで適切な対応を行う必要があります。
始める前に
評価を解釈する
バックエンドが reCAPTCHA にユーザーの reCAPTCHA レスポンス トークンを送信すると、次の例に示すように JSON レスポンスとして評価を受け取ります。
評価を解釈するには、次のパラメータを考慮します。
valid: 提供されたユーザー レスポンス トークンが有効かどうかを示します。valid = falseの場合、理由はinvalidReasonで指定されます。valid = falseは、ユーザーが課題の解決に失敗したか、siteKeyの不一致があることを意味する場合もあります。invalidReason:valid = falseの場合はレスポンスに関連付けられた理由。action: reCAPTCHA の検証をトリガーするユーザー インタラクション。expectedAction: 評価の作成時に指定した、予想されるユーザーのアクション。score: ユーザー インタラクションが与えるリスクのレベル。スコアが高いほどリスクが低くなります。reasons: reCAPTCHA がユーザー インタラクションをどのように解釈したかに関する追加情報。challenge: ポリシーベースのチャレンジキーのチャレンジに対するレスポンスを示します。指定可能な値:PASSED、FAILED、NOCAPTCHA。extendedVerdictReasons: リスク分析の判定に寄与する高度な推論。理由コードは、プロジェクトに請求先アカウントを追加して自動セキュリティ審査をトリガーした後に利用できるようになります。理由コードへのアクセスをリクエストするには、プロジェクトに請求先アカウントを追加します。
Enterprise サブスクリプションのプロジェクトからの評価には、高度な理由コードも付与されます。高度な理由の完全なリストと、その解釈方法については、アカウント担当者または Google Cloud 営業担当者にお問い合わせください。
{ "event":{ "expectedAction":"EXPECTED_ACTION", "userInfo":{ "accountId":"ACCOUNT_ID" }, "siteKey":"KEY_ID", "token":"TOKEN", "userAgent":"(USER-PROVIDED STRING)", "userIpAddress":"USER_PROVIDED_IP_ADDRESS" }, "name":"ASSESSMENT_ID", "riskAnalysis":{ "reasons":[], "extendedVerdictReasons":[], "score":"SCORE", "challenge":"PASSED" }, "tokenProperties":{ "action":"USER_INTERACTION", "createTime":"TIMESTAMP", "hostname":"HOSTNAME", "invalidReason":"(ENUM)", "valid":(BOOLEAN) } }
操作を確認する
JSON レスポンスには、execute() を呼び出すときにユーザー インタラクションとして指定した action パラメータと、評価の作成時に指定した expectedAction パラメータが含まれます。
action が expectedAction と一致することを検証します。たとえば、login ページで login アクションが返されます。不一致が存在する場合は、攻撃者が操作を偽装しようとしていることを示しています。ユーザー インタラクションに対して、追加の検証を行う、またはインタラクションをブロックするなどのアクションを講じて、不正なアクティビティを防止できます。
スコアを解釈する
reCAPTCHA のスコアリング システムは、以前のバージョンの reCAPTCHA からの拡張であり、より詳細なレスポンスを可能にします。reCAPTCHA には、0.0 から 1.0 までの値の範囲のスコアを持つ 11 のレベルがあります。スコア 1.0 は、インタラクションのリスクが低く、正当である可能性が非常に高いことを示します。一方で 0.0 は、インタラクションのリスクが高く、不正行為の可能性があることを示します。
11 レベルのうち、プロジェクトに請求先アカウントを追加して自動セキュリティ審査をトリガーする前に使用できるスコアレベルは、0.1、0.3、0.7、0.9 の 4 つのみです。
11 のスコアレベルへのアクセスをリクエストするには、プロジェクトに請求先アカウントを追加します。
SMS 防御のリスク スコアリングは、reCAPTCHA のグローバル スコアとは逆の動作をします。SMS 防御のリスクスコアが 0.0 の場合、SMS 通信不正利用が発生する信頼度が低いことを示します。リスクスコアが 1.0 の場合、SMS 通信不正利用が発生する信頼度が高いことを示します。
reCAPTCHA は、サイト上の実際のトラフィックをモニタリングすることで学習していきます。したがって、実装から 7 日以内にステージング環境で得られたスコアは、長期にわたって本番環境で得られたスコアと異なる場合があります。
スコアベースのキーをインストールした場合は、最初にアクションを行わずに reCAPTCHA を実行し、トラフィックを確認してしきい値を決定できます。
スコアに基づいて、サイトのコンテキストで適切なアクションを講じることができます。サイトをより適切に保護するには、トラフィックをブロックするのではなく、バックグラウンドでアクションを講じることをおすすめします。
次の表では、実行できる操作の一部を示します。
| ユースケース | アクション |
|---|---|
| ホームページ | スクレーパをフィルタリングしながら、管理コンソールにトラフィックの統合ビューを表示します。 |
| ログイン | スコアが低い場合は、MFA またはメール確認を必須にして、認証情報の盗み取り攻撃を回避します。 |
| ソーシャル | 不正行為者からの未承認の友達リクエストを制限し、危険性のあるコメントを管理者に送信します。 |
| e コマース | 実際の販売を bot に先だって実施し、危険性のあるトランザクションを特定します。 |
理由コード
理由コードは、プロジェクトに請求先アカウントを追加して自動セキュリティ審査をトリガーした後に利用できるようになります。理由コードへのアクセスをリクエストするには、プロジェクトに請求先アカウントを追加します。
一部のスコアは、reCAPTCHA がインタラクションをどのように解釈したのかについての詳細情報を示す理由コードが付加されて返される場合があります。
次の表に、理由コードと説明を示します。
| 理由コード | 説明 |
|---|---|
| AUTOMATION | 自動化されたエージェントの行動とインタラクションが一致しています。 |
| UNEXPECTED_ENVIRONMENT | イベントの発生元が不正な環境です。 |
| TOO_MUCH_TRAFFIC | イベント ソースからのトラフィック量が通常よりも多くなっています。 |
| UNEXPECTED_USAGE_PATTERNS | サイトのインタラクションが、想定したパターンと大きく異なっていました。 |
| LOW_CONFIDENCE_SCORE | このサイトから受信したトラフィック量が過少であるため、品質リスク分析を生成できません。 |
siteverify メソッドのレスポンス
siteverify メソッドのリクエスト、レスポンス、エラーコードの詳細については、以前の SiteVerify でユーザー レスポンス トークンを検証するをご覧ください。
次のステップ
- サイト固有のモデルに調整するには、評価 ID を Google に送り、真陽性と真陰性、または正しいエラーかどうかを確認します。詳細については、評価にアノテーションを付けるをご覧ください。