Ativar a Defesa de SMS do reCAPTCHA para autenticação baseada em SMS
Neste documento, explicamos como usar a Defesa de SMS do reCAPTCHA para proteger seus fluxos baseados em SMS do Identity Platform, como telefone e autenticação multifator, contra fraudes de cobrança de SMS (também conhecidas como ataques de bombeamento de SMS). Essa integração ajuda a evitar que o tráfego de SMS não autorizado afete negativamente seus usuários e recursos.
Visão geral
Se o app depende de SMS para autenticação, recomendamos ativar
a integração da defesa de SMS do reCAPTCHA. Depois que ele é ativado,
o Firebase Authentication e o Identity Platform invocam automaticamente o
recurso de defesa de SMS do reCAPTCHA sempre que um usuário final solicita uma mensagem SMS
de verificação do seu app ou site
usando as seguintes operações phoneProvider:
| Operação | Método | |
|---|---|---|
| Inscrição ou login com número de telefone | sendVerificationCode |
|
| Registro de número de telefone para MFA | mfaSmsEnrollment |
|
| Login com número de telefone para MFA | mfaSmsSignIn |
O reCAPTCHA fornece ao Firebase Authentication ou ao Identity Platform uma pontuação de riscos que indica a probabilidade de fraude de cobrança por SMS para o número de telefone do usuário. Essa pontuação é comparada com o limite configurado. Se a solicitação de um usuário for aprovada na avaliação de fraude de cobrança, um código de verificação por SMS será enviado. Se a pontuação de risco exceder o limite configurado, o Identity Platform vai bloquear a solicitação e não vai enviar uma mensagem SMS com um código de verificação.
Quando a defesa de SMS do reCAPTCHA está ativada, nenhuma verificação de fallback é necessária, e você não precisa configurar outros métodos de verificação para seu app. No entanto, recomendamos configurar o verificador do reCAPTCHA para apps da Web para garantir que o reCAPTCHA v2 esteja disponível se você decidir desativar a defesa de SMS do reCAPTCHA.
Para entender como funcionam as pontuações da defesa de SMS do reCAPTCHA, consulte Interpretar pontuações.
Para mais informações sobre o recurso de defesa de SMS do reCAPTCHA, consulte Detectar e evitar fraudes de SMS.
Antes de começar
Antes de ativar a defesa de SMS do reCAPTCHA para o Identity Platform, conclua as seguintes tarefas:
Configure o seguinte para seu app ou site, conforme aplicável:
- Login por telefone para usuários.
- Autenticação multifator para seu app da Web, Android ou iOS.
Configure o Firebase Authentication para seu app ou site, conforme aplicável:
Ativar a Defesa de SMS do reCAPTCHA
Configure a autenticação:
-
No console do Google Cloud , ative o Cloud Shell.
Crie uma identidade de serviço:
gcloud beta services identity create \ --service=identitytoolkit.googleapis.com \ --project=PROJECT_IDSubstitua
PROJECT_IDpelo ID do projeto.Conceda o papel
roles/identitytoolkit.serviceAgentà identidade de serviço que você criou.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-identitytoolkit.iam.gserviceaccount.com \ --role=roles/identitytoolkit.serviceAgentSubstitua:
PROJECT_ID: o ID do projeto;PROJECT_NUMBER: o número da conta do projeto
-
Ative a API reCAPTCHA Enterprise no projeto.
Ative a Defesa de SMS do reCAPTCHA para seu projeto:
No console do Google Cloud , acesse a página do reCAPTCHA.
Verifique se o nome do projeto aparece no seletor de recursos.
Se o nome do projeto não aparecer, clique no seletor de recursos e selecione o projeto.
Clique em Configurações.
No painel Defesa de SMS, clique em Configurar.
Clique no botão para Ativar e em Salvar.
Quando você ativa a defesa de SMS do reCAPTCHA, o defensor da conta também é ativado, se ainda não estiver.
Pode levar alguns minutos para que a ativação da defesa de SMS do reCAPTCHA seja propagada para nossos sistemas. Depois de propagadas, você vai começar a receber respostas relacionadas à defesa de SMS do reCAPTCHA como parte das avaliações.
Para definir as configurações de defesa de SMS do reCAPTCHA para um projeto do Firebase Authentication ou do Identity Platform, faça o seguinte:
No URL a seguir, substitua
PROJECT_IDeSTART_SCORE:https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.tollFraudManagedRules","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}PROJECT_ID: o identificador do projeto com o identity-platform ativado.START_SCORE: um limite configurável que determina a pontuação mais alta que uma solicitação de SMS pode ter antes de ser sinalizada e bloqueada como fraude de cobrança.O limite mínimo é
0.0. O limite máximo é0.9. Qualquer solicitação com uma pontuação maior que o limite é considerada fraudulenta. Por exemplo, se você definir o limite como0.3, o reCAPTCHA vai bloquear todas as solicitações com uma pontuação de fraude de0.4ou mais.Para aumentar o nível de proteção contra fraudes, defina o limite como um valor menor. Para reduzir o nível de proteção contra fraudes, defina o limite como um valor mais alto. Essa configuração vai permitir que mais solicitações com pontuações mais altas sejam aprovadas.
Para a implementação inicial, recomendamos começar com um limite mais alto, como
0.8, e depois diminuí-lo de forma iterativa de acordo com sua tolerância de risco específica.Não recomendamos um limite de
0.0ou1.0. Definir o limite como0.0vai bloquear todas as mensagens SMS, enquanto1.0vai desativar completamente a proteção contra fraudes, o que pode resultar em falhas de entrega de SMS para regiões de alto risco.
Insira o URL em uma nova janela do navegador em que você fez login no console do Google Cloud .
Se você estiver usando o Identity Platform na Web ou no Android, registre seu app no Console do Firebase:
No Android, registre cada nome de pacote Android que usa o Identity Platform.
Para a Web, adicione um domínio autorizado para cada domínio que usa o reCAPTCHA:
No console do Google Cloud , acesse a página do Identity Platform.
Acesse Configurações > Segurança.
Clique em Adicionar domínio.
Digite o nome de domínio e clique em Adicionar para salvá-lo.
O provisionamento da chave reCAPTCHA pode levar vários minutos para ser concluído.
Verifique a configuração:
Busque os detalhes de configuração do reCAPTCHA:
{replace-your-project}com seuprojectIdouprojectNumber. Execute a APIGetConfigno painel lateral para buscar a configuração do reCAPTCHA.Verifique se a Defesa de SMS do reCAPTCHA está configurada corretamente:
Se a configuração do reCAPTCHA estiver correta, a resposta precisará ter os seguintes campos com os valores especificados:
recaptchaKeys: o campo não pode estar vazio e precisa ser configurado para pelo menos uma destas plataformas: iOS, Web ou Android.useSmsTollFraudProtection: o valor desse campo precisa ser definido comotrue.phoneEnforcementState: o valor precisa ser definido comoENFORCE.tollFraudManagedRules: nesse campo,startScoreprecisa ser configurado com o limite escolhido, que precisa ser um valor entre0e0.9.
Caso contrário, configure a Defesa de SMS do reCAPTCHA novamente.
Exemplo de resposta
{ "recaptchaConfig": { "recaptchaKeys": [ { "key": "projects/{your-project}/keys/{recaptcha-key}", "type": "WEB" }, { "type": "IOS" }, { "type": "ANDROID" } ], "phoneEnforcementState": "ENFORCE", "tollFraudManagedRules": [ { "startScore": 0.8, "action": "BLOCK" } ], "useSmsTollFraudProtection": true } } ```
Verifique se as versões do SDK estão corretas.
Web
Atualize para a versão mais recente do SDK da Web.
- O suporte do reCAPTCHA para autenticação de e-mail e senha em apps da Web está disponível nas versões 9.20.0 e mais recentes do SDK para JavaScript.
- O suporte do reCAPTCHA para autenticação por telefone em apps da Web está disponível nas versões 11 e mais recentes do SDK para JavaScript.
Depois de integrar o SDK da Web ao app, ele busca automaticamente sua configuração do reCAPTCHA e ativa a proteção para os provedores que você configurou.
Android
Atualize para a versão mais recente do SDK do Android. O suporte do reCAPTCHA para autenticação de e-mail e senha e autenticação por telefone em apps Android está disponível na versão 23.1.0 e mais recentes do SDK do Android.
Além disso, o suporte ao reCAPTCHA exige o nível 23 da API (Marshmallow) ou mais recente e o Android 6 ou mais recente.
Depois de integrar o SDK do Android ao app, ele busca automaticamente sua configuração do reCAPTCHA e aplica os limites definidos para os provedores configurados.
Adicione a seguinte regra de build à seção de dependências do arquivo
build.gradleno nível do app:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'Use a versão 18.5.1 ou mais recente do SDK do reCAPTCHA.
iOS
- Atualize para a versão 11.6.0 ou mais recente do SDK para iOS.
Depois de integrar o SDK para iOS ao app, o SDK busca automaticamente sua configuração do reCAPTCHA e aplica os limites definidos para os provedores configurados.
Para integrar o SDK do reCAPTCHA para iOS ao seu app, consulte Preparar o ambiente do iOS.
Para verificar se
-ObjCestá listado nas flags do vinculador, acesse Target > Build Settings > All > Linking e verifique seOther Linker Flagsmostra-ObjC.
Monitorar as métricas do reCAPTCHA para a Defesa de SMS do reCAPTCHA
Monitore as métricas do reCAPTCHA emitidas pelo projeto para verificar se os fluxos de autenticação baseados em SMS estão protegidos. Por exemplo, essas métricas podem ajudar a determinar se você configurou corretamente a integração do Identity Platform com a API reCAPTCHA Enterprise. Eles também podem ajudar a refinar o limite de pontuação para o tráfego de usuários.
Verifique se o recurso de defesa de SMS do reCAPTCHA está funcionando conferindo as seguintes métricas que seu projeto emite para o Cloud Monitoring:
identitytoolkit.googleapis.com/recaptcha/verdict_countidentitytoolkit.googleapis.com/recaptcha/token_countidentitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
Para mais informações, consulte Monitorar métricas do reCAPTCHA.
Usar a Defesa de SMS do reCAPTCHA com a proteção contra bots
É possível usar a defesa de SMS do reCAPTCHA simultaneamente com
a proteção contra bots. Quando ambos estão ativados e phoneEnforcementState
está definido como ENFORCE, o Identity Platform só transmite uma solicitação quando ela atende
às duas avaliações, e a solicitação falha sem voltar para outro
método de verificação.
Para ativar os dois recursos, use o APIs Explorer do Google para atualizar a configuração do projeto:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
Desativar a defesa de SMS do reCAPTCHA ao usar a proteção contra bots
Se você estiver usando a defesa de SMS do reCAPTCHA e a proteção contra bots e quiser desativar a defesa de SMS do reCAPTCHA sem desativar a proteção contra bots, use o APIs Explorer do Google para atualizar a configuração do projeto:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE',
useSmsTollFraudProtection: false,
useSmsBotScore: true
}
Defina phoneEnforcementState como ENFORCE e useSmsBotScore como true para manter
a proteção contra bots ativada para fluxos de autenticação por telefone.
Desativar a Defesa de SMS do reCAPTCHA
Para desativar toda a proteção do reCAPTCHA para smartphones, incluindo a defesa de SMS do reCAPTCHA, use o APIs Explorer do Google para atualizar a configuração do projeto inserindo o seguinte URL HTTP em uma nova janela do navegador em que você fez login no console do Google Cloud :
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig.phoneEnforcementState,recaptchaConfig.useSmsTollFraudProtection,recaptchaConfig.useSmsBotScore","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":false,"useSmsBotScore":false}}}
Substitua PROJECT_ID pelo ID do projeto.
Para desativar a defesa de SMS do reCAPTCHA enquanto você usa a proteção contra bots, consulte Desativar a defesa de SMS do reCAPTCHA ao usar a proteção contra bots.
A seguir
- Saiba mais sobre o recurso de defesa de SMS do reCAPTCHA.