Integra reCAPTCHA Enterprise per WAF con Cloudflare

Questo documento mostra come integrare reCAPTCHA Enterprise per WAF con Cloudflare.

Per completare l'integrazione, devi implementare una o più funzionalità di reCAPTCHA Enterprise per WAF, creare criteri firewall reCAPTCHA e integrarli con Cloudflare eseguendo il deployment e configurando un'applicazione Cloudflare Worker serverless.

Prima di iniziare

  1. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

    Registra il tuo ID progetto Google Cloud per utilizzarlo in un secondo momento.

  2. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  3. Attiva l'API reCAPTCHA Enterprise.

    Abilita l'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, quindi seleziona Chiave API.
    3. Registra la chiave API per utilizzarla in seguito.

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

    1. Scegli una o più funzionalità WAF più adatte al tuo caso d'uso.
    2. Identifica le pagine che vuoi proteggere.
    3. Scegli il tipo di funzionalità WAF che vuoi implementare nelle pagine identificate.
    4. Identifica le condizioni per gestire l'accesso degli utenti.
    5. Comprendi i componenti dei criteri firewall reCAPTCHA e i relativi attributi che ti consentono di creare criteri firewall reCAPTCHA. Ad esempio, consulta gli esempi di criteri firewall reCAPTCHA.
  6. Crea o scegli un account Cloudflare con funzionalità Cloudflare Worker.

  7. Crea o scegli un sito web di Cloudflare.

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

Implementa le funzionalità di reCAPTCHA Enterprise per WAF

A seconda dei requisiti, puoi utilizzare una o più funzionalità di reCAPTCHA Enterprise per WAF in una singola applicazione.

Se vuoi usare più funzionalità, devi creare una chiave reCAPTCHA per ognuna 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 token di azione e una chiave della pagina di verifica e utilizzarle nella tua applicazione.

token di azione

Per generare token di azione, è necessario che reCAPTCHA Enterprise sia in esecuzione sulle tue pagine web. Dopo che reCAPTCHA Enterprise ha generato un token di azione, lo colleghi 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 in base al traffico. Devi collegare il token di azione a un'intestazione della richiesta predefinita prima della scadenza del token, in modo che cloudflare possa valutare gli attributi del token.

Per implementare un token di azione reCAPTCHA:

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

    gcloud

    Per creare 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score o checkbox.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave.

      Specifica più domini sotto forma di elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disabilitare la verifica del dominio.

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

    • WAF_FEATURE: 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 sulle API sui tipi di chiave e di integrazione, consulta Chiave 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score o checkbox.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave.

      Specifica più domini sotto forma di elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disabilitare la verifica del dominio.

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

    • WAF_FEATURE: nome della funzionalità WAF. Specifica action-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:

    arricciatura

    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 il codice JavaScript reCAPTCHA nelle tue pagine web con la chiave del token di azione 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 Enterprise, collegalo a un'intestazione della richiesta predefinita nel seguente formato:
     X-Recaptcha-Token: value-of-your-action-token
    

    Puoi utilizzare linguaggi come XHR, Ajax o Fetch API per collegare il token a un'intestazione della richiesta predefinita.

    Il seguente script di esempio mostra come proteggere l'azione execute e collegare 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>
    
      

token di sessione

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

Per fornire un token di sessione come cookie, installa una chiave del token di sessione in almeno una delle pagine web visitate dall'utente finale prima di quella che deve essere protetta. Ad esempio, se vuoi proteggere la pagina di pagamento, installa una chiave token di sessione nella home page o nella pagina del prodotto.

Puoi includere il codice JavaScript reCAPTCHA nelle tue pagine web configurando il file wrangler.toml durante l'installazione del pacchetto reCAPTCHA per Cloudflare o installare la chiave di sessione sulle tue pagine web. L'inclusione del codice JavaScript reCAPTCHA di Cloudflare consente di integrare reCAPTCHA Enterprise tramite la chiave token di sessione, senza dover installare manualmente le chiavi sulle pagine web.

Puoi utilizzare questo cookie per proteggere le successive richieste e i caricamenti delle pagine dell'utente finale su un dominio specifico. Per impostazione predefinita, i token di sessione sono validi per 30 minuti. Tuttavia, se l'utente finale rimane nella pagina in cui hai implementato il token di sessione, reCAPTCHA Enterprise lo aggiorna periodicamente per evitare che scada.

Installa i token di sessione su ogni pagina che deve essere protetta da reCAPTCHA Enterprise. Ti consigliamo di proteggere ogni pagina con reCAPTCHA Enterprise 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 token di sessione reCAPTCHA di esempio:
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

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

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

    gcloud

    Per creare 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave.

      Specifica più domini sotto forma di elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disabilitare la verifica del dominio.

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

    • WAF_FEATURE: nome della funzionalità WAF. Specifica session-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 sulle API sui tipi di chiave e di integrazione, consulta Chiave 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave.

      Specifica più domini sotto forma di elenco separato da virgole. (Facoltativo) Specifica --allow-all-domains per disabilitare la verifica del dominio.

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

    • WAF_FEATURE: 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:

    arricciatura

    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"
    
    }
    }
    
    

    Registrare la chiave del token di sessione per utilizzarla in un secondo momento.

    Se vuoi inserire il codice JavaScript 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-sfida

Quando implementi una pagina di test reCAPTCHA, reCAPTCHA Enterprise reindirizza a una pagina interstitial in cui determina se è necessario mostrare un test CAPTCHA a un utente. Pertanto, le verifiche CAPTCHA potrebbero non essere visibili a tutti gli utenti.

