Integra reCAPTCHA per WAF con Cloudflare

Questo documento mostra come integrare reCAPTCHA per WAF con Cloudflare.

Per completare l'integrazione, devi implementare una o più funzionalità di reCAPTCHA per WAF, creare criteri di firewall reCAPTCHA e integrare Cloudflare dispiegando e configurando un'applicazione Cloudflare Worker serverless.

Prima di iniziare

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

    Registra l'ID progetto Google Cloud per utilizzarlo in un secondo momento.

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. Crea una chiave API per l'autenticazione:

    1. Nella console Google Cloud, vai alla pagina Credenziali.

      Vai a credenziali

    2. Fai clic su Crea credenziali e poi seleziona Chiave API.
    3. Prendi nota della chiave API per utilizzarla in un secondo momento.

  5. Pianifica il modo in cui vuoi implementare le funzionalità di reCAPTCHA per WAF per proteggere il sito web.

    1. Scegli una o più funzionalità WAF che meglio corrispondono al tuo caso d'uso.
    2. Identifica le pagine da proteggere.
    3. Scegli il tipo di funzionalità WAF che vuoi implementare nella pagine identificate.
    4. Identifica le condizioni per gestire l'accesso degli utenti.
    5. Comprendere i componenti del criterio firewall reCAPTCHA e i relativi attributi che ti aiutano a creare criteri firewall reCAPTCHA. Per alcuni esempi, consulta Esempi di criteri firewall di reCAPTCHA.
  6. Crea o scegli un account Cloudflare con funzionalità Cloudflare Worker.

  7. Crea o scegli un sito web Cloudflare.

  8. Scarica il pacchetto reCAPTCHA per Cloudflare recaptcha_cloudflare_client_0.0.2.tar.gz.

Implementare le funzionalità di reCAPTCHA per WAF

In base ai tuoi requisiti, puoi utilizzare una o più funzioni reCAPTCHA per WAF in un'unica applicazione.

Se vuoi utilizzare più di una funzionalità, devi creare una chiave reCAPTCHA per ciascuna di queste funzionalità e utilizzarle nella tua applicazione. Ad esempio, se vuoi utilizzare i token di azione reCAPTCHA e la pagina di verifica reCAPTCHA, devi creare una chiave per i token di azione e una chiave per la pagina di verifica e utilizzarle nella tua applicazione.

action-token

Per generare token di azione, devi eseguire reCAPTCHA sulle tue pagine web. Dopo che reCAPTCHA ha generato un token di azione, devi associarlo a un'intestazione di richiesta predefinita ogni volta che devi proteggere qualsiasi azione dell'utente, ad esempio checkout. Per impostazione predefinita, i token di azione sono validi per 30 minuti, ma possono variare a seconda del traffico. Devi collegare il token di azione a un'intestazione della richiesta predefinita prima della scadenza del token, cloudflare può valutare gli attributi del token.

