Exemplos de integração com o Google Cloud Armor

Este documento mostra exemplos de como implementar as funcionalidades do reCAPTCHA para WAF para o Cloud Armor.

Pode usar uma ou mais funcionalidades do reCAPTCHA para WAF numa única aplicação.

Se quiser usar mais do que uma funcionalidade, tem de criar uma chave do reCAPTCHA para cada uma dessas funcionalidades e usá-las na sua aplicação. Por exemplo, se quiser usar tokens de ação do reCAPTCHA e a página de desafio do reCAPTCHA, tem de criar uma chave de token de ação e uma chave de página de desafio, e usá-las na sua aplicação.

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

Pode adicionar um token de sessão do reCAPTCHA em páginas às quais um utilizador pode aceder para que o cookie seja atualizado periodicamente, por exemplo, uma página de início de sessão. Configure uma regra de política de segurança do Cloud Armor para redirecionar o pedido para uma página de desafio do reCAPTCHA quando a pontuação for baixa.

A ilustração seguinte mostra um fluxo de trabalho que usa o token de sessão do reCAPTCHA e as funcionalidades da página de desafio do reCAPTCHA:

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

Pode adicionar um token de ação do reCAPTCHA para proteger uma ação do utilizador, como o pagamento. Configure uma regra da política de segurança do Cloud Armor para redirecionar o pedido 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 do utilizador protegida.

A ilustração seguinte mostra um fluxo de trabalho que usa o token de ação do reCAPTCHA e as funcionalidades da página de desafio do reCAPTCHA:

O seguinte script de exemplo mostra como usar um token de ação do reCAPTCHA e redirecionar para uma página de desafio do 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 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>

O que se segue?