不正行為防止で支払いトランザクションを保護する

このページでは、reCAPTCHA Enterprise の不正行為防止を使用して、カーディング、 決済手段不正利用詐欺、アカウントの乗っ取りなどの不正行為から支払いトランザクションを効果的に保護する方法について説明します。

reCAPTCHA Enterprise の不正行為防止は、標的型手動攻撃と大規模な不正行為の試みを特定することで、支払いトランザクションを保護するのに役立ちます。これにより行動やトランザクション モデルが自動的にトレーニングされ、不正行為である可能性が高く、承認された場合、紛争またはチャージバックにつながる可能性のあるイベントを特定できます。

こうしたモデルの一環として、reCAPTCHA Enterprise の不正防止は、トランザクションのシグナルを調べて不正行為の検出を可能にします。たとえば、低価格の一連の購入試行は、カーディング攻撃を示している可能性があります。レスポンスでは、さまざまな種類の不正行為に対するリスクスコアを確認できます。これにより、トランザクションを手動審査に送信するか、不審なトランザクションを直接ブロックできます。

reCAPTCHA Enterprise の不正行為防止を設定するには、次の手順を行います。

  1. 支払いフロントエンドに reCAPTCHA Enterprise をインストールします。

  2. トランザクション データを使用して評価を作成します

  3. トランザクション イベントで評価にアノテーションを付けます

  4. 回答を解釈し、不正行為の可能性に対処します。

準備

  1. reCAPTCHA Enterprise の不正行為対策の料金情報を確認します。

  2. reCAPTCHA Enterprise の環境を準備します

  3. スコアベースのキーを作成する

  4. 統合で 8 KB を超えるトークンがサポートされていることを確認します。reCAPTCHA Enterprise の不正行為防止では、より大きなトークンが使用される可能性があるため、GET ではなくPOST リクエストで送信され、ヘッダーではなくボディで送信されることを確認してください。

支払いフロントエンドに reCAPTCHA Enterprise をインストールする

攻撃の検出を開始するには、ユーザーによる決済フローの各ページにスコアベースのサイトキーをインストールします。これには、ユーザーがカートを確認し、お支払い方法を選択して購入を完了するインターフェースが含まれます。ユーザーが各ステップを選択したら、grecaptcha.enterprise.execute() を呼び出してトークンを生成します。スコアベースのキーをインストールして execute() を呼び出す方法については、スコアベースのキーのインストールをご覧ください。

次の例は、スコアベースのキーをクレジット カード トランザクション イベントに統合する方法を示しています。

function submitForm() {
  grecaptcha.enterprise.ready(function() {
    grecaptcha.enterprise.execute(
      'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
       document.getElementById("token").value = token;
       document.getElementByID("paymentForm").submit();
    });
  });
}
<form id="paymentForm" action="?" method="POST">
  Total: $1.99
  Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
  <input type="hidden" id="token" name="recaptcha_token"/>
  <button onclick="submitForm()">Purchase</button>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>

コード ウィンドウの右上にある <> アイコンをクリックすると、JSFiddle でこのコードを試すことができます。

<html>
  <head>
    <title>Protected Payment</title>
    <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
    <script>
    function submitForm() {
      grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute(
          'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
           document.getElementById("token").value = token;
           document.getElementByID("paymentForm").submit();
        });
      });
    }
    </script>
  </head>
  <body>
    <form id="paymentForm" action="?" method="POST">
      Total: $1.99
      Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
      <input type="hidden" id="token" name="recaptcha_token"/>
      <button onclick="submitForm()">Purchase</button>
    </form>
  </body>
</html>

トランザクション データを使用して評価を作成する

支払いの不正行為の判定を有効にするには、projects.assessments.create メソッドの追加フィールドを使用してトランザクション データによる評価を作成します。この機能を使用するには、組織で Google が有効にする必要があります。この機能へのアクセスをリクエストするには、Google にお問い合わせください。

最も簡単な統合は、トランザクション ID、お支払い方法、通貨、トランザクション値です。

{
  "event": {
    "token": "YOUR_TOKEN",
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
      "transaction_id": "txid-1234567890",
      "payment_method": "credit-card",
      "card_bin": "411111",
      "card_last_four": "1234",
      "currency_code": "USD",
      "value": 39.98,
    }
  }
}

次のフィールドは省略可能ですが、不正行為の検出品質を向上させるために、これらのフィールドを指定することをおすすめします。