Per implementare un token di azione reCAPTCHA:

  1. Crea una chiave del token di azione per il tuo sito web.

    gcloud

    Per creare le chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere il nome di un sito.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score o checkbox.
    • DOMAIN_NAME: domini o sottodomini dei siti web autorizzati a utilizzare la chiave.

      Specifica più domini come elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disattivare la verifica del dominio.

      La disattivazione della verifica del dominio comporta un rischio per la sicurezza perché non sono previste limitazioni sul sito, pertanto chiunque può accedere alla chiave reCAPTCHA e utilizzarla.

    • WAF_FEATURE: il nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: nome del Fornitore di servizi WAF. Specifica cloudflare per cloudflare.

    Esegui il comando gcloud recaptcha keys create :

    Linux, macOS o Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    La risposta contiene la chiave reCAPTCHA appena creata.

    REST

    Per informazioni di riferimento dell'API sui tipi di token e sui tipi di integrazione, consulta Token e Tipo di integrazione.

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere, il nome di un sito.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score o checkbox.
    • DOMAIN_NAME: domini o sottodomini dei siti web autorizzati a utilizzare la chiave.

      Specifica più domini come elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disattivare la verifica del dominio.

      La disattivazione della verifica del dominio comporta un rischio per la sicurezza perché non sono previste limitazioni sul sito, pertanto chiunque può accedere alla chiave reCAPTCHA e utilizzarla.

    • WAF_FEATURE: il nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: il nome del provider di servizi WAF. Specifica cloudflare per cloudflare.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

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

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    $cred = gcloud auth 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

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      "wafFeature": "ACTION_TOKEN"
      
    
    }
    }
    
    

    Prendi nota della chiave del token di azione per utilizzarla in un secondo momento.

  2. Integra il codice JavaScript di reCAPTCHA nelle tue pagine web con la chiave action-token che hai creato. Per le istruzioni, consulta il documento corrispondente al tipo di integrazione della chiave del token di azione.
  3. Dopo aver ricevuto il token da reCAPTCHA, allegalo a un 'intestazione di richiesta predefinita nel seguente formato:
     X-Recaptcha-Token: value-of-your-action-token
    

    Per collegare il token, puoi usare linguaggi quali XHR, Ajax o API Fetch a un'intestazione della richiesta predefinita.

    Lo script di esempio seguente mostra come proteggere l'azione execute e allegare il token a un'intestazione di richiesta predefinita utilizzando JavaScript + XHR:

      
      <script>
        src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_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_KEY', {
               }).then(onSuccess, onError);
             };
           });
          }
        </script>
      
      

session-token

Il codice JavaScript di reCAPTCHA imposta un token di sessione reCAPTCHA come cookie sul browser dell'utente finale dopo la valutazione. Il browser dell'utente finale collega il cookie e lo aggiorna finché Il codice JavaScript reCAPTCHA rimane attivo.

Per fornire un token sessione come cookie, installa una chiave token sessione su almeno una delle tue pagine web che l'utente finale visita prima della pagina che deve essere protetta. Ad esempio, se vuoi proteggere la pagina di pagamento, installa una chiave per token di sessione sulla home page o sulla pagina del prodotto.

Puoi includere JavaScript reCAPTCHA nelle tue pagine web configurando il metodo wrangler.toml durante l'installazione del pacchetto reCAPTCHA per Cloudflare o installa la chiave di sessione sulle tue pagine web. Include il codice JavaScript reCAPTCHA di Cloudflare integra reCAPTCHA utilizzando la chiave per token di sessione senza dover installare manualmente le chiavi nelle tue pagine web.

Puoi utilizzare questo cookie per proteggere le richieste e i caricamenti di pagine successivi dell'utente finale su un dominio specifico. I token di sessione sono validi per 30 minuti predefinito. Tuttavia, se l'utente finale rimane nella pagina in cui hai implementato il token di sessione, reCAPTCHA lo aggiorna periodicamente per impedirne la scadenza.

Installa i token di sessione su ogni pagina che deve essere protetta da reCAPTCHA. Ti consigliamo di proteggere ogni pagina con reCAPTCHA e utilizzare Regole di Google Cloud Armor per applicare in modo forzato l'accesso a tutte le pagine, tranne la prima pagina consultata dagli utenti finali.

