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

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

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

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

reCAPTCHA の不正行為防止を設定するには、次の手順を行う必要があります。

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

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

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

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

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

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

始める前に

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

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

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

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

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

      [reCAPTCHA] に移動

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

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

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

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

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

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

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

攻撃の検出を開始するには、ユーザーによる決済フローの各ページにスコアベースの 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_methodcard_binvalue があります。検出品質を改善するには、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",
                    "Apt 1"
                ],
                "locality": "Sunnyvale",
                "administrative_area": "CA",
                "region_code": "USA",
                "postal_code": "123456"
            }
        }
    }
}

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

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

評価を解釈する

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

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

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

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

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

次のステップ