{
  "event": {
    "token": "YOUR_TOKEN",
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
      "transaction_id": "txid-1234567890",
      "payment_method": "credit-card",
      "card_bin": "411111",
      "card_last_four": "1234",
      "currency_code": "USD",
      "value": 39.98,
      "shipping_value": 7.99,
      "shipping_address": {
        "recipient": "name1 name2",
        "address": "123 Street Name",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
      },
      "billing_address": {
        "recipient": "name1 name2",
        "address": "123 Street Name",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
      },
      "user": {
        "account_id": "abcde12345",
        "creation_ms": 1650000000000,
        "email": "user@example.com",
        "email_verified": true,
        "phone_number": "+16502530000",
        "phone_verified" false
      },
      "merchant": {
        "account_id": "abcde12345",
        "creation_ms": 1650000000000,
        "email": "user@example.com",
        "email_verified": true,
        "phone_number": "+16502530000",
        "phone_verified": false
      },
      "items": {
        "name": "first item",
        "value": 19.99,
        "quantity": 1,
        "merchant_account_id": "abcde12345",
      },
      "items": {
        "name": "second item",
        "value": 19.99,
        "quantity": 1,
        "merchant_account_id": "abcde12345",
      },
      "gateway_info": {
        "name": "google",
        "gateway_response_code": "SUCCESS",
        "avs_response_code": "Y",
        "cvv_response_code": "Y",
      }
    }
  }
}

評価の作成方法については、ウェブサイトの評価を作成するをご覧ください。

トランザクション イベントで評価にアノテーションを付けます。

最高のパフォーマンスを得るには、reCAPTCHA Enterprise 不正行為防止でトランザクションの支払いライフサイクル イベントを可視化する必要があります。したがって、トランザクション データで作成した評価用のアノテーションを送信する必要があります。たとえば、次のシナリオでは、トランザクション情報をトランザクション イベントとして reCAPTCHA Enterprise Fraud Prevention に提供する必要があります。

  • 決済機関が取引を承認または拒否する

  • 販売者が払い戻しを行う

  • 支払い発行者が払い戻しを行う

アノテーションの送信方法については、評価へのアノテーション付けをご覧ください。

これらのリクエストは、データが使用可能になったとき(トランザクションのステータスが変更されたときなど)に、システム内の対応するロジックの一部として自動的に行うことをおすすめします。

トランザクション データを含めて評価を作成すると、reCAPTCHA Enterprise の不正行為防止で判定結果と assessment_id が返されます。支払いライフサイクルで発生した次の重要な段階で、トランザクション イベントの評価にアノテーションを付けます。

イベントタイプ 説明 理由の例 値の例
MERCHANT_APPROVE | MERCHANT_DENY トランザクションの続行を許可するかどうかを決定するとき。 IN_HOUSE 該当なし
AUTHORIZATION | AUTHORIZATION_DECLINE 処理するトランザクションを送信し、カード発行者がトランザクションの続行を許可するかどうかを決定するとき。 82(CVV が正しくかったことを意味する理由コード) 該当なし
CHARGEBACK トランザクションがチャージバックされたとき。 Card Reported Stolen 20(20 単位の通貨の一部チャージバックを表す)

CHARGEBACK イベントタイプとともに、reason フィールドを使用してカード発行者から提供されるチャージバック理由コードを含めます。また、トランザクションが部分的にチャージバックされた場合は、value フィールドにチャージバックの金額を含めます。

トランザクション イベント reason フィールドに、イベントの理由をわかりやすく説明する条件を含めるか、支払いネットワークまたはカード発行者から直接取得した理由コードを指定します。これらの用語とコードは、イベントの種類によって異なります。

次の表は、トランザクション イベントタイプの完全なリストを示しています。

アノテーションの理由 説明
MERCHANT_APPROVE トランザクションが販売者によって承認されていることを示します。付随する理由には、IN_HOUSEACCERTIFYCYBERSOURCEMANUAL_REVIEW などの用語が含まれます。
MERCHANT_DENY 販売者によって検出されたリスクにより、トランザクションが拒否され、終了したことを示します。付随する理由には、IN_HOUSEACCERTIFYCYBERSOURCEMANUAL_REVIEW などの用語が含まれます。
MANUAL_REVIEW 疑念やリスクがあるために人間がトランザクションを評価していることを示します。
AUTHORIZATION カード発行元による承認の試行が成功したことを示します。
AUTHORIZATION_DECLINE カード発行元による承認の試行が失敗したことを示します。付随する理由には、カードが期限切れであることを表す Visa の 54 や、CVV が正しくないことを示す 82 などがあります。
PAYMENT_CAPTURE 資金が決済されたため、トランザクションが完了したことを示します。
PAYMENT_CAPTURE_DECLINE 資金が決済されていないため、トランザクションを完了できなかったことを示します。
CANCEL トランザクションがキャンセルされたことを示します。キャンセルの理由を指定します。例: INSUFFICIENT_INVENTORY
CHARGEBACK_INQUIRY 不正チャージバックが正式に発行されたり、正式なチャージバック通知が送信される前に、販売者がトランザクションの不正行為に関するチャージバックの問い合わせを受け取ったことを示します。
CHARGEBACK_ALERT 販売者がトランザクションの不正行為によるチャージバック アラートを受け取ったことを示します。支払いネットワークを介さずに紛争を解決するプロセスが開始されます。
FRAUD_NOTIFICATION トランザクションに不正行為があるように見えるため、決済手段の発行銀行からそのトランザクションに対して不正通知が発行されたことを示します。このイベントタイプでは、reason フィールドに TC40 データまたは SAFE データを含めることをおすすめします。部分的なチャージバックについては、value フィールドに金額を含めることをおすすめします。
CHARGEBACK 不正行為によりトランザクションでチャージバック プロセスが開始されたことを、支払いネットワークから販売者に通知していることを示します。理由の例には、おすすめの 60056041 などがあります。部分的なチャージバックについては、value フィールドに金額を含めることをおすすめします。
CHARGEBACK_REPRESENTMENT 不正行為によりチャージバック プロセスに入ったことと、販売者が代理処理に入る選択をしたことを示します。理由の例には、おすすめの 60056041 などがあります。部分的なチャージバックについては、value フィールドに金額を含めることをおすすめします。
CHARGEBACK_REVERSE トランザクションに不正なチャージバックがあり、結果として不正となり取り消されたことを示します。部分的なチャージバックについては、value フィールドに金額を含めることをおすすめします。
REFUND_REQUEST 完了したトランザクションに対して、販売者が払い戻しを受け取ったことを示します。一部払い戻しの場合は、value フィールドに金額を含めることをおすすめします。理由の例: FRAUD
REFUND_DECLINE 販売者がこのトランザクションに対する払い戻しリクエストを受け取ったものの、拒否したことを示します。一部払い戻しの場合は、value フィールドに金額を含めることをおすすめします。理由の例: FRAUD
REFUND 完了したトランザクションが販売者によって払い戻しされたことを示します。一部払い戻しの場合は、value フィールドに金額を含めることをおすすめします。理由の例: PROACTIVE_FRAUD
REFUND_REVERSE 完了したトランザクションが販売者によって払い戻しされ、この払い戻しが取り消されたことを示します。一部払い戻しの場合は、value フィールドに金額を含めることをおすすめします。

