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