Implementa la integración de reCAPTCHA Enterprise para WAF y Google Cloud Armor

En este documento, se muestra cómo implementar una página de desafío de reCAPTCHA, los tokens de acción de reCAPTCHA y tokens de sesión de reCAPTCHA para Google Cloud Armor.

Antes de comenzar

Antes de usar una página de desafío de reCAPTCHA, tokens de acción o tokens de sesión, habilita la API de reCAPTCHA Enterprise.

  1. En la consola, ve a la página API de reCAPTCHA Enterprise.

    Ir a la API de reCAPTCHA Enterprise

  2. Verifique que el nombre de su proyecto aparezca en el selector de proyectos, en la parte superior de la página. Si no ves el nombre de tu proyecto, haz clic en el selector de proyecto y, luego, selecciona tu proyecto.

  3. Haga clic en Habilitar.

Implementa una página de desafío de reCAPTCHA

Cuando implementas una página de desafío de reCAPTCHA, reCAPTCHA Enterprise determina si es necesario mostrarle un desafío de CAPTCHA a un usuario. Por lo tanto, es posible que los desafíos de CAPTCHA no sean visibles para todos los usuarios.

Para implementar una página de desafío de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de sitio de la página de desafío de WAF de reCAPTCHA.

    Console

    1. En la consola, ve a la página reCAPTCHA Enterprise.

      Ir a reCAPTCHA Enterprise

    2. Verifica que el nombre de tu proyecto aparezca en el selector de recursos en la parte superior de la página.

      Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y selecciona tu proyecto.

    3. Haz clic en Crear clave.

    4. En el campo Nombre visible, ingresa un nombre visible para la clave.
    5. En el menú desplegable Elegir tipo de plataforma, selecciona Sitio web.

    6. Expande la sección Firewall de aplicaciones web (WAF), Verificación de dominio, páginas de AMP y desafío.
    7. Active el botón de activación Firewall de aplicaciones web (WAF).
    8. En el menú desplegable Función, selecciona Página de desafío.

    9. Activa Inhabilitar la verificación del dominio.

      Cuando inhabilita la verificación del dominio para las claves de sitios de la página de desafío, Google Cloud Armor verifica el dominio.

    10. Haz clic en Crear clave.
    11. La clave recién creada aparece en la página Claves reCAPTCHA.

    gcloud

    Para crear claves de sitio de WAF, usa el comando gcloud recaptcha keys create:
       gcloud recaptcha keys create \
          --web \
          --display-name=DISPLAY_NAME  \
          --waf-feature=WAF_FEATURE \
          --waf-service=WAF_SERVICE \
          --integration-type=INTEGRATION_TYPE \
          --domains=DOMAIN_NAME
      

    Ingresa los siguientes valores:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, el nombre de un sitio.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica challenge-page.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica CA para Google Cloud Armor.
    • INTEGRATION_TYPE: Tipo de integración. Especifica INVISIBLE.
    • DOMAIN_NAME: Dominios o subdominios de sitios web que pueden usar la clave. Especifica varios dominios en una lista separada por comas. Especifica --allow-all-domains para inhabilitar la verificación del dominio (opcional).

      Cuando inhabilita la verificación del dominio para las claves de sitios de la página de desafío, Google Cloud Armor verifica el dominio.

    LÍNEA DE CMD Y REST

    Para obtener información de referencia de la API sobre los tipos de integraciones y claves, consulta Claves y Tipos de integración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DISPLAY_NAME: Es el nombre visible de la clave.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica CA para Google Cloud Armor.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica challenge-page.
    • DOMAINS (solo para sitios web y WAF): dominios o subdominios de sitios web que pueden usar la clave. Especifica varios dominios en una lista separada por comas. Especifica --allow-all-domains para inhabilitar la verificación del dominio (opcional).

      Cuando inhabilita la verificación del dominio para las claves de sitios de la página de desafío, Google Cloud Armor verifica el dominio.

    • TYPE_OF_INTEGRATION (solo para sitios web y WAF): Especifica INVISIBLE.

    HTTP method and URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Cuerpo JSON de la solicitud:

    
    {
       "displayName": "DISPLAY_NAME",
        'wafSettings': "  {
            "wafService": "WAF_SERVICE",
    "wafFeature": "WAF_FEATURE"
       }
       "webSettings": {
         "allowedDomains": "DOMAINS",
         "integrationType": "TYPE_OF_INTEGRATION"
        }
    }
    
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    
    {
        "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
      "displayName": "WAF session-token test key",
      "webSettings": {
        "allowAllDomains": true,
        "allowedDomains": [
          "localhost"
        ],
    
        "integrationType": "INVISIBLE",
    
      },
      "wafSettings": {
        "wafService": "CA",
        "wafFeature": "CHALLENGE_PAGE"
    
      }
    }
    
    

  2. Configura las políticas de seguridad de Google Cloud Armor. Si quieres aprender a usar una clave de sitio de la página de desafío de reCAPTCHA con tu política de seguridad, consulta Cómo configurar reglas para la administración de bots.

