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:

Ativar a Defesa de SMS do reCAPTCHA

  1. Configure a autenticação:

    1. No console do Google Cloud , ative o Cloud Shell.

      Ativar o Cloud Shell

    2. Crie uma identidade de serviço:

      gcloud beta services identity create \
          --service=identitytoolkit.googleapis.com \
          --project=PROJECT_ID
      

      Substitua PROJECT_ID pelo ID do projeto.

    3. 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.serviceAgent
      

      Substitua:

      • PROJECT_ID: o ID do projeto;
      • PROJECT_NUMBER: o número da conta do projeto
  2. Ative a API reCAPTCHA Enterprise no projeto.

  3. Ative a Defesa de SMS do reCAPTCHA para seu projeto:

    1. No console do Google Cloud , acesse a página do reCAPTCHA.

      Acessar o reCAPTCHA

    2. 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.

    3. Clique em Configurações.

    4. No painel Defesa de SMS, clique em Configurar.

    5. 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.

  4. 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:

    1. No URL a seguir, substitua PROJECT_ID e START_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 como 0.3, o reCAPTCHA vai bloquear todas as solicitações com uma pontuação de fraude de 0.4 ou 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.0 ou 1.0. Definir o limite como 0.0 vai bloquear todas as mensagens SMS, enquanto 1.0 vai desativar completamente a proteção contra fraudes, o que pode resultar em falhas de entrega de SMS para regiões de alto risco.

    2. Insira o URL em uma nova janela do navegador em que você fez login no console do Google Cloud .

  5. 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:

      1. No console do Google Cloud , acesse a página do Identity Platform.

        Acesse o Identity Platform

      2. Acesse Configurações > Segurança.

      3. Clique em Adicionar domínio.

      4. 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.

  6. Verifique a configuração:

    • Busque os detalhes de configuração do reCAPTCHA:

      {replace-your-project} com seu projectId ou projectNumber. Execute a API GetConfig no painel lateral para buscar a configuração do reCAPTCHA.

    • Verifique se a Defesa de SMS do reCAPTCHA está configurada corretamente:

      1. 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 como true.
        • phoneEnforcementState: o valor precisa ser definido como ENFORCE.
        • tollFraudManagedRules: nesse campo, startScore precisa ser configurado com o limite escolhido, que precisa ser um valor entre 0 e 0.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
            }
          }
          ```
        
  7. 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

    1. 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.

    2. Adicione a seguinte regra de build à seção de dependências do arquivo build.gradle no 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

    1. 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.

    1. Para integrar o SDK do reCAPTCHA para iOS ao seu app, consulte Preparar o ambiente do iOS.

    2. Para verificar se -ObjC está listado nas flags do vinculador, acesse Target > Build Settings > All > Linking e verifique se Other Linker Flags mostra -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:

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