Di seguito è riportato un esempio di token di sessione reCAPTCHA:
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Per implementare un token di sessione reCAPTCHA:

  1. Crea una chiave per il token di sessione per il tuo sito web.

    gcloud

    Per creare le chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere il nome di un sito.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score.
    • DOMAIN_NAME: domini o sottodomini di siti web che possono essere utilizzati la chiave.

      Specifica più domini come elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disattivare la verifica del dominio.

      La disattivazione della verifica del dominio comporta un rischio per la sicurezza perché non sono previste limitazioni sul sito, pertanto chiunque può accedere alla chiave reCAPTCHA e utilizzarla.

    • WAF_FEATURE: il nome della funzionalità WAF. Specifica session-token.
    • WAF_SERVICE: nome del Fornitore di servizi WAF. Specifica cloudflare per cloudflare.

    Esegui la gcloud recaptcha keys create :

    Linux, macOS o Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    La risposta contiene la chiave reCAPTCHA appena creata.

    REST

    Per informazioni di riferimento dell'API su tipi di chiavi e tipi di integrazione, vedi Chiave e Integration type (Tipo di integrazione).

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere, il nome di un sito.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score.
    • DOMAIN_NAME: domini o sottodomini di siti web che possono essere utilizzati la chiave.

      Specifica più domini come elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disattivare la verifica del dominio.

      La disattivazione della verifica del dominio comporta un rischio per la sicurezza perché non sono previste limitazioni sul sito, pertanto chiunque può accedere alla chiave reCAPTCHA e utilizzarla.

    • WAF_FEATURE: il nome della funzionalità WAF. Specifica session-token.
    • WAF_SERVICE: nome del Fornitore di servizi WAF. Specifica cloudflare per cloudflare.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

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

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

    $cred = gcloud auth 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

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      "wafFeature": "SESSION_TOKEN"
    
    
    }
    }
    
    

    Prendi nota della chiave del token di sessione per utilizzarla in un secondo momento.

    Se vuoi iniettare il codice JavaScript di reCAPTCHA da Cloudflare, salta il passaggio successivo e configura wranger.toml.

  2. Aggiungi la chiave token di sessione e waf=session al codice JavaScript reCAPTCHA.

    Lo script di esempio seguente mostra come implementare un token di sessione su una pagina 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_KEY&waf=session" async defer></script>
     <body></body>
    </head>
    </html>

pagina della sfida

Quando implementi una pagina di verifica reCAPTCHA, reCAPTCHA reindirizza a una pagina interpagina in cui viene stabilito se è necessario mostrare un test CAPTCHA a un utente. Pertanto, i test CAPTCHA potrebbero non essere visibili a tutti gli utenti.

Per implementare una pagina di verifica reCAPTCHA:

  1. Crea una chiave per la pagina della sfida per il tuo sito web.

    gcloud

    Per creare le chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere il nome di un sito.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica invisible.
    • DOMAIN_NAME: domini o sottodomini di siti web che possono essere utilizzati la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: il nome della funzionalità WAF. Specifica challenge-page.
    • WAF_SERVICE: nome del Fornitore di servizi WAF. Specifica cloudflare per cloudflare.

    Esegui il comando gcloud recaptcha keys create :

    Linux, macOS o Cloud Shell

    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE

    La risposta contiene la chiave reCAPTCHA appena creata.

    REST

    Per informazioni di riferimento dell'API su tipi di chiavi e tipi di integrazione, vedi Chiave e Integration type (Tipo di integrazione).

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere, il nome di un sito.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica invisible.
    • DOMAIN_NAME: domini o sottodomini di siti web che possono essere utilizzati la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: il nome della funzionalità WAF. Specifica challenge-page.
    • WAF_SERVICE: nome del Fornitore di servizi WAF. Specifica cloudflare per cloudflare.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

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

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json. ed esegui questo comando:

    $cred = gcloud auth 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

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
      "integrationType": "INVISIBLE",
     
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      "wafFeature": "CHALLENGE_PAGE"
      
    
    }
    }
    
    

    Prendi nota della chiave della pagina della sfida per utilizzarla in un secondo momento.

  2. Per reindirizzare gli utenti alla pagina della richiesta di verifica reCAPTCHA e ricevere un token reCAPTCHA, crea un criterio di firewall con l'azione redirect nelle pagine protette.

Express

Per implementare reCAPTCHA Express, crea un tasto express.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud

    Per creare le chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere il nome di un sito.
    • WAF_SERVICE: nome del Fornitore di servizi WAF. Specifica cloudflare per cloudflare.

    Esegui il comando gcloud recaptcha keys create :

    Linux, macOS o Cloud Shell

    gcloud recaptcha keys create \
    --express \
    --display-name=DISPLAY_NAME  \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --express `
    --display-name=DISPLAY_NAME  `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --express ^
    --display-name=DISPLAY_NAME  ^
    --waf-service=WAF_SERVICE

    La risposta contiene la chiave reCAPTCHA appena creata.

    REST

    Per informazioni di riferimento dell'API su tipi di chiavi e tipi di integrazione, vedi Chiave e Integration type (Tipo di integrazione).

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • DISPLAY_NAME: il nome della chiave. In genere, il nome di un sito.
    • WAF_SERVICE: il nome del provider di servizi WAF. Specifica cloudflare per cloudflare.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

    PowerShell

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    $cred = gcloud auth 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

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    },
    "wafSettings": {
      "wafService": "cloudflare",
    
      
    
    }
    }
    
    

    Prendi nota della chiave Express per utilizzarla in un secondo momento.

