Configura protezione espressa reCAPTCHA WAF

Questo documento mostra come configurare protezione espressa reCAPTCHA WAF (WAF express reCAPTCHA) su un server di applicazioni senza integrare gli SDK JavaScript reCAPTCHA (web) o nativi per dispositivi mobili (iOS o Android).

reCAPTCHA WAF express utilizza solo indicatori di backend per generare un punteggio di rischio reCAPTCHA. Puoi utilizzare questo punteggio di rischio per decidere se inviare la richiesta, reindirizzare a una pagina di verifica o registrarla per un'analisi successiva.

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. 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 un secondo momento.

Crea chiave espressa reCAPTCHA WAF

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

  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 le chiavi reCAPTCHA, utilizza il comando gcloud recaptcha keys create.

    Prima di utilizzare qualsiasi dato di comando riportato 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: domini o sottodomini di siti web autorizzati a utilizzare la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica express.
    • WAF_SERVICE: nome del provider 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 delle 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: domini o sottodomini di siti web autorizzati a utilizzare la chiave. Specifica --allow-all-domains.
    • WAF_FEATURE: nome della funzionalità WAF. Specifica express.
    • WAF_SERVICE: nome del provider 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:

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

Registra la chiave express per utilizzarla in seguito.

Crea una valutazione

Per effettuare una richiesta a reCAPTCHA dal tuo server delle applicazioni, crea una valutazione utilizzando il metodo projects.assessments.create.

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

  • API_KEY: la chiave API che hai creato per l'autenticazione.
  • EXPRESS_KEY: chiave espressa reCAPTCHA WAF che hai creato per la tua applicazione.
  • USER_IP_ADDRESS: l'indirizzo IP nella richiesta da parte del dispositivo dell'utente relativa a questo evento.
  • HEADER_INFO: facoltativo. Le intestazioni HTTP che il client ha inviato al server delle applicazioni.
  • JA3_FINGERPRINT: facoltativo. JA3 è un'impronta MD5 di alcuni campi del pacchetto hello del client TLS. Per ulteriori informazioni, consulta JA3 - Un metodo per la profilazione dei client SSL/TLS.
  • URI_NAME: facoltativo. L'URI a cui l'utente accede.
  • USER_AGENT: facoltativo. Lo user agent presente nella richiesta dal dispositivo dell'utente relativa a questo evento.
  • ACCOUNT_ID: facoltativo. Un identificatore univoco e permanente dell'account dell'utente, ad esempio il nome di un account con hash.

Metodo HTTP e URL:

POST https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY

Corpo JSON della richiesta:


{
  "event": {
    "siteKey": "EXPRESS_KEY",
    "express": true,
    "userIpAddress": "USER_IP_ADDRESS",
    "headers": ["HEADER_INFO"],
    "ja3": "JA3_FINGERPRINT",
    "requestedUri": "URI_NAME",
    "userAgent": "USER_AGENT",
    "user_info": {
      "account_id": "ACCOUNT_ID"
    }
  }
}

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 "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://public-preview-recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=API_KEY"

PowerShell

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

$headers = @{  }

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

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/123456789/assessments/abcdef1234000000",
  "event": {
    "token": "",
    "siteKey": "6L...",
    "userAgent": "Mozilla/5.0 (X11; CrOS x86_64 13816.55.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.86 Safari/537.36",
    "userIpAddress": "1.2.3.4",
    "express": true,
    "requestedUri": "https://example.com/",
    "firewallPolicyEvaluation": false,
    "user_info": {
      "account_id": "123456789"
    }
  },
  "riskAnalysis": {
    "score": 0.7,
    "reasons": []
  }
}

Passaggi successivi