Ative a defesa por SMS do reCAPTCHA para a autenticação baseada em SMS
Este documento explica como pode usar a defesa por SMS do reCAPTCHA para ajudar a proteger os seus fluxos baseados em SMS da Identity Platform, como a autenticação por telemóvel e multifator, contra a fraude de custos por SMS (também conhecida como ataques de bombeamento de SMS). Esta integração ajuda a impedir que o tráfego de SMS não autorizado afete negativamente os seus utilizadores e recursos.
Vista geral
Se a sua app depender de SMS para autenticação, recomendamos que ative a integração da defesa por SMS do reCAPTCHA. Depois de ativada, a Firebase Authentication e a Identity Platform invocam automaticamente a funcionalidade de defesa de SMS do reCAPTCHA sempre que um utilizador final solicitar uma mensagem SMS de validação da sua app ou site através das seguintes operações phoneProvider
:
Operação | Método | |
---|---|---|
Inscrição ou início de sessão com número de telefone | sendVerificationCode |
|
Inscrição do número de telefone para MFA | mfaSmsEnrollment |
|
Início de sessão com número de telefone da MFA | mfaSmsSignIn |
Em seguida, o reCAPTCHA fornece ao Firebase Authentication ou à Identity Platform uma pontuação de risco que indica a probabilidade de fraude de cobrança por SMS para o número de telefone do utilizador. Em seguida, esta pontuação é comparada com o limite configurado. Se a pontuação de risco exceder este limite, a mensagem SMS não é enviada, o que bloqueia efetivamente as tentativas fraudulentas.
Para compreender como funcionam as pontuações de defesa de SMS do reCAPTCHA, consulte o artigo Interpretar pontuações.
Para mais informações acerca da funcionalidade de defesa por SMS do reCAPTCHA, consulte o artigo Detete e evite fraudes por SMS.
Modos de aplicação da autenticação telefónica do reCAPTCHA
Pode configurar a aplicação da autenticação por telefone para a defesa por SMS do reCAPTCHA para usar o modo de auditoria ou de aplicação.
Modo de auditoria
Quando define a aplicação da autenticação por telefone para o modo de auditoria, a Identity Platform usa a defesa por SMS do reCAPTCHA para a validação de apps. Se o pedido de um utilizador passar na avaliação de fraude de custos, é enviado um código de validação por SMS. Se o pedido de um utilizador falhar na avaliação de fraude de tarifação e estiver a usar o SDK do cliente, o Identity Platform aciona métodos de validação alternativos para concluir o fluxo de autenticação por telefone. Os métodos alternativos aceites dependem da plataforma da sua app.
O SDK do cliente aciona os métodos de validação alternativos nos seguintes cenários:
- O token reCAPTCHA está em falta.
- O token do reCAPTCHA é inválido ou expirou.
- O token reCAPTCHA não passa o limite de pontuação.
- O reCAPTCHA não está configurado corretamente.
Certifique-se de que os métodos de validação alternativos para a plataforma da sua app estão configurados e prontos para serem acionados pelo SDK do cliente, se necessário.
Web
Se a avaliação inicial de fraude de custos falhar, o modo de auditoria baseia-se no reCAPTCHA v2 para validação. Por conseguinte, tem de configurar o validador do reCAPTCHA (RecaptchaVerifier
) e transmiti-lo às seguintes operações de autenticação por telemóvel:
verifyPhoneNumber
signInWithPhoneNumber
linkWithPhoneNumber
reauthenticateWithPhoneNumber
auth/argument-error
. Para mais
informações sobre como configurar o verificador do reCAPTCHA, consulte o artigo Configure
o verificador do reCAPTCHA na documentação do Firebase.
Android
Se a avaliação inicial de fraude de tarifação falhar, o modo de auditoria valida a sua app com base na API Play Integrity. Se esta validação falhar, o reCAPTCHA v2 é acionado. O reCAPTCHA v2 pode ser acionado nos seguintes cenários:
- Se o dispositivo do utilizador final não tiver os Serviços do Google Play instalados.
- Se a app não for distribuída através da Google Play Store (no SDK de autenticação v21.2.0 e posterior).
- Se o token do SafetyNet obtido não for válido (em versões do SDK de autenticação anteriores à v21.2.0).
iOS
Se a avaliação inicial de fraude de portagens falhar, o modo de auditoria baseia-se em notificações push silenciosas para validação. Este método de validação envolve o envio de um token para a sua app no dispositivo que está a fazer o pedido com uma notificação push silenciosa. Se a sua app receber com êxito a notificação, o fluxo de autenticação por telemóvel continua. Se a sua app não receber a notificação push, o reCAPTCHA v2 é acionado. O reCAPTCHA v2 pode ser acionado se as notificações push silenciosas não estiverem configuradas corretamente.
Para mais informações sobre a configuração da validação de apps iOS, consulte o artigo Ative a validação de apps na documentação do Firebase.
Modo de aplicação
Quando define a aplicação da autenticação por telefone para o modo de aplicação, o Identity Platform usa a defesa por SMS do reCAPTCHA para a validação de apps. Se o pedido de um utilizador passar na avaliação de fraude de custos, é enviado um código de validação por SMS. Se o pedido de um utilizador falhar na avaliação de fraude de chamadas de custo elevado, o Identity Platform bloqueia o pedido e não envia uma mensagem SMS com um código de validação.
Não é necessária nenhuma validação alternativa no modo de aplicação. Não tem de configurar métodos de validação adicionais para a sua app. No entanto, recomendamos que configure o validador reCAPTCHA para apps Web para garantir que o reCAPTCHA v2 está ativado se decidir alterar o modo reCAPTCHA da sua app para AUDIT
ou OFF
.
Antes de começar
Antes de ativar a defesa por SMS do reCAPTCHA para a Identity Platform, conclua as seguintes tarefas:
Configure o seguinte para a sua app ou site, conforme aplicável:
- Início de sessão por telefone para utilizadores.
- Autenticação multifator para a sua app Web, Android ou iOS.
Configure o Firebase Authentication para a sua app ou site, conforme aplicável:
Ative a defesa por SMS do reCAPTCHA
Configurar autenticação:
-
In the Google Cloud console, activate Cloud Shell.
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.Conceda a função
roles/identitytoolkit.serviceAgent
à identidade do serviço que 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 o seguinte:
PROJECT_ID
: o ID do projetoPROJECT_NUMBER
: o número de conta do projeto
-
Ative a API reCAPTCHA Enterprise no seu projeto.
Ative a defesa por SMS do reCAPTCHA para o seu projeto:
Na Google Cloud consola, aceda à página do reCAPTCHA.
Verifique se o nome do seu projeto aparece no seletor de recursos.
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 Defesa contra SMS, clique em Configurar.
Clique no botão para ativar e clique em Guardar.
Quando ativa a defesa por SMS do reCAPTCHA, o Account Defender também é ativado, se ainda não estiver ativado.
A ativação da defesa por SMS do reCAPTCHA pode demorar alguns minutos a propagar-se aos nossos sistemas. Após a propagação, começa a receber respostas relacionadas com a defesa por SMS do reCAPTCHA como parte das avaliações.
Para configurar as definições de defesa de SMS do reCAPTCHA para um projeto do Firebase Authentication ou da Identity Platform, faça o seguinte:
No URL seguinte, substitua
PROJECT_ID
,Recaptcha_MODE
eSTART_SCORE
:https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"emailPasswordEnforcementState":"OFF","phoneEnforcementState":"Recaptcha_MODE","useSmsTollFraudProtection":true,"tollFraudManagedRules":[{"action":"BLOCK","startScore":START_SCORE}]}}}
PROJECT_ID
: o identificador do projeto com a plataforma de identidade ativada.Recaptcha_MODE
: o modo que quer definir para a aplicação da autenticação telefónica do reCAPTCHA. Os valores válidos sãoOFF
,AUDIT
eENFORCE
. Para ativar a defesa por SMS do reCAPTCHA, este parâmetro tem de ser definido comoAUDIT
ouENFORCE
euseSmsTollFraudProtection
tem de ser definido comotrue
.Quando ativa a defesa por SMS do reCAPTCHA pela primeira vez, use o modo
AUDIT
para se certificar de que a configuração da defesa por SMS do reCAPTCHA está a funcionar corretamente. O modoAUDIT
destina-se estritamente a fins de validação. Este modo não impede o tráfego de SMS não autorizado. Verifique se não são apresentadas falhas no painel de controlo Métricas. Após a validação, ative o modoENFORCE
imediatamente. Para mais informações sobre o funcionamento dos modos, consulte os modos de aplicação da autenticação telefónica do reCAPTCHASTART_SCORE
: um limite configurável que determina a pontuação mais alta que um pedido de SMS pode ter antes de ser denunciado e bloqueado como fraude de custos.O limite mínimo é de
0.0
. O limite máximo é0.9
. Qualquer pedido com uma pontuação superior ao limite é considerado fraudulento. Por exemplo, se definir o limite como0.3
, o reCAPTCHA bloqueia todos os pedidos com uma pontuação de fraude de0.4
ou superior.Para aumentar o nível de proteção contra fraudes, defina o limite para um valor inferior. Para reduzir o nível de proteção contra fraudes, defina o limite para um valor mais elevado. Esta definição permite a passagem de mais pedidos com pontuações mais elevadas.
Para a implementação inicial, recomendamos que comece com um limite mais elevado, como
0.8
, e, em seguida, o diminua iterativamente de acordo com a sua tolerância ao risco específica.Não recomendamos um limite de
0.0
ou1.0
. A definição do limite para0.0
bloqueia todas as mensagens SMS, enquanto1.0
desativa completamente a proteção contra fraudes, o que pode resultar em falhas na entrega de SMS em regiões de alto risco.
Introduza o URL numa nova janela do navegador onde tem sessão iniciada na Google Cloud consola.
Se estiver a usar a Identity Platform na Web ou no Android, registe a sua app a partir da consola do Firebase:
Para Android, registe cada nome de pacote Android que use a Identity Platform.
Para a Web, adicione um domínio autorizado para cada domínio que use o reCAPTCHA:
Na Google Cloud consola, aceda à página Identity Platform.
Aceda a Definições > Segurança.
Clique em Adicionar domínio.
Introduza o nome do domínio e clique em Adicionar para guardar o domínio.
O aprovisionamento da chave do reCAPTCHA pode demorar vários minutos a ser concluído.
Valide a configuração:
Obtenha os detalhes de configuração do reCAPTCHA:
{replace-your-project}
com o seuprojectId
ouprojectNumber
. Execute a APIGetConfig
no painel lateral para obter a configuração do reCAPTCHA.Verifique se a defesa por SMS do reCAPTCHA está configurada corretamente:
Se a configuração do reCAPTCHA estiver configurada corretamente, a resposta tem de ter os seguintes campos com os valores especificados:
recaptchaKeys
: O campo não pode estar vazio e está configurado para, pelo menos, uma destas plataformas: iOS, Web ou Android.useSmsTollFraudProtection
: o valor deste campo tem de ser definido comotrue
.phoneEnforcementState
: o valor tem de ser definido comoENFORCE
ouAUDIT
.tollFraudManagedRules
: neste campo, tem de configurarstartScore
com o limite escolhido, que tem de ser um valor entre0
e0.9
.
Caso contrário, configure novamente a defesa por SMS do reCAPTCHA.
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 } } ```
Certifique-se de que as versões do SDK estão corretas.
Web
Atualize para a versão mais recente do SDK Web.
- O suporte do reCAPTCHA para autenticação de email e palavra-passe em apps Web está disponível nas versões 9.20.0 e posteriores do SDK JavaScript.
- O suporte do reCAPTCHA para autenticação por telefone em apps Web está disponível nas versões 11 e posteriores do SDK de JavaScript.
Depois de integrar o SDK Web com a sua app, o SDK obtém automaticamente a configuração do reCAPTCHA e ativa a proteção para os fornecedores que configurou.
Android
Atualize para a versão mais recente do SDK do Android. O suporte do reCAPTCHA para autenticação por email e palavra-passe e autenticação por telefone em apps Android está disponível na versão 23.1.0 e posterior do SDK do Android.
Além disso, o suporte do reCAPTCHA requer o nível da API 23 (Marshmallow) ou superior e o Android 6 ou superior.
Depois de integrar o SDK Android na sua app, o SDK obtém automaticamente a configuração do reCAPTCHA e aplica os limites definidos para os fornecedores que configurou.
Adicione a seguinte regra de compilação à secção de dependências do ficheiro
build.gradle
ao nível da app:implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
Certifique-se de que usa a versão 18.5.1 ou posterior do SDK do reCAPTCHA.
iOS
- Atualize para a versão 11.6.0 ou posterior do SDK para iOS.
Depois de integrar o SDK iOS na sua app, o SDK obtém automaticamente a configuração do reCAPTCHA e aplica os limites definidos para os fornecedores que configurou.
Para integrar o SDK do reCAPTCHA para iOS na sua app, consulte o artigo Prepare o seu ambiente iOS.
Para verificar se
-ObjC
está listado nas flags do linker, navegue para Target > Build Settings > All > Linking e verifique seOther Linker Flags
apresenta-ObjC
.
identitytoolkit.googleapis.com/recaptcha/verdict_count
identitytoolkit.googleapis.com/recaptcha/token_count
identitytoolkit.googleapis.com/recaptcha/sms_tf_risk_scores
- Quando define o estado de aplicação da autenticação por telemóvel como
AUDIT
, o Identity Platform transmite um pedido quando satisfaz, pelo menos, uma das avaliações. Recomendamos que monitorize as métricas do reCAPTCHA para verificar se a defesa por SMS do reCAPTCHA e a proteção contra bots estão configuradas com definições de pontuação razoáveis. - Quando define o estado de aplicação da autenticação por telefone como
ENFORCE
, o Identity Platform só passa um pedido quando satisfaz ambas as avaliações e o pedido falha sem recorrer a outro método de validação. - Saiba mais acerca da funcionalidade de defesa por SMS do reCAPTCHA.
Monitorize as métricas do reCAPTCHA para a defesa por SMS do reCAPTCHA
Monitorize as métricas do reCAPTCHA que o seu projeto emite para verificar se os fluxos de autenticação baseados em SMS estão protegidos. Por exemplo, estas métricas podem ajudar a determinar se configurou corretamente a integração da Identity Platform com a API reCAPTCHA Enterprise. Também podem ajudar a refinar o limite da pontuação para o tráfego de utilizadores.
Verifique se a funcionalidade de defesa por SMS do reCAPTCHA está a funcionar consultando as seguintes métricas que o seu projeto emite para o Cloud Monitoring:
Para mais informações, consulte o artigo Monitorize as métricas do reCAPTCHA.
Aplique a defesa por SMS do reCAPTCHA
Depois de verificar que a sua app está a receber tráfego de utilizadores
aceitável, ative o modo
ENFORCE
reCAPTCHA para bloquear ativamente pedidos fraudulentos e ajudar a proteger os utilizadores.
Para ativar o modo ENFORCE
para fluxos de autenticação baseados em SMS num projeto ou inquilino, use o Google APIs Explorer para atualizar a configuração do projeto introduzindo o seguinte URL HTTP numa nova janela do navegador onde tem sessão iniciada na consola: Google Cloud
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"ENFORCE","useSmsTollFraudProtection":"true"}}}
Substitua PROJECT_ID
pelo ID do projeto.
Use a defesa por SMS do reCAPTCHA com proteção contra bots
É possível usar a defesa por SMS do reCAPTCHA em simultâneo com a proteção contra bots. Para configurações que usam ambas as funcionalidades de proteção, considere o seguinte:
Para ativar ambas as funcionalidades, use o Google APIs Explorer para atualizar a configuração do projeto:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: true,
useSmsBotScore: true
}
Substitua ENFORCE_MODE
pelo modo que quer definir para a aplicação da autenticação telefónica do reCAPTCHA. Os valores válidos são
OFF
, AUDIT
e ENFORCE
.
Quando ativa a defesa por SMS do reCAPTCHA pela primeira vez, recomendamos que defina este parâmetro como AUDIT
e garanta que os seus fluxos de autenticação estão protegidos antes de o definir como ENFORCE
. Para mais informações sobre o funcionamento dos modos, consulte os modos de aplicação da autenticação telefónica do reCAPTCHA.
Desative a defesa por SMS do reCAPTCHA enquanto usa a proteção contra bots
Se estiver a usar a defesa por SMS do reCAPTCHA e a proteção contra bots em simultâneo, e quiser desativar a defesa por SMS do reCAPTCHA sem desativar a proteção contra bots, use o Google APIs Explorer para atualizar a configuração do projeto:
recaptchaConfig: {
phoneEnforcementState: 'ENFORCE_MODE',
useSmsTollFraudProtection: 'false',
useSmsBotScore: 'true'
}
Substitua ENFORCE_MODE
pelo modo que definiu anteriormente para a aplicação da autenticação por telefone do reCAPTCHA. Este valor deve ser AUDIT
ou ENFORCE
. Para mais informações sobre o funcionamento dos modos, consulte os modos de aplicação da autenticação telefónica do reCAPTCHA.
Desative a defesa por SMS do reCAPTCHA
Para desativar a defesa por SMS do reCAPTCHA, use o Google APIs Explorer para atualizar a configuração do projeto introduzindo o seguinte URL HTTP numa nova janela do navegador onde tem sessão iniciada na Google Cloud consola:
https://cloud.google.com/identity-platform/docs/reference/rest/v2/projects/updateConfig?apix_params={"name":"projects/PROJECT_ID/config","updateMask":"recaptchaConfig","resource":{"recaptchaConfig":{"phoneEnforcementState":"OFF","useSmsTollFraudProtection":"false"}}}
Substitua PROJECT_ID
pelo ID do projeto.
Para desativar a defesa por SMS do reCAPTCHA enquanto usa a proteção contra bots, consulte o artigo Desative a defesa por SMS do reCAPTCHA enquanto usa a proteção contra bots.