Neste documento, mostramos como usar o reCAPTCHA Account Defender para detectar e evitar atividades fraudulentas relacionadas a contas em sites.
O reCAPTCHA ajuda a proteger ações importantes, como login e finalização da compra. No entanto, há muitas formas sutis de abuso de conta que podem ser detectadas ao observar o comportamento de um usuário específico em um site por um período de tempo. O defensor da conta do reCAPTCHA ajuda a identificar esses tipos de abuso sutil criando um modelo específico do site para detectar uma tendência de comportamento suspeito ou uma mudança na atividade. Ao usar o modelo específico do site, o defensor da conta do reCAPTCHA ajuda a detectar o seguinte:
- Atividades suspeitas
- Contas com comportamentos parecidos
- Solicitações de dispositivos marcados como confiáveis para usuários específicos
Com base na análise do defensor da conta do reCAPTCHA e do modelo específico do site, você pode realizar as seguintes ações:
- Restrinja ou desative contas fraudulentas.
- Evite tentativas de invasão de conta.
- Reduza as invasões de contas bem-sucedidas.
- Conceda acesso apenas às solicitações de contas de usuários legítimas.
- Reduzir o atrito para usuários que fazem login em um dos dispositivos de confiança.
Antes de começar
Configurar suas páginas da Web para o defensor da conta do reCAPTCHA
O defensor da conta do reCAPTCHA exige um entendimento abrangente das atividades da conta para permitir uma detecção eficaz. Para começar a fornecer atividades relacionadas à conta ao defensor da conta do reCAPTCHA e criar e melhorar seu modelo específico do site, faça o seguinte:
- Ative a coleta de dados de telemetria horizontal.
- Gerar relatórios sobre ações críticas do usuário.
- Avalie eventos críticos do usuário.
- Anotar eventos do usuário para ajustar seu modelo específico do site.
Ativar a coleta de dados de telemetria horizontal
O reCAPTCHA Account Defender exige uma visão completa das ações do usuário, como se ele está conectado ou se está tentando fazer login. Para ativar a coleta passiva de dados de telemetria horizontal pelo reCAPTCHA Account Defender, carregue o script JavaScript do reCAPTCHA com a chave do site baseada em pontuação criada em segundo plano em todas as páginas da Web que fazem parte do fluxo de trabalho do usuário.
O exemplo a seguir mostra como carregar o script JavaScript do reCAPTCHA em uma página da Web.
<head> <script src="https://www.google.com/recaptcha/enterprise.js?render=KEY_ID"></script> .... </head>
Gerar relatórios sobre ações críticas do usuário
Para detectar padrões de atividade suspeitos e entender melhor os padrões de atividade típicos no site, o reCAPTCHA Account Defender precisa de informações sobre ações críticas do usuário. Portanto, denuncie ações críticas do usuário nas páginas da Web chamando grecaptcha.enterprise.execute() nessas ações.
Recomendamos que você informe todas as ações críticas do usuário, porque isso ajuda na coleta de outros indicadores. Para cada ação do usuário que você quer informar,
substitua o valor do parâmetro action
de grecaptcha.enterprise.execute()
por um nome que descreva a ação do usuário.
A tabela a seguir lista os nomes de ações que você pode usar ao informar as ações críticas do usuário.
Nome da ação | Evento ou ação iniciada pelo usuário |
---|---|
LOGIN |
Faça login no site. |
REGISTRATION |
Registro no site. |
SECURITY_QUESTION_CHANGE |
Solicitação para mudar a pergunta de segurança. |
PASSWORD_RESET |
Solicitação para redefinir a senha. |
PHONE_NUMBER_UPDATE |
Solicitação para atualizar o número de telefone. |
EMAIL_UPDATE |
Solicitação para atualizar o endereço de e-mail. |
ACCOUNT_UPDATE |
Solicitar a atualização de informações relacionadas à conta, como dados de contato. |
TRIGGER_MFA |
Uma ação que aciona um teste de MFA. |
REDEEM_CODE |
Solicitar o resgate do código. |
LIST_PAYMENT_METHODS |
Extrai a lista de formas de pagamento. |
O exemplo a seguir mostra como chamar grecaptcha.enterprise.execute()
em uma
atualização de número de telefone:
<script> function onClick(e) { e.preventDefault(); grecaptcha.enterprise.ready(async () => { const token = await grecaptcha.enterprise.execute('KEY_ID', {action: 'PHONE_NUMBER_UPDATE'}); }); } </script>
Avaliar eventos críticos do usuário
Quando você chama grecaptcha.enterprise.execute()
em uma ação do usuário, um token é gerado. Para os eventos críticos de usuário, como logins e registros bem-sucedidos e com falha, além de ações de usuários conectados, crie uma avaliação para analisar os resultados da chamada grecaptcha.enterprise.execute()
. A avaliação fornece um veredito de risco, que pode ser usado para tomar uma decisão sobre como lidar com atividades potencialmente fraudulentas. Algumas das ações que você pode realizar são bloquear solicitações
suspeitas, desafiar logins arriscados e investigar contas de interesse.
O reCAPTCHA Account Defender exige que você forneça um identificador de conta estável para atribuir a atividade do usuário, como solicitações de login, solicitações de login e solicitações de inscrição, a uma conta específica. Isso ajuda o reCAPTCHA Account Defender a entender os padrões de atividade do usuário e criar um modelo de atividade para cada conta, detectando melhor o tráfego anômalo e abusivo.
Escolha um identificador de conta estável accountId
que não seja alterado com frequência pelo usuário e forneça-o à avaliação no método
projects.assessments.create
. Esse identificador de conta estável precisa ter o mesmo valor para todos os eventos relacionados ao mesmo usuário. Você pode fornecer o seguinte como identificador da conta:
Identificadores de usuários
Se cada conta puder ser associada de forma exclusiva a um nome de usuário, endereço de e-mail ou número de telefone estável, use essas informações como accountId
. Quando você fornece esses identificadores entre sites (que podem ser reutilizados em vários sites), o reCAPTCHA usa essas informações para melhorar a proteção das suas contas de usuário com base em modelos entre sites. Para isso, ele sinaliza identificadores de contas abusivas e usa o conhecimento de padrões de abuso entre sites relacionados a esses identificadores.
Como alternativa, se você tiver um ID de usuário interno associado exclusivamente a cada conta, forneça-o como accountId
.
Criptografadas ou transformadas em hash
Se você não tiver um ID de usuário interno associado de forma exclusiva a cada conta, poderá transformar qualquer identificador estável em um identificador de conta opaco e específico do site. Esse identificador ainda é necessário para que o reCAPTCHA Account Defender entenda os padrões de atividade do usuário e detecte comportamentos anômalos, mas não é compartilhado em outros sites.
Escolha um identificador de conta estável e o torne opaco antes de enviar ao reCAPTCHA usando criptografia ou hash:
criptografia (recomendado): criptografe o identificador da conta usando um método de criptografia determinista que produza um texto cifrado estável. Para instruções detalhadas, consulte criptografar dados de forma determinística. Ao escolher a criptografia simétrica em vez do hash, não é necessário manter um mapeamento entre seus identificadores de usuário e os identificadores opacos correspondentes. Descriptografe os identificadores opacos retornados pelo reCAPTCHA para transformá-los no identificador do usuário.
Geração de hash: recomendamos gerar hash do identificador da conta usando o método SHA256-HMAC com um salt personalizado de sua escolha. Como os hashes são unidirecionais, é necessário manter um mapeamento entre os hashes gerados e os identificadores de usuário para que seja possível mapear o identificador de conta com hash que é retornado para as contas originais.
Além de fornecer um identificador de conta estável para todas as solicitações relacionadas à conta, você
pode fornecer outros identificadores de conta, possivelmente não estáveis, para algumas solicitações específicas.
Os identificadores de conta específicos do contexto fornecidos, além do accountId
, ajudam o defensor da conta do reCAPTCHA a entender melhor a atividade do usuário e detectar tentativas de invasão para manter as contas seguras. Quando você fornece identificadores adicionais, o reCAPTCHA usa essas informações para melhorar a proteção das suas contas de usuário com base em modelos entre sites, sinalizando identificadores de contas abusivas e usando o conhecimento de padrões de abuso entre sites relacionados a esses identificadores. Por exemplo, você pode fornecer o seguinte:
O nome de usuário, endereço de e-mail ou número de telefone usado como identificador de login para solicitações de login.
O endereço de e-mail ou número de telefone verificado para uma solicitação de autenticação multifator
Um endereço de e-mail ou número de telefone (principal ou secundário) fornecido pelo usuário durante uma solicitação de atualização da conta
Os endereços de e-mail e números de telefone fornecidos pelo usuário durante uma solicitação de registro
Adicione o identificador de conta estável escolhido ao parâmetro accountId
no método
projects.assessments.create
para todas as solicitações relacionadas à conta. Opcionalmente, forneça outros identificadores de conta para as solicitações relevantes usando o campo userIds
na avaliação.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do Google Cloud projeto
- TOKEN: token retornado da chamada
grecaptcha.enterprise.execute()
- KEY_ID: chave reCAPTCHA associada ao site
- ACCOUNT_ID: o identificador associado exclusivamente à conta de usuário de um usuário no seu site.
- EMAIL_ADDRESS: opcional. Um endereço de e-mail associado a esta solicitação, se houver.
- PHONE_NUMBER: opcional. Um número de telefone associado a esta solicitação, se houver.
- USERNAME: opcional. Um nome de usuário associado a esta solicitação, se houver.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corpo JSON da solicitação:
{ "event": { "token": "TOKEN", "siteKey": "KEY_ID", "userInfo": { "accountId": "ACCOUNT_ID", "userIds": [ { "email": "EMAIL_ADDRESS" }, { "phoneNumber": "PHONE_NUMBER" }, { "username": "USERNAME" } ] } } }
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/assessments"
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/assessments" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{ "tokenProperties": { "valid": true, "hostname": "www.google.com", "action": "login", "createTime": "2019-03-28T12:24:17.894Z" }, "riskAnalysis": { "score": 0.6, }, "event": { "token": "TOKEN", "siteKey": "KEY", "userInfo": { "accountId": "ACCOUNT_ID" } }, "name": "projects/PROJECT_NUMBER/assessments/b6ac310000000000", "accountDefenderAssessment": { "labels": ["SUSPICIOUS_LOGIN_ACTIVITY"] } }
Exemplo de código
Java
Para autenticar no reCAPTCHA, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Interpretar o veredicto de risco dos eventos críticos do usuário
Quando você cria uma avaliação com o defensor da conta ativado, ele
retorna accountDefenderAssessment
como parte da resposta da avaliação.
O valor de accountDefenderAssessment
ajuda
você a avaliar se a atividade do usuário é legítima ou fraudulenta. Ele também retorna
um ID de avaliação que você precisa usar ao anotar eventos do usuário.
Confira a seguir um exemplo de resposta JSON:
{ "tokenProperties": { "valid": true, "hostname": "www.google.com", "action": "login", "createTime": "2019-03-28T12:24:17.894Z" }, "riskAnalysis": { "score": 0.6, }, "event": { "token": "TOKEN", "siteKey": "KEY_ID", "expectedAction": "USER_ACTION" }, "name": "projects/PROJECT_ID/assessments/b6ac310000000000X", "accountDefenderAssessment": { labels: ["SUSPICIOUS_LOGIN_ACTIVITY"] } }
O campo accountDefenderAssessment
pode ter qualquer um dos seguintes valores:
Valor | Descrição |
---|---|
SUSPICIOUS_LOGIN_ACTIVITY |
Indica que a solicitação representa um alto risco de preenchimento de credenciais ou roubo de conta. |
SUSPICIOUS_ACCOUNT_CREATION |
Indica que a solicitação representa um alto risco de criação de conta abusiva. |
PROFILE_MATCH |
Indica que os atributos do usuário correspondem aos atributos vistos anteriormente para esse usuário específico. Esse valor é um indicador de que o usuário está em um dispositivo confiável que foi usado antes para acessar seu site.
|
RELATED_ACCOUNTS_NUMBER_HIGH |
Indica que a solicitação tem um grande número de contas relacionadas. Isso não significa necessariamente que a conta é ruim, mas pode exigir uma investigação mais aprofundada. |
Anotar eventos para ajustar seu modelo específico do site
Para fornecer mais informações ao defensor da conta do reCAPTCHA e melhorar o modelo de detecção específico do site, anote os eventos avaliados criando avaliações.
Para anotar uma avaliação, envie uma solicitação ao método projects.assessments.annotate
com o ID da avaliação. No corpo dessa solicitação, inclua rótulos
com mais informações sobre um evento descrito na avaliação.
Para anotar uma avaliação, faça o seguinte:
-
Determine as informações e os rótulos a serem adicionados no corpo JSON da solicitação, dependendo do seu caso de uso.
A tabela a seguir lista os rótulos e valores que podem ser usados para anotar eventos:
Rótulo Descrição Exemplo de solicitação reasons
Obrigatório. Um rótulo para apoiar suas avaliações. Forneça detalhes de eventos em tempo real no rótulo
reasons
alguns segundos ou minutos após o evento, porque eles influenciam a detecção em tempo real.Para conferir a lista de valores possíveis, consulte valores de motivos.
Exemplo: para detectar aquisições de contas, anote se a senha inserida estava correta com os valores
CORRECT_PASSWORD
ouINCORRECT_PASSWORD
. Se você tiver implantado sua própria MFA, adicione os seguintes valores:INITIATED_TWO_FACTOR
ePASSED_TWO_FACTOR
ouFAILED_TWO_FACTOR
.{ "reasons": ["INCORRECT_PASSWORD"] }
annotation
Opcional. Um rótulo para indicar a legitimidade das avaliações. Forneça fatos sobre eventos de login e registro para validar ou corrigir suas avaliações de risco no rótulo
annotation
.Valores possíveis:
LEGITIMATE
ouFRAUDULENT
.Você pode enviar essas informações a qualquer momento ou como parte de um job em lote. No entanto, recomendamos que você envie essas informações alguns segundos ou minutos após o evento, porque elas influenciam a detecção em tempo real.
{ "annotation": "LEGITIMATE" }
accountId
Opcional. Um rótulo para associar um ID da conta a um evento.
Se você criou uma avaliação sem um ID de conta, use esse rótulo para fornecer o ID de conta de um evento sempre que ele estiver disponível.
{ "accountId": "ACCOUNT_ID" }
Crie uma solicitação de anotação com os rótulos adequados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- ASSESSMENT_ID: valor do campo
name
retornado pela chamadaprojects.assessments.create
. - ANNOTATION: opcional. Um rótulo para indicar se a avaliação é legítima ou fraudulenta.
- REASONS: opcional. Motivos que embasam sua anotação. Para conferir a lista de valores possíveis, consulte valores de motivos.
- ACCOUNT_ID: opcional. O identificador associado exclusivamente à conta de usuário no seu site.
Para mais informações, consulte rótulos para anotações.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Corpo JSON da solicitação:
{ "annotation": ANNOTATION, "reasons": REASONS, "accountId": ACCOUNT_ID }
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/ASSESSMENT_ID:annotate"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/ASSESSMENT_ID:annotate" | Select-Object -Expand ContentVocê receberá um código de status bem-sucedido (2xx) e uma resposta vazia.
- ASSESSMENT_ID: valor do campo
Exemplo de código
Java
Para autenticar no reCAPTCHA, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ativar o defensor da conta do reCAPTCHA
Depois de configurar as páginas da Web para o defensor da conta do reCAPTCHA, é possível ativar o recurso.
No console Google Cloud , acesse a página reCAPTCHA.
Verifique se o nome do projeto aparece no seletor de recursos, na parte de cima da página.
Se você não vir o nome do projeto, clique no seletor de recursos para selecioná-lo.
- Clique em Configurações.
No painel Account Defender, clique em Configurar.
Na caixa de diálogo Configurar o Account Defender, clique em Ativar e em Salvar.
Pode levar algumas horas para que a ativação do defensor da conta do reCAPTCHA seja propagada nos nossos sistemas. Depois que a ativação do recurso for propagada para nossos sistemas, você vai começar a receber respostas relacionadas ao Account Defender como parte das avaliações.