

**Ti presentiamo una nuova esperienza di console per AWS WAF**

Ora puoi utilizzare l'esperienza aggiornata per accedere alle AWS WAF funzionalità da qualsiasi punto della console. Per ulteriori dettagli, consulta [Lavorare con la console](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo dell'API CAPTCHA JavaScript
<a name="waf-js-captcha-api"></a>

Questa sezione fornisce istruzioni per l'utilizzo dell'API di integrazione CAPTCHA.

L' JavaScript API CAPTCHA ti consente di configurare il puzzle CAPTCHA e posizionarlo dove vuoi nell'applicazione client. Questa API sfrutta le funzionalità della minaccia intelligente JavaScript APIs per acquisire e utilizzare i AWS WAF token dopo che un utente finale ha completato con successo un puzzle CAPTCHA. 

Implementa l' JavaScript integrazione prima in un ambiente di test, poi in produzione. Per ulteriori indicazioni sulla codifica, consulta le sezioni seguenti. 

**Per utilizzare l'API di integrazione CAPTCHA**

1. **Installa l'API**

   1. Accedi a Console di gestione AWS e apri la AWS WAF console all'indirizzo [https://console.aws.amazon.com/wafv2/homev2](https://console.aws.amazon.com/wafv2/homev2). 

   1. Nel riquadro di navigazione, scegliere **Application integration (Integrazione di applicazioni)**. Nella pagina di **integrazione dell'applicazione**, puoi vedere le opzioni a schede. 

   1. Seleziona Integrazione **CAPTCHA**.

   1. Copia il tag dello script di JavaScript integrazione elencato per utilizzarlo nella tua integrazione.

   1. Nel codice della pagina dell'applicazione, nella `<head>` sezione, inserisci il tag script che hai copiato. Questa inclusione rende il puzzle CAPTCHA disponibile per la configurazione e l'uso. 

      ```
      <head>
          <script type="text/javascript" src="integrationURL/jsapi.js" defer></script>
      </head>
      ```

      Questo `<script>` elenco è configurato con l'`defer`attributo, ma puoi modificare l'impostazione `async` se desideri un comportamento diverso per la tua pagina. 

      Lo script CAPTCHA carica automaticamente anche lo script di integrazione intelligente delle minacce se non è già presente. Lo script di integrazione intelligente delle minacce consente all'applicazione client di recuperare automaticamente un token in background al caricamento della pagina e fornisce altre funzionalità di gestione dei token necessarie per l'utilizzo dell'API CAPTCHA. 

1. **(Facoltativo) Aggiungi la configurazione del dominio per i token del client**: per impostazione predefinita, quando AWS WAF crea un token, utilizza il dominio host della risorsa associata al protection pack (Web ACL). Per fornire domini aggiuntivi per il JavaScript APIs, segui le istruzioni all'indirizzo. [Fornire domini da utilizzare nei token](waf-js-challenge-api-set-token-domain.md) 