次の例は、トランザクション イベントを含むアノテーション ペイロードのサンプルを示しています。詳細については、評価へのアノテーション付けをご覧ください。

POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
{
  "transaction_event": {
    "event_type": "CHARGEBACK",
    "reason": "Card Reported Stolen",
    "value": 20
  }
}

評価を解釈する

トランザクション データの送信を開始すると、riskAnalysis レスポンスに fraudPreventionAssessment コンポーネントが表示されます。

fraudPreventionAssessment コンポーネントには、トランザクション リスクスコアと、さまざまな攻撃の種類を特定する複数の不正行為スコアが含まれています。reCAPTCHA Enterprise の不正行為防止 transactionRisk スコアの範囲は 0.0~1.0 で、このトランザクションに関連するリスクを後述のコンポーネントから要約したものです。リスクスコア 0.0 はリスクが低く、トランザクションが正当である可能性が高いことを示し、スコア 1.0 はリスクが高く、インタラクションが不正である可能性が高いことを示します。

reCAPTCHA Enterprise の不正行為防止をインストールし、TransactionData コンポーネントを追加すると、cardTestingVerdict 値にアクセスできます。これは、ウェブサイトを使用して決済手段不正利用やブルートのリストをテストする攻撃者を検出します。攻撃者が成功すると、お客様のビジネスの損失につながります。

また、behavioralTrustVerdict 値にもアクセスできます。これは、サイトとインターネット上での動作シグナルに基づいてセッションの信頼度を示すものです。このスコアは、既存の不正行為エンジンを使用していて、誤検出を減らす場合に特に役立ちます。このスコアには、トランザクション データに基づいて従来の検出に固有の情報と直交する情報が含まれているため、特定の異なるリスクの高いトランザクションや中立的なトランザクションで信頼度を高めるのに効果的です。

チャージバック情報を含むライフサイクル イベントを送信すると、stolenInstrumentVerdict 値にアクセスできるようになります。これは、reCAPTCHA Enterprise がトランザクションと、数百万のウェブサイトのネットワークでのユーザーの行動を分析するシグナルに基づき、非常に小規模であっても、不正である可能性が高い攻撃を検出します。

追加のスコア(決済手段不正利用リスク、カードテスト リスク)へのアクセスは、セキュリティ審査後に有効になります。セキュリティ レビューを開始する場合は、Google のセールスチームにお問い合わせください

次のブロックは、transactionRiskcardTestingVerdictstolenInstrumentVerdictbehavioralTrustVerdict の値を含むレスポンスの例を示しています。

"riskAnalysis": {
    "score": "BOT_SCORE"
}
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "stolenInstrumentVerdict": {
        "risk": 0.7
    },
    "cardTestingVerdict": {
        "risk": 1.0
    }
    "behavioralTrustVerdict": {
        "trust": 0.0
    }
}

評価に基づいて実行するアクションは、お客様の責任となります。最も簡単に統合するために、トップレベルの transactionRisk でしきい値を設定し、判断に貢献します。たとえば、手動審査に送信することや、不正行為の可能性のあるトランザクションを直接拒否することなどが考えられます。また、これらのスコアを独自の不正行為ワークフローで使用することも、既存のシステムでルールの一部として使用することもできます。reCAPTCHA Enterprise はさまざまなシグナルを検討し、動作の可視性が異なるため、すでに成熟した検出エンジンを使用している場合でも、増分値を期待できます。

次のステップ