Neste documento, mostramos como usar a proteção contra fraude de cobrança por SMS do reCAPTCHA para detectar e impedir ataques de bombeamento de SMS em empresas que dependem de SMS para autenticação de dois fatores (2FA) ou verificação por telefone, que é um possível alvo para fraude de cobrança por SMS.
A autenticação baseada em SMS (2FA e login) é um padrão do setor para login e segurança de inscrição, mas não oferece proteção contra fraudes de SMS ou Fraude de bombeamento de SMS. Antes de enviar um SMS, a proteção contra fraudes do reCAPTCHA SMS oferece com uma pontuação de risco que indica a probabilidade de esse número de telefone cometer Fraude de cobrança por SMS Com base nessa pontuação, você pode permitir ou bloquear mensagens SMS fraudulentas antes que elas sejam enviadas ao seu provedor de SMS.
Para mais informações, consulte o blog sobre proteção contra fraudes de pedágio de SMS reCAPTCHA.
Antes de começar
Se você já é um usuário do reCAPTCHA ou não para o reCAPTCHA, siga as instruções na guia correspondente:
Usuário do reCAPTCHA atual
Se você já for usuário do reCAPTCHA, ative a proteção contra fraudes de cobrança por SMS do reCAPTCHA no seu projeto do Google Cloud:
No console do Google Cloud, acesse a página reCAPTCHA.
Verifique se o nome do projeto aparece no seletor de recursos.
Se você não vir o nome do seu projeto, clique no seletor de recursos e selecione o projeto.
Clique em
Configurações.Se o defensor da conta reCAPTCHA não estiver ativado para sua projeto, faça o seguinte:
- No painel Defensor da conta, clique em Ativar.
- Na caixa de diálogo Configurar o defensor da conta, clique em Ativar.
No painel Proteção contra fraudes de cobrança por SMS, clique em Configurar.
Clique no botão de ativação Ativar e, depois, em Salvar.
Pode levar alguns minutos para que a ativação da proteção contra fraudes de cobrança por SMS 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 à proteção contra fraudes de cobrança por SMS do reCAPTCHA como parte das avaliações.
Novo usuário reCAPTCHA
Se você não conhece o reCAPTCHA, faça o seguinte:
-
Dependendo se você quer usar a proteção contra fraudes de cobrança por SMS do reCAPTCHA em um site ou aplicativo para dispositivos móveis, siga estas etapas para integrar o reCAPTCHA:
Site
Aplicativo para dispositivos móveis
- Crie uma chave baseada em pontuação para seu aplicativo para dispositivos móveis.
- Integrar o reCAPTCHA a um app iOS ou Android
- Ativar
Proteção contra fraudes de pedágio por SMS do reCAPTCHA no seu projeto do Google Cloud:
No console do Google Cloud, acesse a página reCAPTCHA.
Verifique se o nome do seu projeto aparece no seletor de recursos.
Se você não vir o nome do seu projeto, clique no seletor de recursos e selecione o projeto.
Clique em
Configurações.Se o defensor da conta reCAPTCHA não estiver ativado para sua projeto, faça o seguinte:
- No painel Defensor da conta, clique em Ativar.
- Na caixa de diálogo Configurar o defensor da conta, clique em Ativar.
No painel Proteção contra fraudes de cobrança por SMS, clique em Configurar.
Clique no botão de ativação Ativar e, depois, em Salvar.
Pode levar alguns minutos para que a ativação da proteção contra fraudes de tarifas de SMS do reCAPTCHA seja ativada se propagam para nossos sistemas. Depois que a ativação do recurso for propagada para nossos sistemas, você vai começar a receber respostas relacionadas à proteção contra fraudes de cobrança por SMS do reCAPTCHA como parte das avaliações.
Crie uma avaliação com o número de telefone
Para proteger contra fraudes por SMS do reCAPTCHA, crie avaliações com o token
gerado pela função execute()
e o número de telefone, usando o
Bibliotecas de cliente reCAPTCHA ou a API REST do back-end.
Neste documento, mostramos como criar uma avaliação usando a API REST. Para saber como criar uma avaliação usando bibliotecas de cliente, consulte Criar avaliações.
Antes de criar uma avaliação, faça o seguinte:
Configure a autenticação para o reCAPTCHA.
O método de autenticação escolhido depende do ambiente em que O reCAPTCHA está configurado. A tabela a seguir ajuda a escolher o método de autenticação adequado e a interface com suporte para configurá-la:
Ambiente Interface Método de autenticação Google Cloud - REST
- Bibliotecas de cliente
Use contas de serviço anexadas. No local ou em outro provedor de nuvem REST Use chaves de API ou a federação de identidade da carga de trabalho. Se você quiser usar chaves de API, recomendamos protegê-las aplicando restrições de chaves de API.
Bibliotecas de cliente Use o seguinte:
- Para Python ou Java, use chaves de API ou federação de identidade da carga de trabalho.
Se você quiser usar chaves de API, recomendamos proteger as chaves de API aplicando restrições.
- Para outros idiomas, use a federação de identidade da carga de trabalho.
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étodoprojects.assessments.create
. Esse identificador de conta estável deve ter a o mesmo valor para todos os eventos relacionados ao mesmo usuário. Você pode informar o seguinte como a conta identificador:Identificadores de usuários
Se cada conta puder ser associada exclusivamente a um nome de usuário, endereço de e-mail ou número de telefone estável, você poderá usá-lo como o
accountId
. Quando você fornece esses identificadores entre sites (identificadores 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, sinalizando identificadores de contas abusivas e usando o conhecimento de padrões de abuso entre sites relacionados a esses identificadores.Como alternativa, se você tem um ID de usuário interno associado exclusivamente a cada conta, é possível forneça-o como
accountId
.Criptografado ou com hash
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 e específico do site. Esse identificador ainda é necessário para que o Account Defender do reCAPTCHA entenda os padrões de atividade do usuário e detecte comportamentos anormais, mas ele não é compartilhado em outros sites.
Escolha qualquer identificador de conta estável e torne-o opaco antes de enviar para o reCAPTCHA usando criptografia ou hash:
criptografia (recomendado): criptografe o identificador de conta usando uma expressão determinística. que produz um texto criptografado estável. Para instruções detalhadas, consulte criptografar dados de forma determinista. Quando você escolhe a criptografia simétrica em vez do hash, não é necessário manter um mapeamento entre os identificadores de usuário e os identificadores opacos correspondentes. Descriptografar os identificadores opacos retornados pelo reCAPTCHA para transformá-los em identificador do usuário.
Geração de hash: recomendamos gerar hash do identificador da conta usando o método SHA256-HMAC com uma opção de sal personalizada. Como os hashes são unidirecionais, é necessário manter um mapeamento entre os hashes gerados e os identificadores de usuário para que você possa mapear o identificador da conta hash retornado para as contas originais.
Adicione o parâmetro accountId
e o número de telefone no formato E.164 como
UserId
para
verificar na avaliação no método projects.assessments.create
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é seu ID do projeto no Google Cloud.
- TOKEN: token retornado da chamada
grecaptcha.enterprise.execute()
. - KEY_ID: a chave baseada na pontuação que você instalou no seu site.
- ACCOUNT_ID: um identificador de conta de usuário exclusivo do seu site.
- PHONE_NUMBER: o número de telefone que precisa ser verificado quanto à existência de malware. O número de telefone precisa estar no formato E.164 e não pode ser hasheado nem criptografado.
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": [ { "phoneNumber": "PHONE_NUMBER" } ] } } }
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:
{ "event": { … }, "name": "ASSESSMENT_ID", "smsFraudAssessment": { "smsFraudRisk": 0.3 } }
A resposta recebida inclui a pontuação de smsFraudRisk
no
Campo smsFraudAssessment
. Quanto maior a pontuação, maior a probabilidade
número de telefone for arriscado; quanto menor a pontuação, maior a probabilidade de o número de telefone ser
legítimos.
Você é responsável pelas ações que tomar com base na avaliação.
Para a integração mais simples, você pode definir limites no smsFraudRisk
como
contribuir para sua decisão.
Anotar a avaliação
Para monitorar o tráfego de SMS e melhorar a detecção de fraudes, você precisa anotar as avaliações até 10 minutos após o envio do SMS ou depois que o número de telefone for verificado.
Para anotar uma avaliação, envie uma solicitação ao método
projects.assessments.annotate
com o ID da avaliação. No corpo da solicitação, inclua o
número de telefone no formato E.164 no campo phoneAuthenticationEvent
.
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 você pode usar para fazer anotações 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 influenciam a detecção em tempo real.Valores possíveis:
INITIATED_TWO_FACTOR
: um código de verificação por O SMS foi enviado.PASSED_TWO_FACTOR
: o código de verificação é verificado com sucesso.FAILED_TWO_FACTOR
: o código de verificação é inválido.
{ "reasons": ["INITIATED_TWO_FACTOR"], "phoneAuthenticationEvent": { "phoneNumber": "+18005550175" } }
annotation
Opcional. Um rótulo para indicar legitimidade das avaliações.
Forneça fatos sobre login e de registro para validar ou corrigir suas avaliações de risco no Marcador
annotation
.Valores possíveis:
LEGITIMATE
ouFRAUDULENT
.Recomendamos enviar essas informações em alguns segundos ou minutos após o evento, pois isso influencia a detecção em tempo real.
{ "annotation": "LEGITIMATE" }
Crie uma solicitação de anotação com os rótulos apropriados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- ASSESSMENT_ID: valor do campo
name
retornado da chamadaprojects.assessments.create
. - ANNOTATION: opcional. Um rótulo para indicar se a avaliação é legítima ou fraudulenta.
- REASONS: motivos que apoiam sua anotação. Para conferir a lista de valores possíveis, consulte valores de motivos.
- PHONE_NUMBER: o número de telefone que foi avaliado. O número de telefone precisa estar no formato E.164 e não pode ser hasheado nem criptografado.
Método HTTP e URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Corpo JSON da solicitação:
{ "annotation": ANNOTATION, "reasons": REASONS, "phoneAuthenticationEvent": { "phoneNumber": "PHONE_NUMBER" } }
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
A seguir
- Saiba mais sobre os recursos de proteção de contas de usuário do reCAPTCHA.