Ce document vous explique comment intégrer reCAPTCHA pour WAF avec Cloudflare.
Pour terminer l'intégration, vous devez implémenter une ou plusieurs fonctionnalités de reCAPTCHA pour WAF, créer des règles de pare-feu reCAPTCHA et intégrer Cloudflare en déployant et en configurant une application Cloudflare Worker sans serveur.
Avant de commencer
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Notez l'ID de votre projet Google Cloud pour l'utiliser ultérieurement.Make sure that billing is enabled for your Google Cloud project.
Enable the reCAPTCHA Enterprise API.
Créez une clé API pour l'authentification :
Dans la console Google Cloud, accédez à la page Identifiants. - Cliquez sur Créer des identifiants, puis sélectionnez Clé API.
- Enregistrez la clé API pour une utilisation ultérieure.
Planifiez comment vous souhaitez implémenter les fonctionnalités de reCAPTCHA pour WAF afin de protéger votre site Web.
- Choisir une ou plusieurs fonctionnalités WAF qui correspondent le mieux à votre cas d'utilisation.
- Identifiez les pages que vous souhaitez protéger.
- Choisissez le type de fonctionnalités de pare-feu d'application Web que vous souhaitez implémenter sur les pages identifiées.
- Identifiez les conditions à remplir pour gérer l'accès des utilisateurs.
- Découvrez les composants et attributs des règles de pare-feu reCAPTCHA qui vous aident à créer des règles de pare-feu reCAPTCHA. Pour obtenir des exemples, consultez Exemples de stratégies de pare-feu reCAPTCHA
Créez ou choisissez un compte Cloudflare doté des fonctionnalités de nœud de calcul Cloudflare.
Créez ou choisissez un site Web Cloudflare.
Téléchargez le package reCAPTCHA pour Cloudflare
recaptcha_cloudflare_client_0.0.2.tar.gz
.
Implémenter les fonctionnalités de reCAPTCHA pour WAF
Selon vos besoins, vous pouvez utiliser une ou plusieurs fonctionnalités reCAPTCHA pour WAF dans une seule application.
Si vous souhaitez utiliser plusieurs fonctionnalités, vous devez créer une clé reCAPTCHA pour chacune d'elles et les utiliser dans votre application. Par exemple, si vous si vous souhaitez utiliser des jetons d'action reCAPTCHA et une page de test reCAPTCHA, vous devez créer une clé de jeton d'action et une clé de page de test, et les utiliser dans votre application.
action-token
Vous devez exécuter reCAPTCHA sur vos pages Web pour générer des jetons d'action.
Une fois que reCAPTCHA a généré un jeton d'action, vous devez l'associer à un
l'en-tête de requête là où vous devez protéger toute action de l'utilisateur, par exemple checkout
. Par défaut, les jetons d'action sont valides pendant 30 minutes, mais ce délai peut varier en fonction du trafic.
Vous devez associer le jeton d'action à un en-tête de requête prédéfini avant son expiration, afin que
Cloudflare peut évaluer les attributs du jeton.
Pour implémenter un jeton d'action reCAPTCHA, procédez comme suit :
Créez une clé de jeton d'action pour votre site Web.
gcloud
Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME : nom de la clé. Généralement un nom de site.
- INTEGRATION_TYPE: type d'intégration.
Spécifiez
score
oucheckbox
. - DOMAIN_NAME: domaines ou sous-domaines des sites Web autorisés à utiliser
la clé.
Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez
--allow-all-domains
pour désactiver la validation du domaine.La désactivation de la validation du domaine représente un risque de sécurité, car il n'y a des restrictions sur le site, afin que votre clé reCAPTCHA soit accessible et utilisée par quiconque.
- WAF_FEATURE: nom de la fonctionnalité WAF.
Spécifiez
action-token
. - WAF_SERVICE : nom du fournisseur de service de pare-feu d'application.
Spécifiez
cloudflare
pour cloudflare.
Exécutez la commande gcloud recaptcha keys create :
Linux, macOS ou 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 réponse contient la clé reCAPTCHA nouvellement créée.
REST
Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME: nom de la clé. Généralement un nom de site.
- INTEGRATION_TYPE: type d'intégration.
Spécifiez
score
oucheckbox
. - DOMAIN_NAME: domaines ou sous-domaines des sites Web autorisés à utiliser
la clé.
Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez
--allow-all-domains
pour désactiver la validation du domaine.La désactivation de la validation du domaine représente un risque de sécurité, car il n'y a des restrictions sur le site, afin que votre clé reCAPTCHA soit accessible et utilisée par quiconque.
- WAF_FEATURE: nom de la fonctionnalité WAF.
Spécifiez
action-token
. - WAF_SERVICE : nom du fournisseur de service de pare-feu d'application.
Spécifiez
cloudflare
pour cloudflare.
Méthode HTTP et URL :
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corps JSON de la requête :
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :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
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :$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 ContentVous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "SCORE", }, "wafSettings": { "wafService": "cloudflare", "wafFeature": "ACTION_TOKEN" } }
Enregistrez la clé de jeton d'action pour une utilisation ultérieure.
-
Intégrez le code JavaScript reCAPTCHA à vos pages Web à l'aide de la clé d'action-token qui
que vous avez créés. Pour obtenir des instructions, consultez le document correspondant aux
Type d'intégration de votre clé de jeton d'action.
- Pour le type d'intégration
SCORE
, consultez Intégrer des clés basées sur des scores avec l'interface. - Pour le type d'intégration
CHECKBOX
, consultez Afficher le widget reCAPTCHA sur l'interface.
- Pour le type d'intégration
-
Après avoir reçu le jeton de reCAPTCHA, associez-le à
un en-tête de requête prédéfini au format suivant:
X-Recaptcha-Token: value-of-your-action-token
Vous pouvez utiliser des langages tels que XHR, Ajax ou l'API Fetch pour associer le jeton à un en-tête de requête prédéfini.
L'exemple de script suivant montre comment protéger l'action
execute
et associer le jeton à un en-tête de requête prédéfini à l'aide de 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
Le code JavaScript reCAPTCHA définit un jeton de session reCAPTCHA en tant que cookie sur le navigateur de l'utilisateur final après l'évaluation. Le navigateur de l'utilisateur final associe le cookie et l'actualise tant que le code JavaScript reCAPTCHA reste actif.
Pour fournir un jeton de session en tant que cookie, installez une clé de jeton de session sur à l'adresse au moins une des pages Web que l'utilisateur final consulte avant la page qui a besoin à protéger. Par exemple, si vous souhaitez protéger la page de paiement, installez une clé de jeton de session sur la page d'accueil ou la page du produit.
Vous pouvez inclure le code JavaScript reCAPTCHA sur vos pages Web en configurant
wrangler.toml
lors de l'installation du package reCAPTCHA pour
Cloudflare ou install
la clé de session sur vos pages Web. L'inclusion du code JavaScript reCAPTCHA de Cloudflare intègre reCAPTCHA à l'aide de la clé de jeton de session, sans avoir à installer manuellement les clés sur vos pages Web.
Vous pouvez utiliser ce cookie pour protéger les demandes ultérieures de l'utilisateur final et sur un domaine spécifique. Les jetons de session sont valides par défaut pendant 30 minutes. Toutefois, si l'utilisateur final reste sur la page sur laquelle vous avez mis en œuvre la session-token, reCAPTCHA actualise régulièrement le jeton de session pour l'empêcher d'expirer.
Installez des jetons de session sur chaque page devant être protégée par reCAPTCHA. Nous vous recommandons de protéger chaque page à l'aide de reCAPTCHA et d'utiliser des règles Google Cloud Armor pour imposer l'accès sur toutes les pages, à l'exception de la première que les utilisateurs finaux consultent.
Voici un exemple de jeton de session reCAPTCHA :recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time
Pour implémenter un jeton de session reCAPTCHA, procédez comme suit :
- Créez une clé de jeton de session pour votre site Web.
gcloud
Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME : nom de la clé. Généralement un nom de site.
- INTEGRATION_TYPE : type d'intégration.
Spécifiez
score
. - DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé.
Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez
--allow-all-domains
pour désactiver la validation du domaine.La désactivation de la validation du domaine représente un risque de sécurité, car il n'y a des restrictions sur le site, afin que votre clé reCAPTCHA soit accessible et utilisée par quiconque.
- WAF_FEATURE : nom de la fonctionnalité du pare-feu d'application Web.
Spécifiez
session-token
. - WAF_SERVICE : nom du fournisseur de service de pare-feu d'application.
Spécifiez
cloudflare
pour cloudflare.
Exécutez la gcloud recaptcha keys create :
Linux, macOS ou 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 réponse contient la clé reCAPTCHA nouvellement créée.
REST
Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME: nom de la clé. Généralement un nom de site.
- INTEGRATION_TYPE : type d'intégration.
Spécifiez
score
. - DOMAIN_NAME : domaines ou sous-domaines de sites Web autorisés à utiliser la clé.
Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez
--allow-all-domains
pour désactiver la validation du domaine.La désactivation de la validation du domaine représente un risque de sécurité, car il n'y a des restrictions sur le site, afin que votre clé reCAPTCHA soit accessible et utilisée par quiconque.
- WAF_FEATURE : nom de la fonctionnalité du pare-feu d'application Web.
Spécifiez
session-token
. - WAF_SERVICE : nom du fournisseur de service de pare-feu d'application.
Spécifiez
cloudflare
pour cloudflare.
Méthode HTTP et URL :
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corps JSON de la requête :
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :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
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :$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 ContentVous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "SCORE", }, "wafSettings": { "wafService": "cloudflare", "wafFeature": "SESSION_TOKEN" } }
Enregistrez votre clé de jeton de session pour une utilisation ultérieure.
Si vous souhaitez injecter le code JavaScript reCAPTCHA à partir de Cloudflare, ignorez l'étape suivante et configurez
wranger.toml
. -
Ajoutez la clé de jeton de session et
waf=session
au code JavaScript reCAPTCHA.L'exemple de script suivant montre comment implémenter un jeton de session sur une page 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
Lorsque vous implémentez une page de test reCAPTCHA, redirige vers une page interstitielle où elle détermine si la diffusion un test CAPTCHA à un utilisateur. Par conséquent, les tests CAPTCHA peuvent ne pas être visible par tous les utilisateurs.
Pour implémenter une page de test reCAPTCHA, procédez comme suit :
- Créez une clé de page de test pour votre site Web.
gcloud
Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME : nom de la clé. Généralement un nom de site.
- INTEGRATION_TYPE : type d'intégration.
Spécifiez
invisible
. - DOMAIN_NAME: domaines ou sous-domaines des sites Web autorisés à utiliser
la clé.
Spécifiez
--allow-all-domains
. - WAF_FEATURE : nom de la fonctionnalité du pare-feu d'application Web.
Spécifiez
challenge-page
. - WAF_SERVICE: nom du
fournisseur de services WAF.
Spécifiez
cloudflare
pour cloudflare.
Exécutez la commande gcloud recaptcha keys create :
Linux, macOS ou 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 réponse contient la clé reCAPTCHA nouvellement créée.
REST
Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME: nom de la clé. Généralement un nom de site.
- INTEGRATION_TYPE : type d'intégration.
Spécifiez
invisible
. - DOMAIN_NAME: domaines ou sous-domaines des sites Web autorisés à utiliser
la clé.
Spécifiez
--allow-all-domains
. - WAF_FEATURE : nom de la fonctionnalité du pare-feu d'application Web.
Spécifiez
challenge-page
. - WAF_SERVICE: nom du
fournisseur de services WAF.
Spécifiez
cloudflare
pour cloudflare.
Méthode HTTP et URL :
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corps JSON de la requête :
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :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
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :$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 ContentVous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "INVISIBLE", }, "wafSettings": { "wafService": "cloudflare", "wafFeature": "CHALLENGE_PAGE" } }
Enregistrez votre clé de page de défi pour une utilisation ultérieure.
- Rediriger les utilisateurs vers la page de test reCAPTCHA et recevoir un reCAPTCHA
créez une stratégie de pare-feu avec le
redirect
sur les pages protégées.
express
Pour implémenter reCAPTCHA Express, créez une clé Express.
-
In the Google Cloud console, 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.
-
gcloud
Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME : nom de la clé. Généralement un nom de site.
- WAF_SERVICE : nom du fournisseur de service de pare-feu d'application.
Spécifiez
cloudflare
pour cloudflare.
Exécutez la gcloud recaptcha keys create :
Linux, macOS ou 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 réponse contient la clé reCAPTCHA nouvellement créée.
REST
Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- DISPLAY_NAME: nom de la clé. Généralement un nom de site.
- WAF_SERVICE: nom du
fournisseur de services WAF.
Spécifiez
cloudflare
pour cloudflare.
Méthode HTTP et URL :
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corps JSON de la requête :
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :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
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :$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 ContentVous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, }, "wafSettings": { "wafService": "cloudflare", } }
Enregistrez votre clé express pour une utilisation ultérieure.
Intégrer à Cloudflare
Pour utiliser les règles de pare-feu reCAPTCHA, vous devez déployer et configurer une application sans serveur Cloudflare Worker.
Avant de commencer le processus d'intégration, procédez comme suit:
Créez un jeton CLOUDFLARE_API_TOKEN, puis sélectionnez le modèle Edit Cloudflare Workers (Modifier les nœuds de calcul Cloudflare). Enregistrez le jeton d'API pour une utilisation ultérieure.
Obtenez votre ID de compte d'API Cloudflare et enregistrez-le pour une utilisation ultérieure.
Installer le package reCAPTCHA pour Cloudflare
Téléchargez et installez le package reCAPTCHA pour Cloudflare:
In the Google Cloud console, 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.
Installez le package wrangler :
npm install -g wrangler
Téléchargez le package reCAPTCHA pour 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
Décompressez le package reCAPTCHA pour Cloudflare :
tar -xvzf recaptcha_cloudflare_client_0.0.2.tar.gz
Dans le fichier
wrangler.toml
, configurez les variables suivantes dans le fichier Section vars:- GCP_API_KEY: clé API Google Cloud que vous avez créée pour l'authentification unique.
- GCP_PROJECT_NUMBER: numéro de votre projet Google Cloud.
- RECAPTCHA_EXPRESS_SITE_KEY : clé express si vous utilisez reCAPTCHA Express.
- RECAPTCHA_SESSION_SITE_KEY : clé du jeton de session si vous utilisez un jeton de session reCAPTCHA.
- RECAPTCHA_ACTION_SITE_KEY : clé du jeton d'action si vous utilisez un jeton d'action reCAPTCHA.
- RECAPTCHA_CHALLENGE_SITE_KEY : clé de la page de test si vous utilisez la page de test reCAPTCHA.
- RECAPTCHA_JS_INSTALL: URL des pages sur lesquelles vous souhaitez
Cloudflare pour installer
reCAPTCHA JavaScript utilisant la clé de jeton de session. Spécifiez le paramètre
chemins d'accès sous forme de schéma glob
et utilisez
;
comme délimiteur. Cette option n'est disponible que pour le jeton de session reCAPTCHA. RECAPTCHA_ASSESSMENT_CALL : URL des pages pour lesquelles vous souhaitez que le worker Cloudflare appelle l'API reCAPTCHA Enterprise pour évaluer le score reCAPTCHA et effectuer l'action configurée dans la stratégie de pare-feu. Spécifiez le paramètre chemins d'accès sous forme de schéma glob et utilisez
;
comme délimiteur.
Pour déployer l'application, procédez comme suit :
wrangler deploy
Configurer les routes Cloudflare vers l'application du nœud de calcul
- Connectez-vous au tableau de bord Cloudflare et sélectionnez votre compte.
- Dans le menu de navigation, cliquez sur Nœuds de calcul et Pages, puis sélectionnez votre application de nœud de calcul.
- Cliquez sur l'onglet Déclencheurs, puis sur Ajouter un parcours.
- Dans la boîte de dialogue Ajouter un parcours, saisissez le chemin d'accès de votre page Web à protéger par reCAPTCHA, sélectionnez la zone appropriée, puis cliquez sur Ajouter un parcours.
Créer des stratégies de pare-feu reCAPTCHA
Vous devez créer une stratégie de pare-feu qui spécifie des règles pour chaque page que vous souhaitez protéger sur votre site Web. Vous pouvez créer des stratégies de pare-feu plus de fonctionnalités de reCAPTCHA pour WAF.
Dans votre stratégie de pare-feu reCAPTCHA, ajoutez des règles dans l'ordre
leur priorité. La première règle a l'ordre le plus élevé. Vous pouvez également réorganiser
la priorité à l'aide de ReorderFirewallPoliciesRequest
.
Pour une requête entrante, lorsqu'une condition de règle correspond au chemin d'accès spécifié, votre fournisseur de services WAF implémente l'action définie et les règles suivantes ne sont pas évaluées.
- En fonction des fonctionnalités que vous avez choisies, procédez comme suit:
- Identifiez le chemin que vous souhaitez protéger.
- Identifiez les conditions pour autoriser, rediriger ou bloquer l'accès.
- Définissez la priorité des règles.
- Comprendre les composants des règles de pare-feu et leurs attributs
-
In the Google Cloud console, 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.
- Pour forcer la gcloud CLI à accéder à la version Preview publique de
l'API reCAPTCHA, exécutez la commande suivante:
gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
- Pour créer des stratégies de pare-feu reCAPTCHA, utilisez la commande gcloud recaptcha firewall-policies create :
Dans votre stratégie de pare-feu reCAPTCHA, ajoutez des règles dans l'ordre leur priorité. Vous devez d'abord ajouter une règle ayant la priorité la plus élevée. Pour une requête entrante, lorsqu'une condition de stratégie correspond au chemin spécifié, votre fournisseur de services WAF met en œuvre l'action définie et l'opérateur les règles ne sont pas évaluées. La règle par défaut est d'autoriser l'accès.
gcloud recaptcha firewall-policies create \ --actions=ACTION \ --condition=CONDITION \ --description=DESCRIPTION \ --path=PATH
Indiquez les valeurs suivantes :
- ACTION: actions que votre fournisseur de services WAF doit effectuer
pour la requête entrante. Il ne peut contenir qu'une seule action terminale, qui est une action qui force une réponse.
Spécifiez l'une des actions suivantes:
allow
: autorise l'accès à la page demandée. Cette action est irréversible.block
: refuse l'accès à la page demandée. Cette action est irréversible.redirect
: redirige la requête utilisateur entrante vers la page de test reCAPTCHA. Cette action est irréversible.substitute
: diffuse une page différente de celle demandée à une demande d'utilisateur frauduleuse. Cette action est définitive.set_header
: définit un en-tête personnalisé et permet à la requête entrante de l'utilisateur d'accéder au backend. Le backend peut alors déclencher une protection personnalisée. Il s'agit d'une action non finale.
- CONDITION: un CEL (Common Expression Language) qui spécifie si la stratégie de pare-feu reCAPTCHA s'applique à une requête d'utilisateur entrante. Si cette condition est évaluée à "true" et que le chemin d'accès demandé correspond au modèle de chemin d'accès, les actions associées sont exécutées par le fournisseur de services WAF. La syntaxe CEL de la chaîne de condition est vérifiée lors de la création. Pour en savoir plus sur la définition du langage, consultez la définition du langage CEL.
- DESCRIPTION: description de ce que le pare-feu reCAPTCHA à atteindre. La description ne doit pas comporter plus de 256 caractères UTF-8. caractères.
- PATH : chemin d'accès auquel la stratégie de pare-feu reCAPTCHA s'applique. Il doit être spécifié sous forme de modèle glob. Pour en savoir plus sur glob, consultez la page de manuel.
Une fois la commande exécutée, un résultat semblable à celui-ci s'affiche :
Created [100].
L'exemple suivant crée une stratégie de pare-feu reCAPTCHA pour bloquer le ciblage du trafic pour
/example/page.html
lorsque le score est inférieur à 0,1.gcloud recaptcha firewall-policies create \ --description="example policy" \ --path="/example/page.html" \ --condition="recaptcha.score < 0.1" \ --actions="block"
- ACTION: actions que votre fournisseur de services WAF doit effectuer
pour la requête entrante. Il ne peut contenir qu'une seule action terminale, qui est une action qui force une réponse.
Spécifiez l'une des actions suivantes: