Fraud Prevention で支払いトランザクションを保護する

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

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

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

reCAPTCHA Enterprise Fraud Prevention を設定するには、次の手順を行う必要があります。

  1. スコアベースの reCAPTCHA キーをインストールして、支払いフロントエンドに reCAPTCHA Enterprise JavaScript をインストールします

    JavaScript が実行されると、reCAPTCHA はユーザー セッションごとに一意の reCAPTCHA トークンを生成し、ユーザーを評価するためにユーザーの行動データを収集します。

  2. 支払いワークフローでのユーザー イベントに関するトランザクション データとともに、バックエンドから評価 API 作成リクエストを送信します

    評価 API 作成リクエストのレスポンスで、reCAPTCHA Enterprise はトランザクション リスクのスコアと、妥当な場合、追加の理由コード(suspected_carding など)を提供します。

  3. スコアに基づいて、ユーザーの次のアクションを決定する

    トランザクションを許可する、追加の確認を求める、手動審査に転送する、またはトランザクションをブロックすることを選択できます。

始める前に

  1. reCAPTCHA Enterprise を初めて使用する場合は、次の手順を行います。

    1. Google Cloud プロジェクトで reCAPTCHA Enterprise を構成します

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

  2. Google Cloud プロジェクトで reCAPTCHA Fraud Prevention を有効にします。

    1. Google Cloud コンソールで、[reCAPTCHA Enterprise] ページに移動します。

      [reCAPTCHA Enterprise] に移動

    2. リソース セレクタにプロジェクトの名前が表示されていることを確認します。

      プロジェクトの名前が表示されない場合は、リソース セレクタをクリックしてプロジェクトを選択します。

    3. [設定] をクリックします。

    4. [Fraud Prevention] ペインで [構成] をクリックします。

    5. [有効にする] をクリックし、[保存] をクリックします。

  3. reCAPTCHA Enterprise Fraud Prevention ではより大きなトークンが使用される可能性があるため、環境で 8 KB を超えるトークンがサポートされていることを確認します。

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

攻撃の検出を開始するには、ユーザーによる決済フローの各ページにスコアベースの reCAPTCHA キーをインストールします。これには、ユーザーがカートを確認し、お支払い方法を選択して購入を完了するインターフェースが含まれています。各手順でユーザーが選択を行ったら、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 メソッドの追加フィールドを使用して、トランザクション データで評価を作成します。

最も単純な統合には、transaction_idpayment_methodcurrency_codevalue があります。検出品質を改善するには、emailbilling_address などのオプション フィールドを追加することをおすすめします。

{
  "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,
    }
   user: {
    email: "someEmailAddress@example.com",
   },
   billing_address: {
    "recipient": "name1 name2",
        "address": "123 Street Name",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
  }
 }
}

スコアの品質を改善するには、追加のシグナルを送信することをおすすめします。

評価の作成方法については、ウェブサイトの評価を作成するをご覧ください。reCAPTCHA Enterprise Fraud Prevention では、より大きなトークンが使用される可能性があるため、リクエストが GET ではなく POST リクエストに、ヘッダーではなく本文に送信されるようにします。

評価を解釈する

トランザクション データの送信を開始すると、riskAnalysisfraudPreventionAssessment コンポーネントを含む JSON レスポンスとして評価が返されます。

レスポンスの例を次に示します。

{
  "event": {....
  ....
  }
  .....
  ....
  ....
"riskAnalysis": {
    "score": "0.5"
    "reasons": SUSPECTED_CARDING
}
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
}
}

返されたレスポンスには、スコアと理由コードが含まれています(該当する場合)。スコアが高いほど、トランザクションが不正でリスクが高い可能性が高くなり、スコアが低いほど、トランザクションが正当である可能性が高くなります。たとえば、スコアが 0.9 はトランザクションが不正でありリスクが高いことを示し、スコアが 0.1 はトランザクションが正当である可能性が高いことを示します。

評価に基づいて実行するアクションは、お客様の責任となります。最も簡単な統合の場合、transactionRisk でしきい値を設定して判断に役立たせることができます。たとえば、手動審査に送信することや、不正行為の可能性のあるトランザクションを直接拒否することなどに役立ちます。このスコアは、お客様自身の不正行為のワークフローで、または既存のシステムのルールの一部として使用することもできます。reCAPTCHA Enterprise はユニークなシグナルを検査し、インターネット全体でユニークな動作を可視化しているため、すでに成熟した不正検出エンジンであっても増分値を期待できます。

次のステップ