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