Este documento mostra-lhe como usar o reCAPTCHA Account Defender para detetar e impedir atividades fraudulentas relacionadas com contas em Websites.
O reCAPTCHA ajuda a proteger ações críticas, como o início de sessão e o pagamento. No entanto, existem muitas formas subtis de abuso de contas que podem ser detetadas através da observação do comportamento de um utilizador específico num Website durante um período. O reCAPTCHA Account Defender ajuda a identificar estes tipos de abuso subtil através da criação de um modelo específico do site para o seu Website de modo a detetar uma tendência de comportamento suspeito ou uma alteração na atividade. Ao usar o modelo específico do site, o reCAPTCHA Account Defender ajuda a detetar o seguinte:
- Atividades suspeitas
- Contas com comportamentos semelhantes
- Pedidos provenientes de dispositivos que foram marcados como fidedignos para utilizadores específicos
Com base na análise do reCAPTCHA Account Defender e do modelo específico do site, pode tomar as seguintes medidas:
- Restrinja ou desative contas fraudulentas.
- Impeça tentativas de roubo de conta.
- Mitigar as aquisições de contas bem-sucedidas.
- Conceda acesso apenas aos pedidos provenientes de contas de utilizadores legítimas.
- Reduzir as dificuldades para os utilizadores que iniciam sessão a partir de um dos respetivos dispositivos fidedignos.
Antes de começar
Configure as suas páginas Web para o reCAPTCHA Account Defender
O reCAPTCHA account defender requer uma compreensão abrangente das atividades da conta para permitir uma deteção eficaz. Para começar a enviar atividades relacionadas com a conta para o reCAPTCHA Account Defender e para criar e melhorar o seu modelo específico do site, faça o seguinte:
- Ative a recolha de dados de telemetria horizontal.
- Crie relatórios sobre ações críticas do utilizador.
- Avalie eventos críticos do utilizador.
- Anotar eventos do utilizador para otimizar o modelo específico do site.
Ative a recolha de dados de telemetria horizontal
O reCAPTCHA Account Defender requer uma vista completa das ações do utilizador, como se o utilizador tem sessão iniciada ou se está a iniciar sessão. Para ativar a recolha 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 que criou em segundo plano de todas as páginas Web que fazem parte do fluxo de trabalho do utilizador.
O exemplo seguinte mostra como carregar o script JavaScript do reCAPTCHA numa página Web.
<head> <script src="https://www.google.com/recaptcha/enterprise.js?render=KEY_ID"></script> .... </head>
Crie relatórios sobre ações críticas dos utilizadores
Para detetar padrões de atividade suspeitos e compreender melhor os padrões de atividade típicos no seu site, o reCAPTCHA Account Defender precisa das informações sobre ações críticas dos utilizadores. Por conseguinte, comunique ações críticas do utilizador nas páginas Web chamando grecaptcha.enterprise.execute() nessas ações críticas do utilizador.
Recomendamos que comunique todas as ações críticas do utilizador, uma vez que ajuda na
recolha de sinais adicionais. Para cada ação do utilizador sobre a qual quer criar relatórios,
substitua o valor do parâmetro action
de grecaptcha.enterprise.execute()
pelo nome de uma ação que descreva a ação do utilizador.
A tabela seguinte lista os nomes das ações que pode usar ao comunicar as ações críticas do utilizador.
Nome da ação | Evento iniciado pelo utilizador ou ação do utilizador |
---|---|
LOGIN |
Inicie sessão no Website. |
REGISTRATION |
Registo no Website. |
SECURITY_QUESTION_CHANGE |
Pedido para alterar a pergunta de segurança. |
PASSWORD_RESET |
Peça a reposição da palavra-passe. |
PHONE_NUMBER_UPDATE |
Peça a atualização do número de telefone. |
EMAIL_UPDATE |
Solicite a atualização do endereço de email. |
ACCOUNT_UPDATE |
Solicitar a atualização de informações relacionadas com a conta, como os detalhes de contacto. |
TRIGGER_MFA |
Uma ação que aciona um desafio de MFA. |
REDEEM_CODE |
Pedido para resgatar o código. |
LIST_PAYMENT_METHODS |
Obter a lista de métodos de pagamento. |
O exemplo seguinte mostra como chamar grecaptcha.enterprise.execute()
numa atualização do 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>
Avalie eventos críticos do utilizador
Quando chama grecaptcha.enterprise.execute()
numa ação do utilizador, gera um token. Para os eventos de utilizador críticos, como inícios de sessão e registos bem-sucedidos e com falhas, e ações dos utilizadores com sessão iniciada, crie uma avaliação para avaliar os resultados da chamada grecaptcha.enterprise.execute()
. A avaliação fornece-lhe um veredito de risco, que pode usar para tomar uma decisão sobre como processar atividades potencialmente fraudulentas. Algumas das ações que pode realizar são bloquear pedidos suspeitos, desafiar inícios de sessão arriscados e investigar contas de interesse.
O reCAPTCHA Account Defender requer que faculte um identificador de conta estável para atribuir a atividade do utilizador, como pedidos de início de sessão, pedidos com sessão iniciada e pedidos de inscrição, a uma conta específica. Isto ajuda o reCAPTCHA Account Defender a compreender os padrões de atividade dos utilizadores e a criar um modelo de atividade para cada conta de modo a detetar 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 utilizador e faculte-o à avaliação no método
projects.assessments.create
. Este identificador de conta estável deve ter o mesmo valor para todos os eventos relacionados com o mesmo utilizador. Pode indicar o seguinte como identificador da conta:
Identificadores de utilizadores
Se cada conta puder ser associada de forma exclusiva a um nome de utilizador, um endereço de email ou um número de telefone estável, pode usá-lo como o accountId
. Quando fornece esses identificadores
entre sites (identificadores que podem ser reutilizados em vários sites), o reCAPTCHA usa estas
informações para melhorar a proteção das suas contas de utilizador com base em modelos entre sites, ao
sinalizar identificadores de contas abusivas e usar o conhecimento de padrões de abuso entre sites relacionados
com estes identificadores.
Em alternativa, se tiver um ID do utilizador interno associado exclusivamente a cada conta, pode
fornecê-lo como o accountId
.
Com hash ou encriptadas
Se não tiver um ID de utilizador interno associado exclusivamente a cada conta, pode transformar qualquer identificador estável num identificador de conta opaco e específico do site. Este identificador continua a ser necessário para o reCAPTCHA account defender compreender os padrões de atividade do utilizador e detetar comportamentos anómalos, mas não é partilhado com outros sites.
Escolha um identificador de conta estável e torne-o opaco antes de o enviar para o reCAPTCHA através de encriptação ou aplicação de hash:
Encriptação (recomendada): encriptar o identificador da conta através de um método de encriptação determinístico que produz um texto cifrado estável. Para ver instruções detalhadas, consulte o artigo sobre como encriptar dados de forma determinística. Quando escolhe a encriptação simétrica em vez da aplicação de hash, não precisa de manter um mapeamento entre os seus identificadores de utilizadores e os identificadores de utilizadores opacos correspondentes. Descriptografar os identificadores opacos devolvidos pelo reCAPTCHA para os transformar no identificador do utilizador.
aplicar hash: recomendamos que aplique hash ao identificador da conta através do método SHA256-HMAC com um sal personalizado à sua escolha. Uma vez que os hashes são apenas de sentido único, tem de manter um mapeamento entre os hashes gerados e os identificadores de utilizadores para poder mapear o identificador da conta com hash que é devolvido às contas originais.
Além de fornecer um identificador de conta estável para todos os pedidos relacionados com a conta, pode fornecer identificadores de conta adicionais, potencialmente não estáveis, para alguns pedidos específicos.
Os identificadores de conta específicos do contexto fornecidos além do accountId
ajudam
o reCAPTCHA Account Defender a compreender melhor a atividade do utilizador e a detetar tentativas de
roubo de conta para manter as contas de utilizador seguras. Quando fornece identificadores adicionais, o reCAPTCHA usa estas informações para melhorar a proteção das suas contas de utilizador com base em modelos de vários sites, sinalizando identificadores de contas abusivas e usando o conhecimento de padrões de abuso em vários sites relacionados com estes identificadores. Por exemplo, pode fornecer o seguinte:
O nome de utilizador, o endereço de email ou o número de telefone que foi usado como identificador de início de sessão para pedidos de início de sessão
O endereço de email ou o número de telefone que foi validado para um pedido de autenticação multifator
Um endereço de email ou um número de telefone (principal ou secundário) que foi fornecido pelo utilizador durante um pedido de atualização da conta
Os endereços de email e os números de telefone facultados pelo utilizador durante um pedido de registo
Anexe o identificador de conta estável escolhido ao parâmetro accountId
no método
projects.assessments.create
para todos os pedidos relacionados com a conta. Opcionalmente,
faculte identificadores de conta adicionais para os pedidos relevantes através do campo userIds
na avaliação.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- TOKEN: token devolvido pela chamada
grecaptcha.enterprise.execute()
- KEY_ID: chave reCAPTCHA associada ao site
- ACCOUNT_ID: o identificador que está exclusivamente associado à conta de utilizador para uma conta de utilizador no seu Website
- EMAIL_ADDRESS: opcional. Um endereço de email associado a este pedido, se existir
- PHONE_NUMBER: opcional. Um número de telefone associado a este pedido, se existir
- USERNAME: opcional. Um nome de utilizador associado a este pedido, se existir
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corpo JSON do pedido:
{ "event": { "token": "TOKEN", "siteKey": "KEY_ID", "userInfo": { "accountId": "ACCOUNT_ID", "userIds": [ { "email": "EMAIL_ADDRESS" }, { "phoneNumber": "PHONE_NUMBER" }, { "username": "USERNAME" } ] } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 se autenticar no reCAPTCHA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Interprete o veredito de risco dos eventos críticos do utilizador
Quando cria uma avaliação com o Account Defender ativado, o Account Defender devolve accountDefenderAssessment
como parte da resposta da avaliação.
O valor de accountDefenderAssessment
ajuda
a avaliar se a atividade do utilizador é legítima ou fraudulenta. Também devolve um ID de avaliação que tem de usar ao anotar eventos do utilizador.
O exemplo seguinte é uma resposta JSON de exemplo:
{ "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 o pedido representa um risco elevado de roubo de credenciais ou roubo de conta. |
SUSPICIOUS_ACCOUNT_CREATION |
Indica que o pedido representa um risco elevado de criação de contas abusivas. |
PROFILE_MATCH |
Indica que os atributos do utilizador correspondem aos atributos que foram vistos anteriormente para este utilizador específico. Este valor é um indicador de que este utilizador está num dispositivo fidedigno que foi usado anteriormente para aceder ao seu Website.
|
RELATED_ACCOUNTS_NUMBER_HIGH |
Indica que o pedido tem um número elevado de contas relacionadas. Isto não implica necessariamente que a conta seja má, mas pode exigir uma investigação mais detalhada. |
Anote eventos para otimizar o modelo específico do site
Para fornecer mais informações ao reCAPTCHA Account Defender e melhorar o modelo de deteção específico do seu site, tem de anotar os eventos que avaliou criando avaliações.
Anota uma avaliação enviando um pedido para o método projects.assessments.annotate
com o ID da avaliação. No corpo desse pedido, inclua etiquetas que forneçam informações adicionais sobre um evento descrito na avaliação.
Para anotar uma avaliação, faça o seguinte:
-
Determine as informações e as etiquetas a adicionar no corpo JSON do pedido consoante o seu exemplo de utilização.
A tabela seguinte lista as etiquetas e os valores que pode usar para anotar eventos:
Etiqueta Descrição Exemplo de pedido reasons
Obrigatório. Uma etiqueta para apoiar as suas avaliações. Forneça detalhes de eventos em tempo real na etiqueta
reasons
em poucos segundos ou minutos após o evento, porque influenciam a deteção em tempo real.Para ver a lista de valores possíveis, consulte os valores de motivos.
Exemplo: para detetar roubos de contas, anote se a palavra-passe introduzida estava correta com os valores
CORRECT_PASSWORD
ouINCORRECT_PASSWORD
. Se implementou a sua própria MFA, pode adicionar os seguintes valores:INITIATED_TWO_FACTOR
ePASSED_TWO_FACTOR
ouFAILED_TWO_FACTOR
.{ "reasons": ["INCORRECT_PASSWORD"] }
annotation
Opcional. Uma etiqueta para indicar a legitimidade das avaliações. Forneça factos sobre eventos de início de sessão e registo para validar ou corrigir as suas avaliações de risco na etiqueta
annotation
.Valores possíveis:
LEGITIMATE
ouFRAUDULENT
.Pode enviar estas informações em qualquer altura ou como parte de um trabalho em lote. No entanto, recomendamos que envie estas informações alguns segundos ou minutos após o evento, uma vez que influenciam a deteção em tempo real.
{ "annotation": "LEGITIMATE" }
accountId
Opcional. Uma etiqueta para associar um ID da conta a um evento.
Se criou uma avaliação sem um ID da conta, use esta etiqueta para fornecer o ID da conta de um evento sempre que estiver disponível.
{ "accountId": "ACCOUNT_ID" }
Crie um pedido de anotação com as etiquetas adequadas.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- ASSESSMENT_ID: valor do campo
name
devolvido pela chamadaprojects.assessments.create
. - ANNOTATION: opcional. Uma etiqueta para indicar se a avaliação é legítima ou fraudulenta.
- REASONS: opcional. Motivos que fundamentam a sua anotação. Para ver a lista de valores possíveis, consulte os valores de motivos.
- ACCOUNT_ID: opcional. O identificador que está exclusivamente associado à conta de utilizador no seu Website.
Para mais informações, consulte as etiquetas para anotações.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Corpo JSON do pedido:
{ "annotation": ANNOTATION, "reasons": REASONS, "accountId": ACCOUNT_ID }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando: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
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$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 ContentDeve receber um código de estado de êxito (2xx) e uma resposta vazia.
- ASSESSMENT_ID: valor do campo
Exemplo de código
Java
Para se autenticar no reCAPTCHA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Ative o reCAPTCHA Account Defender
Depois de configurar as suas páginas Web para o reCAPTCHA Account Defender, pode ativar o reCAPTCHA Account Defender.
Na Google Cloud consola, aceda à página reCAPTCHA.
Verifique se o nome do seu projeto é apresentado no seletor de recursos na parte superior da página.
Se não vir o nome do seu projeto, clique no seletor de recursos e, de seguida, selecione o seu projeto.
- Clique em Definições.
No painel Account defender, clique em Configurar.
Na caixa de diálogo Configurar o Account Defender, clique em Ativar e, de seguida, clique em Guardar.
A ativação do reCAPTCHA Account Defender pode demorar algumas horas a propagar-se aos nossos sistemas. Depois de a ativação da funcionalidade ser propagada aos nossos sistemas, deve começar a receber respostas relacionadas com o Account Defender como parte das avaliações.