1. **Ottieni la chiave API crittografata per il client**: l'API CAPTCHA richiede una chiave API crittografata che contenga un elenco di domini client validi. AWS WAF utilizza questa chiave per verificare che il dominio client che stai utilizzando con l'integrazione sia approvato per l'uso di CAPTCHA. AWS WAF Per generare la tua chiave API, segui le istruzioni all'indirizzo. [Gestione delle chiavi API per l'API JS CAPTCHA](waf-js-captcha-api-key.md)

1. **Codifica l'implementazione del widget CAPTCHA**: implementa la chiamata `renderCaptcha()` API nella tua pagina, nel luogo in cui desideri utilizzarla. Per informazioni sulla configurazione e l'uso di questa funzione, consulta le seguenti sezioni e. [Specifiche dell'API CAPTCHA JavaScript](waf-js-captcha-api-specification.md) [Come renderizzare il puzzle CAPTCHA](waf-js-captcha-api-render.md) 

   L'implementazione CAPTCHA si integra con l'integrazione intelligente delle minacce per la gestione dei token e APIs per l'esecuzione di chiamate di recupero che utilizzano i token. AWS WAF Per indicazioni sull'utilizzo di questi, consulta. APIs [Utilizzo dell' JavaScript API per le minacce intelligenti](waf-js-challenge-api.md)

1. **Aggiungi la verifica tramite token nel tuo pacchetto di protezione (Web ACL)**: aggiungi almeno una regola al tuo pacchetto di protezione (Web ACL) per verificare la presenza di un token CAPTCHA valido nelle richieste Web inviate dal client. È possibile utilizzare l'azione della CAPTCHA regola per verificare, come descritto in. [CAPTCHAe Challenge in AWS WAF](waf-captcha-and-challenge.md) 

   Le aggiunte al pacchetto di protezione (Web ACL) verificano che le richieste che arrivano agli endpoint protetti includano il token che hai acquisito nell'integrazione del client. Le richieste che includono un token CAPTCHA valido e non scaduto superano l'ispezione delle CAPTCHA regole e non presentano all'utente finale un altro puzzle CAPTCHA. 

Dopo aver implementato l' JavaScript API, puoi esaminare le CloudWatch metriche relative ai tentativi e alle soluzioni dei puzzle CAPTCHA. Per i dettagli sulle metriche e sulle dimensioni, consulta. [Metriche e dimensioni dell'account](waf-metrics.md#waf-metrics-account)

**Topics**
+ [Specifiche dell'API CAPTCHA JavaScript](waf-js-captcha-api-specification.md)
+ [Come renderizzare il puzzle CAPTCHA](waf-js-captcha-api-render.md)
+ [Gestione di una risposta CAPTCHA da AWS WAF](waf-js-captcha-api-conditional.md)
+ [Gestione delle chiavi API per l'API JS CAPTCHA](waf-js-captcha-api-key.md)

# Specifiche dell'API CAPTCHA JavaScript
<a name="waf-js-captcha-api-specification"></a>

Questa sezione elenca le specifiche dei metodi e delle proprietà del CAPTCHA. JavaScript APIs Usa il CAPTCHA JavaScript APIs per eseguire puzzle CAPTCHA personalizzati nelle tue applicazioni client. 

Questa API si basa sulla minaccia intelligente APIs, che utilizzi per configurare e gestire l'acquisizione e l'utilizzo dei token. AWS WAF Vedi[Specifiche dell'API per le minacce intelligenti](waf-js-challenge-api-specification.md).

**`AwsWafCaptcha.renderCaptcha(container, configuration)`**  
Presenta un puzzle AWS WAF CAPTCHA all'utente finale e, in caso di successo, aggiorna il token client con la convalida CAPTCHA. Questo è disponibile solo con l'integrazione CAPTCHA. Utilizzate questa chiamata insieme alla minaccia intelligente APIs per gestire il recupero dei token e fornire il token nelle chiamate. `fetch` Vedi la minaccia APIs intelligente su. [Specifiche dell'API per le minacce intelligenti](waf-js-challenge-api-specification.md)  
A differenza del CAPTCHA interstitial che AWS WAF invia, il puzzle CAPTCHA reso con questo metodo visualizza il puzzle immediatamente, senza una schermata iniziale del titolo.     
**`container`**  
L'`Element`oggetto per l'elemento contenitore di destinazione sulla pagina. Questo viene in genere recuperato chiamando `document.getElementById()` o`document.querySelector()`.  
Obbligatorio: sì  
Tipo: `Element`  
**configurazione**  
Un oggetto contenente le impostazioni di configurazione CAPTCHA, come segue: ****    
**`apiKey`**   
La chiave API crittografata che abilita le autorizzazioni per il dominio del client. Usa la AWS WAF console per generare le tue chiavi API per i domini dei tuoi clienti. Puoi utilizzare una chiave per un massimo di cinque domini. Per informazioni, consulta [Gestione delle chiavi API per l'API JS CAPTCHA](waf-js-captcha-api-key.md).   
Obbligatorio: sì  
Tipo: `string`  
**`onSuccess: (wafToken: string) => void;`**   
Chiamato con un AWS WAF token valido quando l'utente finale completa con successo un puzzle CAPTCHA. Utilizza il token nelle richieste inviate agli endpoint che proteggi con un pacchetto di AWS WAF protezione (Web ACL). Il token fornisce la prova e l'ora dell'ultimo completamento riuscito del puzzle.   
Obbligatorio: sì  
**`onError?: (error: CaptchaError) => void;`**   
Chiamato con un oggetto error quando si verifica un errore durante l'operazione CAPTCHA.   
Obbligatorio: no  
**`CaptchaError`definizione della classe** — Il `onError` gestore fornisce un tipo di errore con la seguente definizione di classe.   

```
CaptchaError extends Error {
    kind: "internal_error" | "network_error" | "token_error" | "client_error";
    statusCode?: number;
}
```
+ `kind`— Il tipo di errore restituito. 
+ `statusCode`— Il codice di stato HTTP, se disponibile. Viene utilizzato da `network_error` se l'errore è dovuto a un errore HTTP.  
**`onLoad?: () => void;`**   
Chiamato quando viene caricato un nuovo puzzle CAPTCHA.  
Obbligatorio: no  
**`onPuzzleTimeout?: () => void;`**   
Chiamato quando un puzzle CAPTCHA non viene completato prima della scadenza.  
Obbligatorio: no  
**`onPuzzleCorrect?: () => void;`**   
Chiamato quando viene fornita una risposta corretta a un puzzle CAPTCHA.  
Obbligatorio: no  
**`onPuzzleIncorrect?: () => void;`**   
Chiamato quando viene fornita una risposta errata a un puzzle CAPTCHA.  
Obbligatorio: no  
**`defaultLocale`**   
La localizzazione predefinita da usare per il puzzle CAPTCHA. Le istruzioni scritte per i puzzle CAPTCHA sono disponibili in arabo (ar-SA), cinese semplificato (zh-CN), olandese (nl-NL), inglese (en-US), francese (fr-FR), tedesco (de-DE), italiano (it-IT), giapponese (ja-JP), portoghese brasiliano (pt-BR), spagnolo (es-ES) e turco (tr-TR). Le istruzioni audio sono disponibili per tutte le lingue scritte tranne il cinese e il giapponese, che per impostazione predefinita è l'inglese. Per cambiare la lingua predefinita, fornisci la lingua internazionale e il codice locale, ad esempio`ar-SA`.  
Predefinita: la lingua attualmente in uso nel browser dell'utente finale  
Obbligatorio: no  
Tipo: `string`  
**`disableLanguageSelector`**   
Se impostato su`true`, il puzzle CAPTCHA nasconde il selettore della lingua.   
Impostazione predefinita: `false`  
Obbligatorio: no  
Tipo: `boolean`  
**`dynamicWidth`**   
Se impostato su`true`, il puzzle CAPTCHA cambia larghezza per compatibilità con la larghezza della finestra del browser.   
Impostazione predefinita: `false`  
Obbligatorio: no  
Tipo: `boolean`  
**`skipTitle`**   
**Se impostato su`true`, il puzzle CAPTCHA non visualizza il titolo del puzzle Risolvi il puzzle.**   
Impostazione predefinita: `false`  
Obbligatorio: no  
Tipo: `boolean`

# Come renderizzare il puzzle CAPTCHA
<a name="waf-js-captcha-api-render"></a>

Questa sezione fornisce un esempio `renderCaptcha` di implementazione.

È possibile utilizzare la AWS WAF `renderCaptcha` chiamata dove si desidera nell'interfaccia client. La chiamata recupera un puzzle CAPTCHA da AWS WAF, lo esegue il rendering e invia i risultati per la verifica. AWS WAF Quando effettui la chiamata, fornisci la configurazione di rendering del puzzle e i callback che desideri eseguire quando gli utenti finali completano il puzzle. Per informazioni dettagliate sulle opzioni, consultate la sezione precedente,. [Specifiche dell'API CAPTCHA JavaScript](waf-js-captcha-api-specification.md)

Utilizzate questa chiamata insieme alla funzionalità di gestione dei token dell'integrazione intelligente delle minacce. APIs Questa chiamata fornisce al cliente un token che verifica il completamento con successo del puzzle CAPTCHA. Utilizzate l'integrazione intelligente delle minacce APIs per gestire il token e per fornire il token nelle chiamate del cliente agli endpoint protetti con pacchetti di AWS WAF protezione (web). ACLs Per informazioni sulla minaccia intelligente APIs, consulta[Utilizzo dell' JavaScript API per le minacce intelligenti](waf-js-challenge-api.md).

**Implementazione di esempio**  
L'elenco di esempio seguente mostra un'implementazione CAPTCHA standard, incluso il posizionamento dell'URL di AWS WAF integrazione nella `<head>` sezione. 

Questo elenco configura la `renderCaptcha` funzione con un callback di successo che utilizza il `AwsWafIntegration.fetch` wrapper dell'integrazione intelligente delle minacce. APIs Per informazioni su questa funzione, vedere. [Come usare il `fetch` wrapper di integrazione](waf-js-challenge-api-fetch-wrapper.md)

```
<head>
    <script type="text/javascript" src="<Integration URL>/jsapi.js" defer></script>
</head>

<script type="text/javascript">
    function showMyCaptcha() {
        var container = document.querySelector("#my-captcha-container");
        
        AwsWafCaptcha.renderCaptcha(container, {
            apiKey: "...API key goes here...",
            onSuccess: captchaExampleSuccessFunction,
            onError: captchaExampleErrorFunction,
            ...other configuration parameters as needed...
        });
    }
    
    function captchaExampleSuccessFunction(wafToken) {
        // Captcha completed. wafToken contains a valid WAF token. Store it for
        // use later or call AwsWafIntegration.fetch() to use it easily.
        // It will expire after a time, so calling AwsWafIntegration.getToken()
        // again is advised if the token is needed later on, outside of using the
        // fetch wrapper.
        
        // Use WAF token to access protected resources
        AwsWafIntegration.fetch("...WAF-protected URL...", {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
            },
            body: "{ ... }" /* body content */
        });
    }
    
    function captchaExampleErrorFunction(error) {
        /* Do something with the error */
    }
</script>

<div id="my-captcha-container">
    <!-- The contents of this container will be replaced by the captcha widget -->
</div>
```

**Impostazioni di configurazione di esempio**  
L'elenco di esempio seguente mostra le opzioni `renderCaptcha` con impostazioni non predefinite per la larghezza e il titolo. 

```
        AwsWafCaptcha.renderCaptcha(container, {
            apiKey: "...API key goes here...",
            onSuccess: captchaExampleSuccessFunction,
            onError: captchaExampleErrorFunction,
            dynamicWidth: true, 
            skipTitle: true
        });
```

Per informazioni complete sulle opzioni di configurazione, vedere[Specifiche dell'API CAPTCHA JavaScript](waf-js-captcha-api-specification.md).

# Gestione di una risposta CAPTCHA da AWS WAF
<a name="waf-js-captcha-api-conditional"></a>

Questa sezione fornisce un esempio di gestione di una risposta CAPTCHA.

Una AWS WAF regola con un'CAPTCHAazione termina la valutazione di una richiesta web corrispondente se la richiesta non ha un token con un timestamp CAPTCHA valido. Se la richiesta è una `GET` text/html chiamata, l'CAPTCHAazione invia al client un messaggio interstiziale con un puzzle CAPTCHA. Quando non integri l' JavaScript API CAPTCHA, l'interstitial esegue il puzzle e, se l'utente finale lo risolve con successo, invia nuovamente la richiesta automaticamente. 

Quando integri l' JavaScript API CAPTCHA e personalizzi la gestione del CAPTCHA, devi rilevare la risposta CAPTCHA di terminazione, fornire il CAPTCHA personalizzato e, se l'utente finale risolve con successo il puzzle, inviare nuovamente la richiesta web del cliente. 

L'esempio di codice seguente mostra come eseguire tale operazione. 

**Nota**  
La risposta AWS WAF CAPTCHA all'azione ha un codice di stato HTTP 405, che utilizziamo per riconoscere la risposta in questo codice. CAPTCHA Se l'endpoint protetto utilizza un codice di stato HTTP 405 per comunicare qualsiasi altro tipo di risposta per la stessa chiamata, questo codice di esempio genererà anche un puzzle CAPTCHA per quelle risposte. 

```
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="<Integration URL>/jsapi.js" defer></script>
</head>
<body>
    <div id="my-captcha-box"></div>
    <div id="my-output-box"></div>

    <script type="text/javascript">
    async function loadData() {
        // Attempt to fetch a resource that's configured to trigger a CAPTCHA
        // action if the rule matches. The CAPTCHA response has status=HTTP 405.
        const result = await AwsWafIntegration.fetch("/protected-resource");

        // If the action was CAPTCHA, render the CAPTCHA and return

        // NOTE: If the endpoint you're calling in the fetch call responds with HTTP 405
        // as an expected response status code, then this check won't be able to tell the
        // difference between that and the CAPTCHA rule action response.

        if (result.status === 405) {
            const container = document.querySelector("#my-captcha-box");
            AwsWafCaptcha.renderCaptcha(container, {
                apiKey: "...API key goes here...",
                onSuccess() {
                    // Try loading again, now that there is a valid CAPTCHA token
                    loadData();
                },
            });
            return;
        }

        const container = document.querySelector("#my-output-box");
        const response = await result.text();
        container.innerHTML = response;
    }

    window.addEventListener("load", () => {
        loadData();
    });
    </script>
</body>
</html>
```

# Gestione delle chiavi API per l'API JS CAPTCHA
<a name="waf-js-captcha-api-key"></a>

Questa sezione fornisce istruzioni per la generazione e l'eliminazione delle chiavi API.

Per integrare AWS WAF CAPTCHA in un'applicazione client con l' JavaScript API, sono necessari il tag di integrazione JavaScript API e la chiave API crittografata per il dominio client in cui desideri eseguire il puzzle CAPTCHA. 

L'integrazione dell'applicazione CAPTCHA JavaScript utilizza le chiavi API crittografate per verificare che il dominio dell'applicazione client sia autorizzato a utilizzare l'API CAPTCHA. AWS WAF Quando richiami l'API CAPTCHA dal tuo JavaScript client, fornisci una chiave API con un elenco di domini che include un dominio per il client corrente. Puoi elencare fino a 5 domini in un'unica chiave crittografata. 

**Requisiti delle chiavi API**  
La chiave API che utilizzi nell'integrazione CAPTCHA deve contenere un dominio applicabile al client in cui utilizzi la chiave. 
+ Se specifichi una `window.awsWafCookieDomainList` nell'integrazione intelligente delle minacce del tuo client, almeno un dominio nella tua chiave API deve corrispondere esattamente a uno dei domini token in `window.awsWafCookieDomainList` o deve essere il dominio apex di uno di quei domini token. 

  Ad esempio, per il dominio token`mySubdomain.myApex.com`, la chiave `mySubdomain.myApex.com` API corrisponde esattamente e la chiave API `myApex.com` è il dominio apex. Entrambe le chiavi corrispondono al dominio del token. 

  Per informazioni sull'impostazione dell'elenco dei domini dei token, vedere[Fornire domini da utilizzare nei token](waf-js-challenge-api-set-token-domain.md).
+ Altrimenti, il dominio corrente deve essere contenuto nella chiave API. Il dominio corrente è il dominio che puoi vedere nella barra degli indirizzi del browser. 

I domini che utilizzi devono essere accettati, in base al dominio host protetto e all'elenco di domini token configurato per l'ACL web. AWS WAF Per ulteriori informazioni, consulta [AWS WAF configurazione dell'elenco di domini con token protection pack (Web ACL)](waf-tokens-domains.md#waf-tokens-domain-lists).

**Come scegliere la regione per la tua chiave API**  
AWS WAF può generare chiavi API CAPTCHA in qualsiasi regione in cui AWS WAF sia disponibile. 

Come regola generale, è necessario utilizzare la stessa regione per la chiave API CAPTCHA utilizzata per il pacchetto di protezione (Web ACL). Se ti aspetti un pubblico globale per un pacchetto di protezione regionale (ACL web), tuttavia, puoi ottenere un tag di JavaScript integrazione CAPTCHA con ambito e una chiave API con ambito a CloudFront, CloudFront e utilizzarli con un pacchetto di protezione regionale (ACL web). Questo approccio consente ai clienti di caricare un puzzle CAPTCHA dalla regione più vicina a loro, il che riduce la latenza. 

Le chiavi API CAPTCHA destinate a regioni diverse da quelle non CloudFront sono supportate per l'uso in più regioni. Possono essere utilizzate solo nella regione a cui sono destinate. 

**Per generare una chiave API per i domini dei tuoi clienti**  
Per ottenere l'URL di integrazione e generare e recuperare le chiavi API tramite la console. 

1. Accedi a Console di gestione AWS e apri la AWS WAF console all'indirizzo [https://console.aws.amazon.com/wafv2/homev2](https://console.aws.amazon.com/wafv2/homev2). 

1. Nel riquadro di navigazione, scegliere **Application integration (Integrazione di applicazioni)**. 

1. Nel riquadro, contenente i **protection pack (web ACLs) abilitati per l'integrazione delle applicazioni**, seleziona la regione che desideri utilizzare per la tua chiave API. Puoi anche selezionare la regione nel riquadro delle **chiavi API** della scheda di **integrazione CAPTCHA**.

1. Scegli la scheda Integrazione **CAPTCHA**. Questa scheda fornisce il tag di JavaScript integrazione CAPTCHA, che puoi utilizzare nella tua integrazione, e l'elenco delle chiavi API. Entrambi si riferiscono alla regione selezionata.

1. Nel riquadro **Chiavi API**, scegli **Genera chiave**. Viene visualizzata la finestra di dialogo per la generazione delle chiavi. 

1. Inserisci i domini client che desideri includere nella chiave. Puoi inserire fino a 5. Quando hai finito, scegli **Genera chiave**. L'interfaccia torna alla scheda di integrazione CAPTCHA, dove è elencata la tua nuova chiave. 

   Una volta creata, una chiave API è immutabile. Se devi apportare modifiche a una chiave, genera una nuova chiave e usala al suo posto. 

1. (Facoltativo) Copia la chiave appena generata per utilizzarla nella tua integrazione. 

Puoi anche usare il REST APIs o uno dei linguaggi specifici AWS SDKs per questo lavoro. [Le chiamate API REST sono [APIKeyCreate](https://docs.aws.amazon.com/waf/latest/APIReference/API_CreateAPIKey.html) e List. APIKeys](https://docs.aws.amazon.com/waf/latest/APIReference/API_ListAPIKeys.html) 

**Come eliminare una chiave API**  
Per eliminare una chiave API, è necessario utilizzare l'API REST o una delle lingue specifiche AWS SDKs. La chiamata all'API REST è [Delete APIKey](https://docs.aws.amazon.com/waf/latest/APIReference/API_DeleteAPIKey.html). Non puoi utilizzare la console per eliminare una chiave. 

Dopo aver eliminato una chiave, possono essere necessarie fino a 24 ore prima che non AWS WAF venga consentita l'utilizzo della chiave in tutte le aree geografiche. 