Integrazione con Cloudflare

Per utilizzare i criteri firewall reCAPTCHA, devi eseguire il deployment e configurare un Applicazione serverless per worker Cloudflare.

Prima di iniziare la procedura di integrazione, segui questi passaggi:

  1. Crea un CLOUDFLARE_API_TOKEN e scegli il modello Modifica worker Cloudflare. Registra il token API per utilizzarlo in un secondo momento.

  2. Recupera l'ID account dell'API Cloudflare e registralo per utilizzarlo in seguito.

Installa il pacchetto reCAPTCHA per Cloudflare

  1. Scarica e installa il pacchetto reCAPTCHA per Cloudflare:

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Installa il pacchetto wrangler:

       npm install -g wrangler
      
    3. Scarica il pacchetto reCAPTCHA per Cloudflare:

      wget --load-cookies /tmp/cookies.txt https://dl.google.com/recaptchaenterprise/cloudflare_client/releases/recaptcha_cloudflare_client_0.0.2.tar.gz -O recaptcha_cloudflare_client_0.0.2.tar.gz && rm -rf /tmp/cookies.txt
      
    4. Estrai il pacchetto reCAPTCHA per Cloudflare:

      tar -xvzf recaptcha_cloudflare_client_0.0.2.tar.gz
      
  2. Nel file wrangler.toml, configura le seguenti variabili nella sezione vars:

    • GCP_API_KEY: la chiave API Google Cloud che hai creato per l'autenticazione.
    • GCP_PROJECT_NUMBER: il numero del tuo progetto Google Cloud.
    • RECAPTCHA_EXPRESS_SITE_KEY: la chiave Express se utilizzi reCAPTCHA Express.
    • RECAPTCHA_SESSION_SITE_KEY: la chiave del token sessione se utilizzi il token sessione reCAPTCHA.
    • RECAPTCHA_ACTION_SITE_KEY: la chiave token di azione, se utilizzando il token di azione reCAPTCHA.
    • RECAPTCHA_CHALLENGE_SITE_KEY: il tasto della pagina della sfida, se utilizzando la pagina di verifica reCAPTCHA.
    • RECAPTCHA_JS_INSTALL: URL delle pagine in cui vuoi che il worker Cloudflare installi il codice JavaScript di reCAPTCHA utilizzando la chiave session-token. Specifica i percorsi come pattern glob e utilizza ; come delimitatore. Questa opzione è disponibile solo per reCAPTCHA di sessione.
    • RECAPTCHA_ASSESSMENT_CALL: URL delle pagine in cui vuoi che ti trovi worker Cloudflare di chiamare l'API reCAPTCHA Enterprise per valutare Punteggio reCAPTCHA ed eseguire l'azione configurata nel criterio firewall. Specifica percorsi come pattern glob e utilizza ; come delimitatore.

  3. Esegui il deployment dell'applicazione:

    wrangler deploy
    

Configura le route di Cloudflare all'applicazione worker

  1. Accedi alla dashboard di Cloudflare e seleziona il tuo account.
  2. Nel menu di navigazione, fai clic su Worker e Pages (Pagine) e seleziona l'applicazione Worker.
  3. Fai clic sulla scheda Trigger, quindi su Aggiungi percorso.
  4. Nella finestra di dialogo Aggiungi percorso, inserisci il percorso della pagina web che deve essere protetta da reCAPTCHA, seleziona la zona appropriata e fai clic su Aggiungi percorso.

Crea criteri firewall reCAPTCHA

