Neste documento, mostramos como usar o defensor de conta reCAPTCHA para detectar e evitar atividades fraudulentas relacionadas a contas em aplicativos para dispositivos móveis.
O reCAPTCHA ajuda a proteger ações críticas, como login e finalização de compra. No entanto, há muitas formas sutis de abuso de conta que podem ser detectadas pela observação do comportamento de um usuário específico em um aplicativo para dispositivos móveis durante um período. O defensor de conta reCAPTCHA ajuda a identificar esses tipos de abuso sutil criando um modelo específico do site para seu aplicativo para dispositivos móveis a fim de 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 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 reCAPTCHA e no modelo específico do site, é possível realizar as seguintes ações:
- restringir ou desativar contas fraudulentas.
- Impeça tentativas de invasão de conta.
- Mitigar as invasões de contas bem-sucedidas.
- Conceda acesso apenas às solicitações provenientes de contas de usuários legítimas.
- Reduza o atrito para os usuários que fazem login em um dispositivo confiável.
Antes de começar
- O defensor da conta reCAPTCHA em aplicativos para dispositivos móveis pode ser acessado após uma análise de segurança. Entre em contato com nossa equipe de vendas para integrar seu site a esse recurso.
- Prepare seu ambiente para o reCAPTCHA.
- Crie uma chave baseada em pontuação.
Configurar seu aplicativo para dispositivos móveis para o defensor da conta reCAPTCHA
O defensor de contas reCAPTCHA requer uma compreensão abrangente das atividades da conta para permitir uma detecção eficaz. Para começar a alimentar atividades relacionadas à conta ao defensor da conta reCAPTCHA e criar e melhorar o modelo específico do site, faça o seguinte:
Integre o reCAPTCHA ao seu aplicativo para dispositivos móveis.
- Para apps Android, consulte Integrar o reCAPTCHA Enterprise a apps Android.
- Para apps iOS, consulte Integrar o reCAPTCHA Enterprise a apps iOS.
- Gere relatórios sobre ações críticas do usuário.
- Avalie eventos críticos do usuário.
- Faça anotações em eventos de usuário para ajustar o modelo específico do site.
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 seu site, o defensor da conta reCAPTCHA precisa das informações sobre ações críticas do usuário.
Para cada ação do app protegida pelo reCAPTCHA, chame o método execute()
com RecaptchaAction
. Para mais informações sobre execute()
e RecaptchaAction
, consulte:
- Android:
execute()
eRecaptchaAction
. - iOS:
execute()
eRecaptchaAction
.
O reCAPTCHA fornece um conjunto integrado de ações e, se necessário, você pode criar ações personalizadas.
A tabela a seguir lista os nomes de ações que podem ser usados ao informar ações importantes do usuário.
Nome da ação | Evento iniciado pelo usuário ou ação do usuário |
---|---|
LOGIN |
Faça login no aplicativo para dispositivos móveis. |
SIGNUP |
Inscreva-se no app para dispositivos móveis. |
Avaliar eventos críticos do usuário
Quando você chama execute()
em uma ação do usuário, ele gera um token. Para eventos de usuário
críticos, como logins, registros e ações bem-sucedidos e com falha dos usuários
conectados, crie uma avaliação para avaliar os resultados da chamada 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 defensor de conta reCAPTCHA exige que você forneça um identificador de conta estável para atribuir atividades 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 defensor da conta do reCAPTCHA a entender os padrões de atividade do usuário e criar um modelo de atividade para cada conta a fim de detectar melhor 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 o forneça à 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 o 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, você poderá usá-las como accountId
. Quando você fornece esses identificadores
entre sites (que podem ser reutilizados entre sites), o reCAPTCHA usa essas
informações para melhorar a proteção das contas de usuário com base em modelos entre sites.
Ele sinaliza identificadores de conta abusivos e usa o conhecimento de padrões de abuso entre sites relacionados
a eles.
Como alternativa, se você tiver um ID de usuário interno associado exclusivamente a cada conta, forneça-o como accountId
.
Com hash ou criptografado
Se você não tiver um ID de usuário interno associado exclusivamente a cada conta, poderá transformar qualquer identificador estável em um identificador de conta opaco específico do site. Esse identificador ainda é necessário para que o defensor da conta reCAPTCHA entenda os padrões de atividade do usuário e detecte comportamentos anômalos, mas ele não é compartilhado com outros sites.
Escolha qualquer identificador de conta estável e torne-o opaco antes de enviar ao reCAPTCHA usando criptografia ou hash:
criptografia (recomendado): criptografe o identificador da conta usando um método de criptografia determinístico que produz um texto criptografado estável. Para instruções detalhadas, consulte Criptografar dados de forma determinista. Ao escolher a criptografia simétrica em vez do hash, você não precisa manter um mapeamento entre os identificadores de usuário e os identificadores de usuário opacos correspondentes. Descriptografe os identificadores opacos retornados pelo reCAPTCHA para transformá-los em identificadores de usuário.
hash: recomendamos gerar hash do identificador da conta usando o método SHA256-HMAC com um sal 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 mapear o identificador de conta com hash retornado para as contas originais.
Além de fornecer um identificador de conta estável para todas as solicitações relacionadas à conta, é possível fornecer identificadores de conta adicionais, 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 reCAPTCHA a entender melhor a atividade do usuário e a detectar tentativas
de invasão para manter as contas de usuário seguras. Quando você fornece outros identificadores,
o reCAPTCHA usa essas informações para melhorar a proteção das contas de usuário com base em
modelos entre sites, sinalizando identificadores de conta abusivos e usando o conhecimento de padrões de abuso
entre sites relacionados a eles. 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
Anexe o identificador de conta estável escolhido ao parâmetro accountId
no método
projects.assessments.create
para todas as solicitações relacionadas à conta. Se quiser,
informe mais identificadores de conta para as solicitações relevantes usando o campo userIds
na avaliação.
Antes de usar os dados da solicitação, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- TOKEN: token retornado da chamada
execute()
- KEY_ID: chave reCAPTCHA associada ao app
- ACCOUNT_ID: o identificador exclusivo associado à conta de usuário para uma conta de usuário no seu app.
- EMAIL_ADDRESS: opcional. Um endereço de e-mail associado a essa solicitação, se houver
- PHONE_NUMBER: opcional. Um número de telefone associado a essa solicitação, se houver
- USERNAME: opcional. Um nome de usuário associado a essa 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, "androidPackageName": "com.example.app" or "iosBundleId": "com.example.app", "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 veredito 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
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.
Este é um exemplo de resposta JSON:
{ "tokenProperties": { "valid": true, "androidPackageName": "com.example.app" or "iosBundleId": "com.example.app", "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 destes valores:
Valor | Descrição |
---|---|
SUSPICIOUS_LOGIN_ACTIVITY |
Indica que a solicitação representa um alto risco de preenchimento de credenciais ou invasão de conta. |
SUSPICIOUS_ACCOUNT_CREATION |
Indica que a solicitação representa um alto risco de criação abusiva de contas. |
PROFILE_MATCH |
Indica que os atributos do usuário correspondem aos atributos que foram 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 aplicativo para dispositivos móveis.
|
Anotar eventos para ajustar o modelo específico do site
Para fornecer mais informações ao defensor da conta reCAPTCHA e melhorar seu modelo de detecção específico do site, anote os eventos que você avaliou criando avaliações.
Para anotar uma avaliação, envie uma solicitação ao método projects.assessments.annotate
com o ID dela. No corpo dessa solicitação, você inclui 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 do evento 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 a lista de valores possíveis, consulte valores de motivos.
Exemplo: para detectar invasões de conta, anote se a senha inserida estava correta com os valores
CORRECT_PASSWORD
ouINCORRECT_PASSWORD
. Se você implantou sua própria MFA, é possível adicionar 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
.É possível enviar essas informações a qualquer momento ou como parte de uma job em lote. No entanto, recomendamos enviar 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 de conta a um evento.
Se você criou uma avaliação sem um ID de conta, use esse rótulo para informar o ID de um evento sempre que ele estiver disponível.
{ "accountId": "ACCOUNT_ID" }
Crie uma solicitação de anotação com os rótulos apropriados.
Antes de usar os dados da solicitação, faça as substituições a seguir:
- ASSESSMENT_ID: valor do campo
name
retornado da chamadaprojects.assessments.create
. - ANNOTATION: opcional. Um rótulo que indica se a avaliação é legítima ou fraudulenta.
- REASONS: opcional. Motivos que apoiam sua anotação. Para a lista de valores possíveis, consulte valores de motivos.
- ACCOUNT_ID (opcional): o identificador exclusivo associado à conta de usuário no seu app.
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 de êxito (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 reCAPTCHA
Depois de configurar seu aplicativo para dispositivos móveis para o defensor da conta reCAPTCHA, ative o recurso.
No console do Google Cloud, acesse a página do reCAPTCHA.
Verifique se o nome do seu projeto aparece no seletor de recursos na parte superior da página.
Se você não vir o nome do seu projeto, clique no seletor de recursos e selecione o projeto.
- Clique em Configurações.
No painel Defensor da conta, clique em Ativar.
Na caixa de diálogo Configurar o defensor da conta, clique em Ativar.
Pode levar algumas horas para que a ativação do defensor da conta reCAPTCHA seja propagada para nossos sistemas. Depois que a ativação do recurso for propagada para nossos sistemas, você vai começar a receber respostas relacionadas ao defensor da conta como parte das avaliações.
A seguir
- Saiba mais sobre outros recursos de proteção de contas em Recursos de proteção de contas de usuário.