Configura protezione espressa reCAPTCHA WAF

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

reCAPTCHA WAF express utilizza solo indicatori di backend per generare un punteggio di rischio reCAPTCHA. Puoi utilizzare questo punteggio di rischio per decidere se pubblicare 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 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. 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, quindi seleziona Chiave API.

    3. Registra la chiave API per utilizzarla in seguito.

Crea chiave express reCAPTCHA WAF

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

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

Registra la tua chiave express per utilizzarla in seguito.

Crea una valutazione

Per effettuare una richiesta dal tuo server di applicazioni a reCAPTCHA Enterprise, 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 express reCAPTCHA WAF che hai creato per l'applicazione.
  • USER_IP_ADDRESS: l'indirizzo IP nella richiesta dal dispositivo dell'utente relativa a questo evento.
  • HEADER_INFO: facoltativo. Le intestazioni HTTP inviate dal client al server delle applicazioni.
  • JA3_FINGERPRINT: facoltativo. JA3 è un'impronta MD5 di determinati campi del pacchetto hello del client TLS. Per ulteriori informazioni, vedi 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 proveniente dal dispositivo dell'utente relativa a questo evento.

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

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 "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
  },
  "riskAnalysis": {
    "score": 0.7,
    "reasons": []
  }
}

Passaggi successivi