Devi creare un criterio firewall che specifichi le regole per ogni pagina che vuoi proteggere sul tuo sito web. Puoi creare criteri firewall con uno più funzionalità di reCAPTCHA per WAF.

Nel criterio firewall reCAPTCHA, aggiungi le regole nell'ordine previsto la priorità. La prima regola è l'ordine più alto. Puoi anche riordinare la priorità usando ReorderFirewallPoliciesRequest. Per una richiesta in arrivo, quando una condizione del criterio corrisponde al percorso specificato, il fornitore di servizi WAF implementa l'azione definita e le regole successive non vengono valutate.

  1. In base alle funzionalità che hai scelto, procedi nel seguente modo:
    • Identifica il percorso che vuoi proteggere.
    • Identifica le condizioni per consentire, reindirizzare o bloccare l'accesso.
    • Assegna una priorità alle regole.
  2. Comprendi i componenti dei criteri firewall e i relativi attributi.
  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  4. Per eseguire l'override di gcloud CLI per accedere alla versione di anteprima pubblica di l'API reCAPTCHA, esegui questo comando:
        gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
        
  5. Per creare criteri firewall reCAPTCHA, utilizza il comando gcloud recaptcha firewall-policies create:

    Nel criterio firewall reCAPTCHA, aggiungi le regole in ordine di quello previsto la priorità. Devi prima aggiungere una regola con la priorità più alta. Per un richiesta in entrata, quando una condizione del criterio corrisponde al percorso specificato, il provider di servizi WAF implementa l'azione definita e le successive non vengono valutate. La regola predefinita è consentire l'accesso.

       gcloud recaptcha firewall-policies create \
          --actions=ACTION \
          --condition=CONDITION \
          --description=DESCRIPTION \
          --path=PATH
      

    Specifica i seguenti valori:

    • ACTION: le azioni che il fornitore di servizi WAF deve eseguire per la richiesta in entrata. Può contenere al massimo un'azione terminale, ovvero un'azione che forza una risposta. Specifica una delle seguenti azioni:
      • allow: consente l'accesso alla pagina richiesta. Questa è un'azione definitiva.
      • block: nega l'accesso alla pagina richiesta. Questa è un'azione del terminale.
      • redirect: reindirizza la richiesta dell'utente in arrivo alla pagina della verifica reCAPTCHA. Questa è un'azione del terminale.
      • substitute: invia una pagina diversa da quella richiesta a una richiesta di un utente fraudolento. Questa è un'azione definitiva.
      • set_header: imposta un'intestazione personalizzata e consente alla richiesta dell'utente in arrivo di continuare al backend. Il backend può quindi attivare una protezione personalizzata. Questa è un'azione non terminale.
    • CONDITION: a CEL (Common Expression Language) espressione condizionale che specifica se il criterio firewall reCAPTCHA si applica a una richiesta utente in entrata. Se questa condizione restituisce true e il percorso richiesto corrisponde al pattern del percorso, le azioni associate vengono eseguite dal provider di servizi WAF. La viene verificata la correttezza della sintassi CEL al momento della creazione. Per ulteriori informazioni sulla definizione del linguaggio, consulta la definizione del linguaggio CEL.
    • DESCRIPTION: una descrizione dell'obiettivo del criterio del firewall reCAPTCHA. La descrizione deve contenere al massimo 256 caratteri UTF-8.
    • PATH: il percorso a cui si applica il criterio del firewall reCAPTCHA. Deve essere specificato come pattern glob. Per ulteriori informazioni su glob, consulta la pagina del manuale.

    Dopo la corretta esecuzione del comando, viene restituito un output simile alla viene visualizzato quanto segue:

         Created [100].
       

    L'esempio seguente crea un criterio firewall reCAPTCHA per bloccare il targeting per il traffico per /example/page.html quando il punteggio è inferiore a 0,1.

       gcloud recaptcha firewall-policies create \
         --description="example policy" \
         --path="/example/page.html" \
         --condition="recaptcha.score < 0.1" \
         --actions="block"
       

Passaggi successivi