이 페이지에서는 reCAPTCHA 사기 방지를 사용하여 카딩(carding), 도용된 결제 수단 사기, 계정 탈취 결제와 같은 공격으로부터 결제 트랜잭션을 효과적으로 보호하는 방법을 설명합니다.
reCAPTCHA 사기 방지는 타겟팅된 수동 공격과 확장된 사기 시도를 식별하여 결제 트랜잭션을 보호하는 데 도움이 됩니다. 사기일 가능성이 높은 이벤트를 식별하도록 행동 및 트랜잭션 모델을 자동으로 학습시키며, 수락 시 분쟁 또는 지불 거절이 발생할 수 있습니다.
reCAPTCHA 사기 방지는 이러한 모델의 일부로 트랜잭션 신호를 검사하여 사기를 감지합니다. 예를 들어 일련의 저가 구매 시도는 카딩 공격을 나타낼 수 있습니다. 응답으로 여러 유형의 사기에 대한 위험 점수가 전송되며, 이 점수를 사용하여 트랜잭션을 수동 검토를 위해 보내거나 충분히 의심스러운 트랜잭션을 직접 차단할 수 있습니다.
reCAPTCHA 사기 방지를 설정하려면 다음 단계를 완료해야 합니다.
프런트엔드 기기의 신호를 자동으로 통합하려면 프런트엔드 통합을 선택하고, 프런트엔드에서 통합하지 않으려면 API 전용 통합을 선택합니다.
JavaScript가 실행되면 reCAPTCHA에서 모든 사용자 세션에 고유한 reCAPTCHA 토큰을 생성하고 사용자 행동 데이터를 수집하여 사용자를 평가합니다.
API 전용 통합은 필수 거래 데이터만 사용하여 평결을 반환하며 이 토큰이 필요하지 않습니다.
이전에 선택한 프런트엔드 통합 또는 API 전용 통합을 사용하여 트랜잭션 데이터와 함께 백엔드에서
create assessmentAPI 요청을 제출합니다.create assessmentAPI 요청의 응답에서 reCAPTCHA는 트랜잭션 위험 점수와 추가 설명 가능성 이유(예:HIGH_TRANSACTION_VELOCITY)를 제공합니다(해당하는 경우).-
트랜잭션을 허용하거나 추가 확인을 요청하거나 수동 검토로 전달하거나 트랜잭션을 차단할 수 있습니다.
시작하기 전에
reCAPTCHA를 처음 사용하는 경우 다음을 수행합니다.
프런트엔드 통합을 계획하는 경우 reCAPTCHA 사기 방지에서 더 큰 토큰을 사용할 수 있으므로 환경에서 8kB보다 큰 토큰을 지원하는지 확인합니다.
reCAPTCHA 사기 방지 사용 설정
Google Cloud 콘솔에서 reCAPTCHA 페이지로 이동합니다.
리소스 선택기에 프로젝트 이름이 표시되는지 확인합니다.
프로젝트 이름이 표시되지 않으면 리소스 선택기를 클릭한 다음 프로젝트를 선택합니다.
설정 클릭합니다.
사기 방지 창에서 구성을 클릭합니다.
사용 설정 전환 스위치를 클릭하고 저장을 클릭합니다.
프런트엔드 통합 - 웹사이트에 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" 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 사기 방지에서 더 큰 토큰을 사용할 수 있으므로 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": "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% | 거래를 수락하기 전에 2단계 인증과 같은 추가 인증 필요 |
| 보통 | 0.7 | 1% | 거래를 수동 검토로 전송 |
| 높음 | 0.9 | 0.1% | 거래 거부 |
다음 단계
- 사기 감지 품질을 개선하려면 추가 신호를 알아보세요.
- 평가에 주석을 추가하려면 평가에 트랜잭션 이벤트 주석 추가를 참조하세요.