このページでは、トランザクション防御を使用して、カーディング、決済手段不正利用詐欺、アカウントの乗っ取りなどの支払いに関する不正行為から支払いトランザクションを効果的に保護する方法について説明します。
トランザクション防御は、標的型手動攻撃と大規模な不正行為の試みを特定することで、支払いトランザクションを保護するのに役立ちます。これにより行動やトランザクション モデルが自動的にトレーニングされ、不正行為である可能性が高く、承認された場合、紛争またはチャージバックにつながる可能性のあるイベントを特定できます。
これらのモデルの一部として、トランザクション防御は、トランザクション シグナルを調べて、カーディング攻撃とチャージバック攻撃を検出します。たとえば、低価格での購入がたて続けに試みられた場合は、カーディング攻撃を示している可能性があります。レスポンスでは、さまざまな種類の不正行為に対するリスク スコアリングを確認できます。これにより、トランザクションを手動審査に送信するか、不審なトランザクションを直接ブロックできます。
トランザクション防御を設定するには、次の手順を行う必要があります。
フロントエンド統合またはAPI のみの統合のいずれかを使用して、バックエンドからトランザクション データを含む
create assessmentAPI リクエストを送信します。create assessmentAPI リクエストのレスポンスで、reCAPTCHA はトランザクション リスクのスコアと、妥当な場合、追加の説明可能性の理由(HIGH_TRANSACTION_VELOCITYなど)を提供します。-
トランザクションを許可する、追加の確認を求める、手動審査に転送する、またはトランザクションをブロックすることを選択できます。
始める前に
reCAPTCHA を初めて使用する場合は、次の操作を行います。
フロントエンド統合を計画している場合は、トランザクション防御でより大きなトークンが使用される可能性があるため、環境で 8 kB を超えるトークンがサポートされていることを確認します。
トランザクション防御を有効にする
Google Cloud コンソールで、[reCAPTCHA] ページに移動します。
リソース セレクタにプロジェクトの名前が表示されていることを確認します。
プロジェクトの名前が表示されない場合は、リソース セレクタをクリックしてプロジェクトを選択します。
[設定] をクリックします。
[トランザクション防御] ペインで [構成] をクリックします。
[有効にする] 切り替えをクリックし、[保存] をクリックします。
統合方法を選択する
フロントエンド デバイスからのシグナルを自動的に組み込むには、[Frontend Integration] を選択します。フロントエンドに統合しない場合は、[API-only Integration] を選択します。
JavaScript が実行されると、reCAPTCHA はユーザー セッションごとに一意の reCAPTCHA トークンを生成し、ユーザーの行動データを収集してユーザーを評価します。
API のみの統合では、必要な取引データのみを使用して判定が返されるため、このトークンは必要ありません。
フロントエンドの統合 - ウェブサイトに reCAPTCHA をインストールする
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"></script>
コード ウィンドウの右上にある <> アイコンをクリックすると、JSFiddle でこのコードを試すことができます。
<html>
<head>
<title>Protected Payment</title>
<script src="https://www.google.com/recaptcha/enterprise.js"></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 メソッドの追加フィールドを使用して、トランザクション データで評価を作成します。
フロントエンド統合でトランザクション防御評価を受け取るには、次の必須識別子フィールドを 1 つ以上指定します。
検出品質を改善するには、payment_method、email、phone_number、billing_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": "US", "postal_code": "123456" } } } }
スコアの品質を改善するには、追加のシグナルも送信することをおすすめします。
評価の作成方法については、ウェブサイトの評価を作成するをご覧ください。トランザクション防御では、より大きなトークンが使用される可能性があるため、リクエストが GET ではなく POST リクエストに、ヘッダーではなく本文に送信されることを確認します。
API のみの統合 - トランザクション データを使用して評価を作成する
支払いに関する不正行為の判定を受け取るには、projects.assessments.create メソッドの追加フィールドを使用して、トランザクション データで評価を作成します。
reCAPTCHA API のみの統合では、提供されたトランザクション データのみを使用してトランザクション防御評価が生成されるため、少なくとも次の情報を提供する必要があります。
{ "event": { "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": { "account_id": "abcde12345", "email": "someEmailAddress@example.com", "phone_number": "+18005550175" }, "billing_address": { "recipient": "name1 name2", "address": [ "123 Street Name", "Apt 1" ], "locality": "Sunnyvale", "administrative_area": "CA", "region_code": "US", "postal_code": "123456" } } } }
スコアの品質を改善するには、できるだけ多くの入力を提供し、追加のシグナルを送信することをおすすめします。
評価を解釈する
トランザクション データの送信を開始すると、Assessment レスポンスに fraudPreventionAssessment コンポーネントを含む JSON レスポンスとして評価が返されます。
レスポンスの例を次に示します。
{ "event": {.... .... } ..... .... .... "fraudPreventionAssessment": { "transactionRisk": 0.9, "riskReasons": [ { "reason": "HIGH_TRANSACTION_VELOCITY" } ] } }
レスポンスには、該当する場合はスコアと理由コードが含まれます。 スコアが高いほど、トランザクションが不正でリスクが高い可能性が高くなり、スコアが低いほど、トランザクションが正当である可能性が高くなります。たとえば、スコアが 0.9 はトランザクションが不正でありリスクが高いことを示し、スコアが 0.1 はトランザクションが正当である可能性が高いことを示します。
評価に基づいて実行するアクションは、お客様の責任となります。最も簡単な統合の場合、transactionRisk でしきい値を設定して判断に役立たせることができます。たとえば、手動審査に送信することや、不正行為の可能性のあるトランザクションを直接拒否することなどに役立ちます。このスコアは、お客様自身の不正行為のワークフローで、または既存のシステムのルールの一部として使用することもできます。reCAPTCHA はユニークなシグナルを検査し、インターネット全体でユニークな動作を可視化しているため、すでに成熟した不正検出エンジンであっても増分値を期待できます。
各スコアバケットは、最大誤検知率(追加の摩擦を経験する可能性のある正規ユーザーの最大割合)に調整されます。選択する必要があるしきい値は、ビジネスニーズによって異なります。transactionRisk スコアの使用例を次に示します。
| リスク許容度 | 推奨のしきい値 | 最大偽陽性率 | 使用例 |
|---|---|---|---|
| 低 | 0.5 | 5% | 取引を承認する前に、2 要素認証(2FA)などの追加の確認を求める |
| 中 | 0.7 | 1% | トランザクションを手動審査に送信する |
| 高 | 0.9 | 0.1% | 取引を拒否する |
次のステップ
- 不正行為検出の品質を改善するには、追加のシグナルをご覧ください。
- 評価にアノテーションを付加するには、トランザクション イベントで評価にアノテーションを付加するをご覧ください。