本頁面說明如何使用 Transaction Defense,有效防範付款交易遭受攻擊,例如盜刷、卡片竊取詐欺和帳戶入侵付款詐欺。
Transaction Defense 可找出針對性的人為攻擊和大規模詐欺行為,協助您防範付款交易出現詐欺情形。系統會自動訓練行為和交易模型,找出可能涉及詐欺的事件,避免接受後引發爭議或交易退單。
Transaction Defense 會檢查交易信號,偵測盜刷和交易退單攻擊。舉例來說,如果有一連串低價購買嘗試,可能代表發生盜刷攻擊。在回應中,您會收到不同類型詐欺行為的風險評分,可用於將交易送交人工審查,或直接封鎖可疑程度足夠的交易。
如要設定 Transaction Defense,請完成下列步驟:
準備環境。
使用先前選擇的前端整合或僅限 API 整合,從後端提交包含交易資料的
create assessmentAPI 要求。在
create assessmentAPI 要求的回應中,reCAPTCHA 會提供交易風險分數和額外的可解釋性原因 (例如HIGH_TRANSACTION_VELOCITY),如果有的話。-
您可以選擇允許交易、要求額外驗證、轉交人工審查,或封鎖交易。
事前準備
如果您是第一次使用 reCAPTCHA,請按照下列步驟操作:
在 Google Cloud 專案中設定 reCAPTCHA。
如果您打算整合前端,請確認環境支援大於 8 kB 的權杖,因為 Transaction Defense 可能會使用較大的權杖。
啟用 Transaction Defense
前往 Google Cloud 控制台的「reCAPTCHA」頁面。
確認專案名稱顯示在資源選取器中。
如果找不到專案名稱,請按一下資源選取器,然後選取專案。
按一下「設定」。
在「Transaction Defense」窗格中,按一下「設定」。
按一下「啟用」切換鈕,然後點選「儲存」。
選擇整合方法
選擇「前端整合」,即可自動納入前端裝置的信號;如果不想在前端整合,請選擇「僅限 API 整合」。
執行 JavaScript 時,reCAPTCHA 會為每個使用者工作階段產生專屬的 reCAPTCHA 權杖,並收集使用者行為數據來評估使用者。
僅限 API 的整合功能只會使用必要的交易資料傳回判定結果,不需要這個權杖。
前端整合:在網站上安裝 reCAPTCHA
使用 Transaction Defense 並整合 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 方法中的額外欄位,建立包含交易資料的評估。
如要透過前端整合取得 Transaction Defense 評估結果,請至少提供下列其中一項必要 ID 欄位:
為提升偵測品質,建議您新增選填欄位,例如 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" } } } }
如要提高評分品質,建議您一併傳送其他信號。
如要瞭解如何建立評估作業,請參閱「為網站建立評估作業」。Transaction Defense 可能會使用較大的權杖,因此請確認要求是以 POST 要求 (而非 GET) 傳送,且位於主體而非標頭中。
僅限 API 整合 - 使用交易資料建立評估
如要接收付款詐欺判定結果,請使用 projects.assessments.create 方法中的額外欄位,建立包含交易資料的評估。
由於 reCAPTCHA API-only Integration 只會使用您提供的交易資料產生 Transaction Defense 評估,因此您必須至少提供下列資訊:
{ "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" } } } }
為提高評分準確性,建議您盡可能提供更多輸入內容,並傳送其他信號。
解讀評估結果
開始傳送交易資料後,您會收到 JSON 回應形式的評估結果,其中包含 Assessment 回應中的 fraudPreventionAssessment 元件。
以下是回應範例:
{ "event": {.... .... } ..... .... .... "fraudPreventionAssessment": { "transactionRisk": 0.9, "riskReasons": [ { "reason": "HIGH_TRANSACTION_VELOCITY" } ] } }
您收到的回應中會有分數和原因代碼 (如適用)。分數越高,交易越有可能是有風險的詐欺活動。分數越低,交易越有可能屬於正當活動。舉例來說,0.9 分代表交易較可能是有風險的詐欺活動,0.1 分則代表交易較可能屬於正當活動。
您必須為根據評估結果採取的行動負責。如要採用最簡單的整合方式,可以在 transactionRisk 設定門檻,協助您做出決策。例如,這項功能可將疑似詐欺性的交易送交人工審查,或直接拒絕。您也可以在自己的詐欺工作流程中使用分數,或將分數做為現有系統規則的一部分。reCAPTCHA 會檢查獨特信號,並以獨特方式掌握網際網路上的行為,因此即使您已採用成熟的詐欺偵測引擎,仍可預期獲得額外價值。
每個分數區間都會校正為偽陽率上限,代表可能遇到額外阻礙的合法使用者比例上限。請根據業務需求選取門檻。以下舉例說明如何使用 transactionRisk 分數:
| 風險容忍度 | 建議閾值 | 偽陽率上限 | 應用實例 |
|---|---|---|---|
| 低 | 0.5 | 5% | 要求額外驗證 (例如雙重驗證),才能接受交易 |
| 中 | 0.7 | 1% | 將交易送交人工審查 |
| 高 | 0.9 | 0.1% | 拒絕交易 |
後續步驟
- 如要提高詐欺偵測品質,請參閱這篇文章,瞭解其他信號。
- 如要為評估作業加上註解,請參閱「使用交易事件為評估作業加上註解」。