Implementa tokens de acción de reCAPTCHA

Debes tener reCAPTCHA Enterprise ejecutándose en tus páginas web para generar tokens de acción. Después de que reCAPTCHA Enterprise genere un token de acción, debes adjuntarlo a un encabezado de solicitud predefinido siempre que necesites proteger cualquier acción del usuario, como la confirmación de la compra. De forma predeterminada, los tokens de acción son válidos durante 30 minutos y pueden ser válidos por menos tiempo. Por lo tanto, debes adjuntar el token de acción a un encabezado de solicitud predefinido antes de que venza, de modo que Google Cloud Armor pueda evaluar los atributos del token.

Para implementar un token de acción de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de sitio de token de acción de WAF de reCAPTCHA.

    Console

    1. En la consola, ve a la página reCAPTCHA Enterprise.

      Ir a reCAPTCHA Enterprise

    2. Verifica que el nombre de tu proyecto aparezca en el selector de recursos en la parte superior de la página.

      Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y selecciona tu proyecto.

    3. Haz clic en Crear clave.

    4. En el campo Nombre visible, ingresa un nombre visible para la clave.
    5. En el menú desplegable Elegir tipo de plataforma, selecciona Sitio web.

      Aparecerá la sección Lista de dominios.

    6. Ingrese el nombre de dominio para su sitio web:

      1. En la sección Lista de dominios, haga clic en Agregar un dominio.

      2. En el campo Dominio, ingrese el nombre de su dominio.
      3. Opcional: Para agregar un dominio adicional, haz clic en Agregar un dominio y, luego, ingresa el nombre de otro dominio en el campo Dominio. Puedes agregar hasta 250 dominios.

        En el caso de los sitios web, la clave del sitio de reCAPTCHA es exclusiva de los dominios y subdominios que especifiques. Puedes especificar más de un dominio si muestras tu sitio web desde varios dominios. Si especificas un dominio (por ejemplo, examplepetstore.com), no es necesario que especifiques sus subdominios (por ejemplo, subdomain.examplepetstore.com).

    7. Expande la sección Firewall de aplicaciones web (WAF), Verificación de dominio, páginas de AMP y desafío.
    8. Active el botón de activación Firewall de aplicaciones web (WAF).
    9. En el menú desplegable Función, selecciona Token de acción.

    10. Activa Inhabilitar la verificación del dominio (opcional).

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a la clave de reCAPTCHA y usarla.

    11. Activa Usar desafío de casilla de verificación (opcional).

    12. Haz clic en Crear clave.
    13. La clave recién creada aparece en la página Claves reCAPTCHA.

    gcloud

    Para crear claves de sitio de WAF, usa el comando gcloud recaptcha keys create:
       gcloud recaptcha keys create \
          --web \
          --display-name=DISPLAY_NAME  \
          --waf-feature=WAF_FEATURE \
          --waf-service=WAF_SERVICE \
          --integration-type=INTEGRATION_TYPE \
          --domains=DOMAIN_NAME
      

    Ingresa los siguientes valores:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, el nombre de un sitio.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica action-token.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica CA para Google Cloud Armor.
    • INTEGRATION_TYPE: Tipo de integración. Especifica SCORE o CHECKBOX.
    • DOMAIN_NAME: Dominios o subdominios de sitios web que pueden usar la clave. Especifica varios dominios en una lista separada por comas. Especifica --allow-all-domains para inhabilitar la verificación del dominio (opcional).

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a la clave de reCAPTCHA y usarla.

    LÍNEA DE CMD Y REST

    Para obtener información de referencia de la API sobre los tipos de integraciones y claves, consulta Claves y Tipos de integración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DISPLAY_NAME: Es el nombre visible de la clave.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica CA para Google Cloud Armor.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica action-token.
    • DOMAINS (solo para sitios web y WAF): dominios o subdominios de sitios web que pueden usar la clave. Especifica varios dominios en una lista separada por comas. Especifica --allow-all-domains para inhabilitar la verificación del dominio (opcional).

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a la clave de reCAPTCHA y usarla.

    • TYPE_OF_INTEGRATION (solo para sitios web y WAF): Especifica SCORE o CHECKBOX.

    HTTP method and URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Cuerpo JSON de la solicitud:

    
    {
       "displayName": "DISPLAY_NAME",
        'wafSettings': "  {
            "wafService": "WAF_SERVICE",
    "wafFeature": "WAF_FEATURE"
       }
       "webSettings": {
         "allowedDomains": "DOMAINS",
         "integrationType": "TYPE_OF_INTEGRATION"
        }
    }
    
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    
    {
        "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
      "displayName": "WAF session-token test key",
      "webSettings": {
        "allowAllDomains": true,
        "allowedDomains": [
          "localhost"
        ],
    
       "integrationType": "SCORE",
    
      },
      "wafSettings": {
        "wafService": "CA",
        "wafFeature": "ACTION_TOKEN"
    
      }
    }
    
    

  2. En sus páginas web, instale la clave del sitio token de acción. Para obtener instrucciones, consulta el documento correspondiente al tipo de integración de tu clave de sitio de token de acción.

  3. Después de recibir el token de reCAPTCHA Enterprise, adjúntalo a un encabezado de solicitud predefinido en el siguiente formato:

       X-Recaptcha-Token:value-of-your-action-token
    

    Puedes usar lenguajes como XHR, Ajax o la API de recuperación para adjuntar el token a un encabezado de solicitud predefinido.

    En la siguiente secuencia de comandos de ejemplo, se muestra cómo proteger la acción de ejecución y adjuntar el token a un encabezado de solicitud predefinido con JavaScript y XHR:

       <script src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_SITE_KEY"></script>
    
       <script>
    
        function onSuccess(action_token) {
          const xhr = new XMLHttpRequest();
          xhr.open('GET','YOUR_URL', false);
          // Attach the action-token to the predefined request header
          xhr.setRequestHeader("X-Recaptcha-Token", action_token);
          xhr.send(null);
        }
    
        function onError(reason) {
          alert('Response promise rejected: ' + reason);
        }
    
        grecaptcha.enterprise.ready(function () {
          document.getElementById("execute-button").onclick = () => {
            grecaptcha.enterprise.execute('ACTION_TOKEN_SITE_KEY', {
            }).then(onSuccess, onError);
          };
        });
       </script>
    
     ```
    
  4. Configura las políticas de seguridad de Google Cloud Armor. Para obtener información sobre cómo usar la clave de sitio de tokens de acción de reCAPTCHA con tu política de seguridad, consulta Cómo configurar reglas para la administración de bots.

Implementa tokens de sesión de reCAPTCHA

El código JavaScript de reCAPTCHA establece un token de sesión de reCAPTCHA como una cookie en el navegador del usuario final después de la evaluación. El navegador del usuario final adjunta la cookie y la actualiza siempre que el reCAPTCHA JavaScript permanezca activo.

Para proporcionar un token de sesión como una cookie, instala una clave de sitio basada en puntuación de reCAPTCHA en al menos una de tus páginas web que cumpla con los siguientes requisitos:

  • La página web debe ser la página que el usuario final explora antes de la página que necesita protección. Por ejemplo, si deseas proteger la página de confirmación de compras, instala la clave de sitio basada en puntuaciones de reCAPTCHA en la página principal o en la de producto.
  • La página web está protegida por una política de seguridad de Google Cloud Armor.

Puedes usar esta cookie para proteger las solicitudes posteriores y las cargas de página de un usuario en un dominio específico. Los tokens de sesión son válidos durante 30 minutos de forma predeterminada. Sin embargo, si el usuario permanece en la página en la que implementaste el token de sesión, reCAPTCHA Enterprise actualiza el token de sesión de forma periódica para evitar que venza.

Instala tokens de sesión en cada página que reCAPTCHA debe proteger. Te recomendamos instalar reCAPTCHA Enterprise en todas las páginas y usar las reglas de Google Cloud Armor para aplicar el acceso en todas las páginas, excepto en la primera que exploran los usuarios finales.

El siguiente es un ejemplo de token de sesión de reCAPTCHA:

   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Para implementar un token de sesión de reCAPTCHA, haz lo siguiente:

  1. Crea una clave de sitio de token de sesión de WAF de reCAPTCHA.

    Console

    1. En la consola, ve a la página reCAPTCHA Enterprise.

      Ir a reCAPTCHA Enterprise

    2. Verifica que el nombre de tu proyecto aparezca en el selector de recursos en la parte superior de la página.

      Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y selecciona tu proyecto.

    3. Haz clic en Crear clave.

    4. En el campo Nombre visible, ingresa un nombre visible para la clave.
    5. En el menú desplegable Elegir tipo de plataforma, selecciona Sitio web.

      Aparecerá la sección Lista de dominios.

    6. Ingrese el nombre de dominio para su sitio web:

      1. En la sección Lista de dominios, haga clic en Agregar un dominio.

      2. En el campo Dominio, ingrese el nombre de su dominio.
      3. Opcional: Para agregar un dominio adicional, haz clic en Agregar un dominio y, luego, ingresa el nombre de otro dominio en el campo Dominio. Puedes agregar hasta 250 dominios.

        En el caso de los sitios web, la clave del sitio de reCAPTCHA es exclusiva de los dominios y subdominios que especifiques. Puedes especificar más de un dominio si muestras tu sitio web desde varios dominios. Si especificas un dominio (por ejemplo, examplepetstore.com), no es necesario que especifiques sus subdominios (por ejemplo, subdomain.examplepetstore.com).

    7. Expande la sección Firewall de aplicaciones web (WAF), Verificación de dominio, páginas de AMP y desafío.
    8. Active el botón de activación Firewall de aplicaciones web (WAF).
    9. En el menú desplegable Función, selecciona Token de sesión.

    10. Activa Inhabilitar la verificación del dominio (opcional).

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a la clave de reCAPTCHA y usarla.

    11. Haz clic en Crear clave.
    12. La clave recién creada aparece en la página Claves reCAPTCHA.

    gcloud

    Para crear claves de sitio de WAF, usa el comando gcloud recaptcha keys create:
       gcloud recaptcha keys create \
          --web \
          --display-name=DISPLAY_NAME  \
          --waf-feature=WAF_FEATURE \
          --waf-service=WAF_SERVICE \
          --integration-type=INTEGRATION_TYPE \
          --domains=DOMAIN_NAME
      

    Ingresa los siguientes valores:

    • DISPLAY_NAME: Es el nombre de la clave. Por lo general, el nombre de un sitio.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica session-token.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica CA para Google Cloud Armor.
    • INTEGRATION_TYPE: Tipo de integración. Especifica SCORE.
    • DOMAIN_NAME: Dominios o subdominios de sitios web que pueden usar la clave. Especifica varios dominios en una lista separada por comas. Especifica --allow-all-domains para inhabilitar la verificación del dominio (opcional).

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a la clave de reCAPTCHA y usarla.

    LÍNEA DE CMD Y REST

    Para obtener información de referencia de la API sobre los tipos de integraciones y claves, consulta Claves y Tipos de integración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DISPLAY_NAME: Es el nombre visible de la clave.
    • WAF_SERVICE: Es el nombre del proveedor de servicios de WAF. Especifica CA para Google Cloud Armor.
    • WAF_FEATURE: Es el nombre de la función de WAF. Especifica session-token.
    • DOMAINS (solo para sitios web y WAF): dominios o subdominios de sitios web que pueden usar la clave. Especifica varios dominios en una lista separada por comas. Especifica --allow-all-domains para inhabilitar la verificación del dominio (opcional).

      Inhabilitar la verificación del dominio es un riesgo de seguridad porque no hay restricciones en el sitio, por lo que cualquier persona puede acceder a la clave de reCAPTCHA y usarla.

    • TYPE_OF_INTEGRATION (solo para sitios web y WAF): Especifica SCORE.

    HTTP method and URL:

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Cuerpo JSON de la solicitud:

    
    {
       "displayName": "DISPLAY_NAME",
        'wafSettings': "  {
            "wafService": "WAF_SERVICE",
    "wafFeature": "WAF_FEATURE"
       }
       "webSettings": {
         "allowedDomains": "DOMAINS",
         "integrationType": "TYPE_OF_INTEGRATION"
        }
    }
    
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $cred = gcloud auth application-default print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    
    {
        "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
      "displayName": "WAF session-token test key",
      "webSettings": {
        "allowAllDomains": true,
        "allowedDomains": [
          "localhost"
        ],
    
       "integrationType": "SCORE",
    
      },
      "wafSettings": {
        "wafService": "CA",
        "wafFeature": "SESSION_TOKEN"
    
      }
    }
    
    

  2. Agrega la clave del sitio de token de sesión y el waf=session al JavaScript de reCAPTCHA.

    En la siguiente secuencia de comandos de muestra, se indica cómo implementar un token de sesión en una página web:

      <!DOCTYPE html>
      <html lang="en">
      <head>
       <meta charset="UTF-8">
       <title>reCAPTCHA WAF Session Token</title>
       <script src="https://www.google.com/recaptcha/enterprise.js?render=SESSION_TOKEN_SITE_KEY&waf=session" async defer></script>
      </head>
    </html>
    
  3. Configura las políticas de seguridad de Google Cloud Armor. Si quieres aprender a usar la clave de sitio de token de sesión de reCAPTCHA con tu política de seguridad, consulta Cómo configurar reglas para la administración de bots.

Ejemplos de uso de más de una función en una sola aplicación

Puedes usar una o más funciones de reCAPTCHA Enterprise para WAF en una sola aplicación.

Ejemplo 1: Usa los tokens de sesión y la página de desafío de reCAPTCHA

Puedes agregar un token de sesión de reCAPTCHA en páginas a las que un usuario podría acceder para que la cookie se actualice de forma periódica, por ejemplo, una página de Acceso. Configura la regla de política de seguridad de Google Cloud Armor para redireccionar la solicitud a una página de desafío de reCAPTCHA cuando la puntuación sea baja.

La siguiente ilustración muestra un flujo de trabajo que usa funciones de página de desafío de reCAPTCHA y token de sesión de reCAPTCHA:

Ejemplo 2: Usa tokens de acción y la página de desafío de reCAPTCHA

Puedes agregar un token de acción de reCAPTCHA para proteger una acción del usuario, como checkout. Configura la regla de política de seguridad de Google Cloud Armor para redireccionar la solicitud a una página de desafío de reCAPTCHA en cualquiera de las siguientes condiciones:

  • La puntuación es baja.
  • El atributo action_name del token de acción no coincide con la acción del usuario que está protegida.

La siguiente ilustración muestra un flujo de trabajo que usa funciones de página de desafío de reCAPTCHA y token de acción de reCAPTCHA:

En la siguiente secuencia de comandos de ejemplo, se muestra cómo usar un token de acción de reCAPTCHA y redireccionar a una página de desafío de reCAPTCHA con el token de acción adjunto como encabezado:

   <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.abc.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>

¿Qué sigue?