Exemplos de integração com o Google Cloud Armor

Este documento mostra exemplos de como implementar os recursos do reCAPTCHA Enterprise para WAF no Google Cloud Armor.

É possível usar um ou mais recursos do reCAPTCHA Enterprise para WAF em um único aplicativo.

Se você quiser usar mais de um recurso, crie uma chave reCAPTCHA para cada um desses recursos e use-os no aplicativo. Por exemplo, se você quiser usar tokens de ação e uma página de desafio do reCAPTCHA, crie uma chave de token de ação e uma chave de página de desafio e use-as no aplicativo.

Exemplo 1: como usar tokens de sessão reCAPTCHA e a página de teste do reCAPTCHA

É possível adicionar um token de sessão reCAPTCHA nas páginas que um usuário pode acessar para que o cookie seja atualizado periodicamente, por exemplo, uma página de login. Configure uma regra de política de segurança do Google Cloud Armor para redirecionar a solicitação para uma página de desafio reCAPTCHA quando a pontuação estiver baixa.

A ilustração a seguir mostra um fluxo de trabalho que usa recursos da página de teste e um token de sessão reCAPTCHA

Exemplo 2: como usar tokens de ação reCAPTCHA e a página de teste do reCAPTCHA

É possível adicionar um token de ação reCAPTCHA para proteger uma ação do usuário, como finalizar uma compra. Configure uma regra de política de segurança do Google Cloud Armor para redirecionar a solicitação para uma página de desafio do reCAPTCHA em qualquer uma das seguintes condições:

  • A pontuação é baixa.
  • O atributo action_name do token de ação não corresponde à ação protegida do usuário.

A ilustração a seguir mostra um fluxo de trabalho que usa recursos da página de teste e um token de ação reCAPTCHA:

O exemplo de script a seguir mostra como usar um token de ação reCAPTCHA e redirecionar para uma página de desafio reCAPTCHA com o token de ação anexado como cabeçalho:

   <script src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_SITE_KEY"></script>
    <script>
     function onSuccess(token) {
       const xhr = new XMLHttpRequest();
       xhr.open('GET','http://www.example.com/checkout', false);
       xhr.setRequestHeader("X-Recaptcha-Token", token);
       xhr.onreadystatechange = function() {
         // Make sure that the request is finished and response is ready with 200
         if (this.readyState == 4 && this.status == 200) {
           // Display the response, it could be a reCAPTCHA challenge
           // page based on your Google Cloud Armor security rule settings.
            document.open();
            document.write(xhr.responseText);
            document.close();

         }
       };
       xhr.send(null);
     }

     grecaptcha.enterprise.ready(function () {
       document.getElementById("execute-button").onclick = () => {
         grecaptcha.enterprise.execute('ACTION_TOKEN_SITE_KEY', {
         }).then(onSuccess, onError);
       };
     });
    </script>

A seguir