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à reCAPTCHA per WAF, creare criteri firewall reCAPTCHA, e l'integrazione con Cloudflare mediante il deployment e la configurazione di un 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. Registra la chiave API per utilizzarla in un secondo momento.

  5. Pianifica come implementare le funzionalità di reCAPTCHA per WAF per proteggere il tuo sito web.

    1. Scegli una o più funzionalità WAF che meglio corrispondono al tuo caso d'uso.
    2. Identifica le pagine che vuoi 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. Scopri i componenti dei criteri del firewall reCAPTCHA e i relativi attributi che ti aiutano a creare criteri del firewall reCAPTCHA. Per alcuni esempi, vedi Esempi di criteri firewall per reCAPTCHA.
  6. Crea o scegli un account Cloudflare con funzionalità di lavoro Cloudflare.

  7. Crea o scegli un sito web Cloudflare.

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

Implementa 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 token di azione e una chiave della pagina di verifica e utilizzarli nelle un'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 collegarlo a un token di azione predefinito richiesta di intestazione ovunque sia necessario 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 allegare il token di azione a un'intestazione di richiesta predefinita prima della scadenza del token, in modo che Cloudflare possa valutare gli attributi del token.

Per implementare un token di azione reCAPTCHA, segui questi passaggi:

  1. Crea una chiave per il 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 rappresenta un rischio per la sicurezza perché non sono limitazioni del sito, pertanto è possibile accedere alla chiave reCAPTCHA e utilizzarla da chiunque.

    • WAF_FEATURE: il nome della funzionalità WAF. Specifica action-token.
    • WAF_SERVICE: il nome del provider 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 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 rappresenta un rischio per la sicurezza perché non sono limitazioni del sito, pertanto è possibile accedere alla chiave reCAPTCHA e utilizzarla da chiunque.

    • 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. 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": "ACTION_TOKEN"
      
    
    }
    }
    
    

    Registra la chiave del token di azione per utilizzarla in seguito.

  2. Integra reCAPTCHA JavaScript nelle tue pagine web con la chiave token di azione che che hai creato. Per istruzioni, consulta il documento che corrisponde alla il tipo di integrazione della chiave per il 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 di sessione come cookie, installa una chiave per token di sessione su almeno una delle tue pagine web che l'utente finale naviga prima della pagina che richiede da proteggere. Ad esempio, se vuoi proteggere la pagina di pagamento, installa una chiave di token di sessione nella home page o nella pagina del prodotto.

Puoi includere il codice JavaScript di reCAPTCHA nelle tue pagine web configurando il filewrangler.toml durante l'installazione del pacchetto reCAPTCHA per Cloudflare oppure installare la chiave di sessione nelle 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 in ogni pagina che deve essere protetta da reCAPTCHA. Ti consigliamo di proteggere ogni pagina con reCAPTCHA e di utilizzare le regole di Google Cloud Armor per applicare l'accesso a tutte le pagine, tranne la prima pagina visitata 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, segui questi passaggi:

  1. Crea una chiave per token di sessione 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 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 rappresenta un rischio per la sicurezza perché non sono limitazioni del sito, pertanto è possibile accedere alla chiave reCAPTCHA e utilizzarla da chiunque.

    • WAF_FEATURE: il nome della funzionalità WAF. Specifica session-token.
    • WAF_SERVICE: il nome del provider 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, 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 rappresenta un rischio per la sicurezza perché non sono limitazioni del sito, pertanto è possibile accedere alla chiave reCAPTCHA e utilizzarla da chiunque.

    • WAF_FEATURE: il nome della funzionalità WAF. Specifica session-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. 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"
    
    
    }
    }
    
    

    Registra la 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>
    
    
    

challenge-page

When you implement a reCAPTCHA challenge page, reCAPTCHA redirects to an interstitial page where it determines if it's necessary to show a CAPTCHA challenge to a user. Therefore, CAPTCHA challenges might not be visible to all users.

To implement a reCAPTCHA challenge page, do the following:

  1. Create a challenge-page key for your website.

    gcloud

    To create reCAPTCHA keys, use the gcloud recaptcha keys create command.

    Before using any of the command data below, make the following replacements:

    • DISPLAY_NAME: Name for the key. Typically a site name.
    • INTEGRATION_TYPE: Type of integration. Specify invisible.
    • DOMAIN_NAME: Domains or subdomains of websites allowed to use the key. Specify --allow-all-domains.
    • WAF_FEATURE: Name of the WAF feature. Specify challenge-page.
    • WAF_SERVICE: Name of the WAF service provider. Specify cloudflare for cloudflare.

    Execute the gcloud recaptcha keys create command:

    Linux, macOS, or 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 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, 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. 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"
  

}
}

Registra la chiave della pagina della sfida per utilizzarla in seguito.

  • Reindirizza gli utenti alla pagina di verifica reCAPTCHA e ricevi un reCAPTCHA. crea un criterio firewall con redirect su 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: nome della chiave. In genere, il nome di un sito.
      • WAF_SERVICE: il nome del provider 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 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: 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. 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,
      
      },
      "wafSettings": {
        "wafService": "cloudflare",
      
        
      
      }
      }
      
      

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

    Integrazione con Cloudflare

    Per utilizzare i criteri della firewall reCAPTCHA, devi eseguire il deployment e configurare un'applicazione serverless Cloudflare Worker.

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

    1. Crea un token CLOUDFLARE_API_TOKEN e scegli il modello Modifica Cloudflare Workers. 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. Apri il pacchetto reCAPTCHA per Cloudflare:

        tar -xvzf recaptcha_cloudflare_client_0.0.2.tar.gz
        
    2. Nel file wrangler.toml, configura le seguenti variabili nel 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: il tasto 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 di glob e utilizza ; come delimitatore. Questa opzione è disponibile solo per il token sessione reCAPTCHA.
      • RECAPTCHA_ASSESSMENT_CALL: gli URL delle pagine in cui vuoi che il worker di Cloudflare chiami l'API reCAPTCHA Enterprise per valutare il punteggio reCAPTCHA ed eseguire l'azione configurata nel criterio del firewall. Specifica percorsi come pattern glob e utilizza ; come delimitatore.

    3. Esegui il deployment dell'applicazione:

      wrangler deploy
      

    Configura le route di Cloudflare per l'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 Attivatori e poi 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.

    Creare 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à utilizzando 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. A seconda delle funzionalità che hai scelto, svolgi le seguenti operazioni:
      • 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 lo strumento gcloud Comando 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
      
        

      Fornisci i seguenti valori:

      • ACTION: le azioni che il fornitore di servizi WAF deve intraprendere per la richiesta in arrivo. 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 definitiva.
        • 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 del terminale.
        • set_header: consente di impostare un'intestazione personalizzata e consente alla richiesta utente in entrata di continuare con di un backend cloud. Il backend quindi può attivare una protezione personalizzata. Questa azione non è terminata.
      • 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 il valore 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 caratteri.
      • PATH: il percorso a cui si applica il criterio firewall reCAPTCHA. Deve essere specificato come pattern glob. Per ulteriori informazioni su glob, consulta la pagina manuale.

      Dopo l'esecuzione corretta del comando, viene visualizzato un output simile al seguente:

           Created [100].
         

      L'esempio seguente crea un criterio firewall reCAPTCHA per bloccare targeting del 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