Per implementare una pagina di test reCAPTCHA:

  1. Crea una chiave di pagina challenge per il tuo sito web.

    gcloud

    Per creare 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica invisible.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: 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 sulle API sui tipi di chiave e di integrazione, consulta Chiave 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica invisible.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: 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:

    arricciatura

    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"
    
    }
    }
    
    

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

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

espresso

Per implementare protezione espressa reCAPTCHA WAF, crea una chiave express.

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. gcloud

    Per creare 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica express.
    • WAF_SERVICE: nome del fornitore di servizi WAF.

    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 sulle API sui tipi di chiave e di integrazione, consulta Chiave 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.
    • INTEGRATION_TYPE: tipo di integrazione. Specifica score.
    • DOMAIN_NAME: i domini o i sottodomini di siti web a cui è consentito utilizzare la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica express.
    • WAF_SERVICE: nome del fornitore di servizi WAF.

    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:

    arricciatura

    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": "EXPRESS"
    
    }
    }
    
    

    Registra la tua chiave express per utilizzarla in seguito.

Integrazione con Cloudflare

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

Prima di iniziare il processo di integrazione, segui questi passaggi:

  1. Crea un CLOUDFLARE_API_TOKEN e scegli il modello Modifica worker Cloudflare. Registra il token dell'API per utilizzarlo in seguito.

  2. Ottieni l'ID account dell'API Cloudflare e registralo per un utilizzo futuro.

Installa il pacchetto reCAPTCHA per Cloudflare

  1. Scarica e installa il pacchetto reCAPTCHA per Cloudflare:

    1. Nella console Google Cloud, attiva Cloud Shell.

      Attiva Cloud Shell

      Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

    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 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 la protezione espressa reCAPTCHA WAF.
    • RECAPTCHA_SESSION_SITE_KEY: la chiave per token di sessione se utilizzi il token di sessione reCAPTCHA.
    • RECAPTCHA_ACTION_SITE_KEY: la chiave per token di azione se utilizzi il token di azione reCAPTCHA.
    • RECAPTCHA_CHALLENGE_SITE_KEY: la chiave della pagina di verifica se utilizzi la pagina di verifica reCAPTCHA.
    • RECAPTCHA_JS_INSTALL: URL delle pagine in cui vuoi che il worker Cloudflare installi il codice JavaScript reCAPTCHA utilizzando la chiave del token di sessione. Specifica i percorsi come pattern glob e utilizza ; come delimitatore. Questa opzione è disponibile solo per il token di sessione reCAPTCHA.
    • RECAPTCHA_ASSESSMENT_CALL: URL delle pagine in cui vuoi che il worker Cloudflare chiami l'API reCAPTCHA per valutare il punteggio reCAPTCHA ed eseguire l'azione configurata nel criterio firewall. Specifica i percorsi come pattern glob e utilizza ; come delimitatore.

  3. Esegui il deployment dell'applicazione:

    wrangler deploy
    

Configura le route 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 Pagine, quindi seleziona l'applicazione Worker.
  3. Fai clic sulla scheda Trigger e poi su Aggiungi percorso.
  4. Nella finestra di dialogo Aggiungi route, inserisci il percorso della pagina web che deve essere protetta da reCAPTCHA Enterprise, seleziona la zona appropriata e fai clic su Aggiungi route.

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 una o più funzionalità di reCAPTCHA Enterprise per WAF.

Nel criterio firewall reCAPTCHA, aggiungi le regole nell'ordine di priorità prevista. La prima regola ha l'ordine più alto. Puoi anche riordinare la priorità utilizzando ReorderFirewallPoliciesRequest. Per una richiesta in entrata, 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:
    • Identifica il percorso da proteggere.
    • Identifica le condizioni per consentire, reindirizzare o bloccare l'accesso.
    • Dai la priorità alle regole.
  2. Comprendi i componenti dei criteri firewall e i relativi attributi.
  3. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

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

    Nel criterio firewall reCAPTCHA, aggiungi le regole in base alla priorità prevista. Devi prima aggiungere una regola con la priorità più alta. Per una richiesta in entrata, 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. 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 eseguire per la richiesta in entrata. Può contenere al massimo un'azione di terminale, ovvero un'azione che forza una risposta. Specifica una delle seguenti azioni:
      • allow: consente l'accesso alla pagina richiesta. Questa è un'azione del terminale.
      • block: nega l'accesso alla pagina richiesta. Questa è un'azione del terminale.
      • redirect: reindirizza la richiesta dell'utente in arrivo alla pagina di verifica reCAPTCHA. Questa è un'azione del terminale.
      • substitute: consente di pubblicare una pagina diversa da quella richiesta a seguito di una richiesta fraudolenta dell'utente. Questa è un'azione del terminale.
      • set_header: imposta un'intestazione personalizzata e consente alla richiesta dell'utente in entrata di proseguire verso il backend. Il backend può quindi attivare una protezione personalizzata. Questa azione non è terminale.
    • CONDITION: un'espressione condizionale CEL (Common Expression Language) 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 fornitore di servizi WAF. La stringa di condizione viene controllata per verificare che la sintassi CEL sia corretta al momento della creazione. Per ulteriori informazioni sulla definizione della lingua, consulta la definizione della lingua CEL.
    • DESCRIPTION: una descrizione degli obiettivi del criterio firewall reCAPTCHA. La descrizione deve contenere al massimo 256 caratteri UTF-8.
    • PATH: il percorso a cui si applica il criterio firewall reCAPTCHA. Deve essere specificato come pattern glob. Per maggiori informazioni sul glob, consulta la pagina del manuale.

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

         Created [100].
       

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