Neste documento, mostramos como integrar o reCAPTCHA Enterprise para WAF ao Cloudflare.
Para concluir a integração, é preciso implementar um ou mais recursos do reCAPTCHA Enterprise para WAF, criar políticas de firewall reCAPTCHA e se integrar ao Cloudflare implantando e configurando um aplicativo Cloudflare Worker sem servidor.
Antes de começar
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Registre o ID do projeto do Google Cloud para usar depois.Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
Enable the reCAPTCHA Enterprise API.
Crie uma chave de API para autenticação:
No console do Google Cloud, acesse a página Credenciais. - Clique em Criar credenciais e, em seguida, selecione Chave de API.
- Registre a chave de API para uso posterior.
Planeje como você quer implementar os recursos do reCAPTCHA Enterprise para WAF para proteger seu site.
- Escolha um ou mais recursos do WAF que melhor correspondam ao seu caso de uso.
- Identifique as páginas que você quer proteger.
- Escolha o tipo de recursos do WAF que você quer implementar nas páginas identificadas.
- Identifique as condições para gerenciar o acesso dos usuários.
- Entenda os componentes da política de firewall reCAPTCHA e os respectivos atributos que ajudam a criar políticas de firewall reCAPTCHA. Para exemplos, consulte Exemplos de políticas de firewall reCAPTCHA.
Crie ou escolha uma conta do Cloudflare com os recursos do Cloudflare Worker.
Crie ou escolha um site do Cloudflare.
Faça o download do pacote reCAPTCHA para o Cloudflare
recaptcha_cloudflare_client_0.0.2.tar.gz
.
Implementar recursos do reCAPTCHA Enterprise para WAF
Dependendo dos seus requisitos, é possível usar um ou mais recursos do reCAPTCHA Enterprise para WAF em um único aplicativo.
Se você quiser usar mais de um recurso, crie uma chave reCAPTCHA para cada um desses recursos e use-os no aplicativo. Por exemplo, se você quiser usar tokens de ação e uma página de desafio reCAPTCHA, será necessário criar uma chave de token de ação e uma chave de página de desafio e usá-las no aplicativo.
token de ação
O reCAPTCHA Enterprise precisa estar em execução nas suas páginas da Web para gerar tokens de ação.
Depois que o reCAPTCHA Enterprise gera um token de ação, anexe-o a um cabeçalho de
solicitação predefinido sempre que for necessário proteger qualquer ação do usuário, como checkout
. Por padrão, os tokens de ação são válidos por 30 minutos, mas podem variar dependendo do tráfego.
Você precisa anexar o token de ação a um cabeçalho de solicitação predefinido antes que o token expire. Assim, o cloudflare pode avaliar os atributos do token.
Para implementar um token de ação reCAPTCHA, faça o seguinte:
Crie uma chave de token de ação para seu site.
gcloud
Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.
Antes de usar os dados do comando abaixo, faça estas substituições:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
score
oucheckbox
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique
--allow-all-domains
para desativar a verificação de domínio.Desativar a verificação de domínio é um risco de segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.
- WAF_FEATURE: nome do recurso WAF.
Especifique
action-token
. - WAF_SERVICE: nome do
provedor de serviços WAF.
Especifique
cloudflare
para o cloudflare.
Execute o comando 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
A resposta contém a chave reCAPTCHA recém-criada.
REST
Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.Antes de usar os dados da solicitação, faça as substituições a seguir:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
score
oucheckbox
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique
--allow-all-domains
para desativar a verificação de domínio.Desativar a verificação de domínio é um risco de segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.
- WAF_FEATURE: nome do recurso WAF.
Especifique
action-token
. - WAF_SERVICE: nome do
provedor de serviços WAF.
Especifique
cloudflare
para o cloudflare.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corpo JSON da solicitação:
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir: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
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:$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 ContentVocê receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "SCORE", }, "wafSettings": { "wafService": "cloudflare", "wafFeature": "ACTION_TOKEN" } }
Registre sua chave do token de ação para uso posterior.
-
Integre o reCAPTCHA JavaScript às suas páginas da Web com a chave do token de ação que você criou. Para instruções, consulte o documento que corresponde ao
tipo de integração da sua chave do token de ação.
- Para o tipo de integração
SCORE
, consulte Integrar chaves baseadas em pontuação com o front-end. - Para o tipo de integração
CHECKBOX
, consulte Renderizar o widget reCAPTCHA no front-end.
- Para o tipo de integração
-
Depois de receber o token do reCAPTCHA Enterprise, anexe-o a
um cabeçalho de solicitação predefinido no seguinte formato:
X-Recaptcha-Token: value-of-your-action-token
É possível usar linguagens como XHR, Ajax ou API Fetch para anexar o token a um cabeçalho de solicitação predefinido.
O exemplo de script a seguir mostra como proteger a ação
execute
e anexar o token a um cabeçalho de solicitação predefinido usando 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 de sessão
O JavaScript reCAPTCHA define um token de sessão reCAPTCHA como um cookie no navegador do usuário final após a avaliação. O navegador do usuário final anexa o cookie e o atualiza, desde que o JavaScript reCAPTCHA permaneça ativo.
Para fornecer um token de sessão como um cookie, instale uma chave de token de sessão em pelo menos uma das suas páginas da Web em que o usuário final navega antes da página que precisa ser protegida. Por exemplo, se você quiser proteger a página de finalização da compra, instale uma chave de token de sessão na página inicial ou na página do produto.
É possível incluir o JavaScript reCAPTCHA nas suas páginas da Web configurando o arquivo wrangler.toml
ao instalar o pacote reCAPTCHA para o Cloudflare ou instalar a chave de sessão nas páginas da Web. A inclusão do JavaScript reCAPTCHA do Cloudflare integra o reCAPTCHA Enterprise usando a chave de token de sessão sem a necessidade de instalação manual das chaves nas páginas da Web.
É possível usar esse cookie para proteger as solicitações subsequentes e os carregamentos de página do usuário final em um domínio específico. Por padrão, os tokens de sessão são válidos por 30 minutos. No entanto, se o usuário final permanecer na página em que você implementou o token de sessão, o reCAPTCHA Enterprise vai atualizar o token periodicamente para evitar que ele expire.
Instale os tokens de sessão em cada página que precisa ser protegida pelo reCAPTCHA Enterprise. Recomendamos que você proteja todas as páginas com o reCAPTCHA Enterprise e use as regras do Google Cloud Armor para aplicar o acesso a todas elas, exceto à primeira página em que os usuários finais navegam.
Veja a seguir um exemplo de token de sessão reCAPTCHA:recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time
Para implementar um token de sessão reCAPTCHA, faça o seguinte:
- Crie uma chave de token de sessão para seu site.
gcloud
Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.
Antes de usar os dados do comando abaixo, faça estas substituições:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
score
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique
--allow-all-domains
para desativar a verificação de domínio.Desativar a verificação de domínio é um risco de segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.
- WAF_FEATURE: nome do recurso WAF.
Especifique
session-token
. - WAF_SERVICE: nome do
provedor de serviços WAF.
Especifique
cloudflare
para o cloudflare.
Execute o comando 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
A resposta contém a chave reCAPTCHA recém-criada.
REST
Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.Antes de usar os dados da solicitação, faça as substituições a seguir:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
score
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Para especificar vários domínios, use um formato de lista separada por vírgulas. Opcional: especifique
--allow-all-domains
para desativar a verificação de domínio.Desativar a verificação de domínio é um risco de segurança porque não há restrições no site. Portanto, sua chave reCAPTCHA pode ser acessada e usada por qualquer pessoa.
- WAF_FEATURE: nome do recurso WAF.
Especifique
session-token
. - WAF_SERVICE: nome do
provedor de serviços WAF.
Especifique
cloudflare
para o cloudflare.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corpo JSON da solicitação:
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir: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
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:$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 ContentVocê receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "SCORE", }, "wafSettings": { "wafService": "cloudflare", "wafFeature": "SESSION_TOKEN" } }
Registre sua chave do token de sessão para uso posterior.
Se você quiser injetar o JavaScript reCAPTCHA do Cloudflare, pule a próxima etapa e configure
wranger.toml
. -
Adicione a chave do token de sessão e
waf=session
ao JavaScript reCAPTCHA.O exemplo de script a seguir mostra como implementar um token de sessão em uma página da 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>
página-do-desafio
Quando você implementa uma página de desafio do reCAPTCHA, o reCAPTCHA Enterprise é redirecionado para uma página intersticial em que determina se é necessário mostrar um desafio CAPTCHA para um usuário. Portanto, os desafios CAPTCHA podem não ser visíveis para todos os usuários.
Para implementar uma página de desafio do reCAPTCHA, faça o seguinte:
- Crie uma chave de página de desafio para seu site.
gcloud
Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.
Antes de usar os dados do comando abaixo, faça estas substituições:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
invisible
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Especifique
--allow-all-domains
. - WAF_FEATURE: nome do recurso WAF.
Especifique
challenge-page
. - WAF_SERVICE: nome do
provedor de serviços WAF.
Especifique
cloudflare
para o cloudflare.
Execute o comando 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
A resposta contém a chave reCAPTCHA recém-criada.
REST
Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.Antes de usar os dados da solicitação, faça as substituições a seguir:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
invisible
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Especifique
--allow-all-domains
. - WAF_FEATURE: nome do recurso WAF.
Especifique
challenge-page
. - WAF_SERVICE: nome do
provedor de serviços WAF.
Especifique
cloudflare
para o cloudflare.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corpo JSON da solicitação:
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir: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
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:$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 ContentVocê receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "INVISIBLE", }, "wafSettings": { "wafService": "cloudflare", "wafFeature": "CHALLENGE_PAGE" } }
Registre sua chave da página de desafio para uso posterior.
- Para redirecionar os usuários à página de desafio do reCAPTCHA e receber um token
reCAPTCHA, crie uma política de firewall com a ação
redirect
em páginas protegidas.
expresso
Para implementar a proteção expressa do reCAPTCHA WAF, crie uma chave expressa.
-
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
Para criar chaves reCAPTCHA, use o comando gcloud recaptcha keys create.
Antes de usar os dados do comando abaixo, faça estas substituições:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
score
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Especifique
--allow-all-domains
. - WAF_FEATURE: nome do recurso WAF.
Especifique
express
. - WAF_SERVICE: nome do provedor de serviços WAF.
Execute o comando 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
A resposta contém a chave reCAPTCHA recém-criada.
REST
Para informações de referência da API sobre tipos de integração e chave, consulte Chave e Tipo de integração.Antes de usar os dados da solicitação, faça as substituições a seguir:
- DISPLAY_NAME: nome da chave. Geralmente, um nome de site.
- INTEGRATION_TYPE: tipo de integração.
Especifique
score
. - DOMAIN_NAME: domínios ou subdomínios de sites com permissão para usar
a chave.
Especifique
--allow-all-domains
. - WAF_FEATURE: nome do recurso WAF.
Especifique
express
. - WAF_SERVICE: nome do provedor de serviços WAF.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys
Corpo JSON da solicitação:
{ "displayName": "DISPLAY_NAME", 'wafSettings': " { "wafService": "WAF_SERVICE", "wafFeature": "WAF_FEATURE" } "webSettings": { "allowedDomains": "DOMAINS", "integrationType": "TYPE_OF_INTEGRATION" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir: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
Salve o corpo da solicitação em um arquivo com o nome
request.json
e execute o comando a seguir:$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 ContentVocê receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m", "displayName": "DISPLAY_NAME, "webSettings": { "allowAllDomains": true, "allowedDomains": [ "localhost" ], "integrationType": "SCORE", }, "wafSettings": { "wafService": "cloudflare", "wafFeature": "EXPRESS" } }
Grave sua chave expressa para uso posterior.
Integrar com o Cloudflare
Para usar as políticas de firewall reCAPTCHA, é preciso implantar e configurar um aplicativo sem servidor do Cloudflare Worker.
Antes de iniciar o processo de integração, faça o seguinte:
Crie um CLOUDFLARE_API_TOKEN e escolha o modelo Editar workers do Cloudflare. Registre o token de API para uso posterior.
Receba o ID da conta da API Cloudflare e registre-o para uso posterior.
Instalar o pacote reCAPTCHA para o Cloudflare
Faça o download e instale o pacote reCAPTCHA para o 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.
Instale o pacote wrangler:
npm install -g wrangler
Faça o download do pacote reCAPTCHA para o 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
Descompacte o pacote reCAPTCHA para o Cloudflare:
tar -xvzf recaptcha_cloudflare_client_0.0.2.tar.gz
No arquivo
wrangler.toml
, configure as seguintes variáveis na seção vars:- GCP_API_KEY: a chave de API do Google Cloud que você criou para autenticação.
- GCP_PROJECT_NUMBER: o número do projeto do Google Cloud.
- RECAPTCHA_EXPRESS_SITE_KEY: a chave expressa se você estiver usando a proteção expressa do reCAPTCHA WAF.
- RECAPTCHA_SESSION_SITE_KEY: a chave do token de sessão, se você estiver usando o token de sessão reCAPTCHA.
- RECAPTCHA_ACTION_SITE_KEY: a chave do token de ação, se você estiver usando o token de ação reCAPTCHA.
- RECAPTCHA_CHALLENGE_SITE_KEY: a chave da página de desafio, se você estiver usando a página de desafio reCAPTCHA.
- RECAPTCHA_JS_INSTALL: URLs das páginas em que você quer que o worker do Cloudflare instale o JavaScript reCAPTCHA usando a chave de token de sessão. Especifique os
caminhos como um padrão glob
e use
;
como delimitador. Essa opção está disponível apenas para o token de sessão reCAPTCHA. RECAPTCHA_ASSESSMENT_CALL: URLs das páginas em que você quer que o worker do Cloudflare chame a API reCAPTCHA para avaliar a pontuação reCAPTCHA e executar a ação configurada na política de firewall. Especifique os caminhos como um padrão glob e use
;
como delimitador.
Implante o aplicativo:
wrangler deploy
Configurar rotas do Cloudflare para o aplicativo Worker
- Faça login no painel do Cloudflare e selecione sua conta.
- No menu de navegação, clique em Workers & Pages e selecione o aplicativo Worker.
- Clique na guia Acionadores e em Adicionar rota.
- Na caixa de diálogo Adicionar rota, insira o caminho da página da Web que precisa ser protegido pelo reCAPTCHA Enterprise, selecione a zona adequada e clique em Adicionar rota.
Criar políticas de firewall do reCAPTCHA
Crie uma política de firewall que especifique regras para cada página que você quer proteger no site. É possível criar políticas de firewall com um ou mais recursos do reCAPTCHA Enterprise para WAF.
Na política de firewall reCAPTCHA, adicione regras na ordem de prioridade
pretendida. A primeira regra tem a ordem mais alta. Também é possível reordenar a
prioridade usando ReorderFirewallPoliciesRequest
.
Para uma solicitação recebida, quando uma condição de política corresponde ao caminho especificado,
o provedor de serviços WAF implementa a ação definida, e as regras subsequentes
não são avaliadas.
- Com base nos recursos escolhidos, faça o seguinte:
- Identifique o caminho que você quer proteger.
- Identifique as condições para permitir, redirecionar ou bloquear o acesso.
- Priorize as regras.
- Entenda os componentes da política de firewall e os respectivos atributos.
-
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.
- Para modificar a CLI gcloud e acessar a versão de pré-lançamento pública da
API reCAPTCHA Enterprise, execute o seguinte comando:
gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
- Para criar políticas de firewall do reCAPTCHA, use o comando gcloud
recaptcha firewall-policies create:
Na política de firewall reCAPTCHA, adicione regras em ordem de prioridade pretendida. Primeiro, adicione uma regra com a prioridade mais alta. Para uma solicitação recebida, quando uma condição de política corresponde ao caminho especificado, o provedor de serviços WAF implementa a ação definida, e as regras subsequentes não são avaliadas. A regra padrão é permitir o acesso.
gcloud recaptcha firewall-policies create \ --actions=ACTION \ --condition=CONDITION \ --description=DESCRIPTION \ --path=PATH
Forneça os valores a seguir:
- ACTION: as ações que o provedor de serviços WAF precisa realizar
para a solicitação recebida. Ele pode conter no máximo uma ação terminal, que
força uma resposta.
Especifique uma das seguintes ações:
allow
: permite o acesso à página solicitada. Esta é uma ação do terminal.block
: nega acesso à página solicitada. Esta é uma ação do terminal.redirect
: redireciona a solicitação do usuário recebida para a página de desafio do reCAPTCHA. Esta é uma ação do terminal.substitute
: exibe uma página diferente da solicitada para uma solicitação de usuário fraudulenta. Esta é uma ação do terminal.set_header
: define um cabeçalho personalizado e permite que a solicitação do usuário recebida continue para o back-end. Então, o back-end pode acionar uma proteção personalizada. Esta ação não é terminal.
- CONDITION: uma expressão condicional CEL (Common Expression Language) que especifica se a política de firewall reCAPTCHA se aplica a uma solicitação do usuário recebida. Se essa condição for avaliada como verdadeira e o caminho solicitado corresponder ao padrão de caminho, as ações associadas serão executadas pelo provedor de serviços WAF. A string de condição é verificada quanto à precisão da sintaxe CEL na criação. Para mais informações sobre a definição de idioma, definição de linguagem CEL.
- DESCRIPTION: uma descrição do que a política de firewall reCAPTCHA pretende alcançar. A descrição precisa ter no máximo 256 caracteres UTF-8.
- PATH: o caminho ao qual a política de firewall reCAPTCHA se aplica. Ele precisa ser especificado como um padrão glob. Para mais informações sobre o glob, consulte a página manual.
Após a execução do comando, uma saída semelhante a esta será exibida:
Created [100].
O exemplo a seguir cria uma política de firewall reCAPTCHA para bloquear a segmentação de tráfego para "/example/page.html" quando a pontuação for menor que 0,1.
gcloud recaptcha firewall-policies create \ --description="example policy" \ --path="/example/page.html" \ --condition="recaptcha.score < 0.1" \ --actions="block"
- ACTION: as ações que o provedor de serviços WAF precisa realizar
para a solicitação recebida. Ele pode conter no máximo uma ação terminal, que
força uma resposta.
Especifique uma das seguintes ações: