사기 방지를 통한 결제 트랜잭션 보호

이 페이지에서는 reCAPTCHA Enterprise 사기 방지를 사용하여 카딩, 도용된 기기 사기, 계정 탈취 결제와 같은 공격으로부터 결제 트랜잭션을 효과적으로 보호하는 방법을 설명합니다.

reCAPTCHA Enterprise 사기 방지는 타겟팅된 수동 공격과 확장된 사기 시도를 식별하여 결제 트랜잭션을 보호하는 데 도움이 됩니다. 사기일 가능성이 높은 이벤트를 식별하도록 행동 및 트랜잭션 모델을 자동으로 학습시키며, 수락 시 분쟁 또는 지불 거절이 발생할 수 있습니다.

reCAPTCHA Enterprise 사기 방지는 이러한 모델의 일부로 트랜잭션 신호를 검사하여 사기를 감지합니다. 예를 들어 일련의 저가 구매 시도는 카딩 공격을 나타낼 수 있습니다. 응답으로 여러 유형의 사기에 대한 위험 점수가 전송되며, 이 점수를 사용하여 트랜잭션을 수동 검토를 위해 보내거나 충분히 의심스러운 트랜잭션을 직접 차단할 수 있습니다.

reCAPTCHA Enterprise 사기 방지를 설정하려면 다음 단계를 완료해야 합니다.

  1. 점수 기반 reCAPTCHA 키를 설치하여 결제 프런트엔드에 reCAPTCHA Enterprise JavaScript를 설치합니다.

    JavaScript가 실행되면 reCAPTCHA에서 모든 사용자 세션에 고유한 reCAPTCHA 토큰을 생성하고 사용자 행동 데이터를 수집하여 사용자를 평가합니다.

  2. 결제 워크플로의 사용자 이벤트에 대한 트랜잭션 데이터를 사용하여 백엔드에서 평가 생성 API 요청을 제출합니다.

    평가 생성 API 요청의 응답에서 reCAPTCHA Enterprise는 트랜잭션 위험 점수와 추가 이유 코드(예: suspected_carding)를 제공합니다(해당하는 경우).

  3. 점수에 따라 사용자의 다음 작업을 결정합니다.

    트랜잭션을 허용하거나 추가 확인을 요청하거나 수동 검토로 전달하거나 트랜잭션을 차단할 수 있습니다.

시작하기 전에

  1. reCAPTCHA Enterprise를 처음 사용하는 경우 다음을 수행합니다.

    1. Google Cloud 프로젝트에서 reCAPTCHA Enterprise를 구성합니다.

    2. 점수 기반 reCAPTCHA 키를 만듭니다.

  2. Google Cloud 프로젝트에서 reCAPTCHA 사기 방지를 사용 설정합니다.

    1. Google Cloud 콘솔에서 reCAPTCHA Enterprise 페이지로 이동합니다.

      reCAPTCHA Enterprise로 이동

    2. 리소스 선택기에 프로젝트 이름이 표시되는지 확인합니다.

      프로젝트 이름이 표시되지 않으면 리소스 선택기를 클릭한 다음 프로젝트를 선택합니다.

    3. 설정 클릭합니다.

    4. 사기 방지 창에서 구성을 클릭합니다.

    5. 사용 설정 전환 스위치를 클릭하고 저장을 클릭합니다.

  3. reCAPTCHA Enterprise 사기 방지에서 더 큰 토큰을 사용할 수 있으므로 환경에서 8KB보다 큰 토큰을 지원하는지 확인합니다.

결제 프런트엔드에 reCAPTCHA Enterprise 설치

공격 감지를 시작하려면 결제 사용자 플로우의 각 페이지에 점수 기반 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가 포함됩니다. 감지 품질을 개선하려면 emailbilling_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 Enterprise 사기 방지에서 더 큰 토큰을 사용할 수 있으므로 GET이 아닌 POST 요청에서 그리고 헤더가 아닌 본문에서 요청이 전송되는지 확인합니다.

평가 해석

트랜잭션 데이터 전송을 시작하면 riskAnalysisfraudPreventionAssessment 구성요소가 포함된 JSON 응답으로 평가가 수신됩니다.

다음 예시는 샘플 응답입니다.

{
  "event": {....
  ....
  }
  .....
  ....
  ....
"riskAnalysis": {
    "score": "0.5"
    "reasons": SUSPECTED_CARDING
}
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
}
}

수신되는 응답에는 점수와 이유 코드(해당하는 경우)가 포함됩니다. 점수가 높을수록 트랜잭션이 허위이고 위험할 가능성이 높으며 점수가 낮을수록 트랜잭션이 적법할 가능성이 높습니다. 예를 들어 점수가 0.9면 해당 트랜잭션이 허위이고 위험할 가능성이 높으며 점수가 0.1이면 트랜잭션이 적법할 가능성이 높음을 나타냅니다.

평가에 따라 조치할 책임은 사용자에게 있습니다. 가장 간단한 통합의 경우 transactionRisk에 기준점을 설정하여 결정에 기여할 수 있습니다. 예를 들어 수동 검토를 위해 전송하거나 허위일 가능성이 높은 트랜잭션을 직접 거부하는 데 도움이 될 수 있습니다. 점수를 자체 사기 워크플로에 사용하거나 기존 시스템에 대한 규칙의 일부로 사용할 수도 있습니다. reCAPTCHA Enterprise는 고유한 신호를 검사하고 인터넷에서의 동작을 고유하게 파악하므로 이미 성숙한 사기 감지 엔진을 사용해도 증분 값을 기대할 수 있습니다.

다음 단계