Attivare la protezione antifrode tariffaria SMS per l'autenticazione basata su SMS

Questo documento spiega come utilizzare reCAPTCHA per proteggere i flussi basati su SMS di Identity Platform, come l'autenticazione telefonica e a più fattori, dalle frodi tariffarie SMS (note anche come attacchi di SMS pumping).

Panoramica

Se la tua app si basa su un flusso basato su SMS per l'autenticazione, puoi attivare la funzionalità di protezione antifrode tariffaria SMS di reCAPTCHA nell'ambito dell'integrazione di Identity Platform con reCAPTCHA. Se è attivata, Identity Platform richiama la funzionalità di protezione antifrode tariffaria SMS quando un utente richiede un SMS di verifica dalla tua app o dal tuo sito utilizzando le seguenti operazioni phoneProvider:

Operazione Metodo
Registrazione o accesso tramite numero di telefono sendVerificationCode
Registrazione del numero di telefono per MFA;autenticazione a due fattori mfaSmsEnrollment
Accesso con il numero di telefono tramite l'autenticazione a due fattori mfaSmsSignIn

reCAPTCHA fornisce quindi a Identity Platform un punteggio di rischio che indica la probabilità che il numero di telefono dell'utente commetta frodi tariffarie SMS. Identity Platform confronta questo punteggio con la soglia impostata nella configurazione della protezione antifrode tariffaria SMS e gestisce la richiesta in base all'azione impostata nella configurazione.

Per ulteriori informazioni sulla funzionalità di protezione antifrode tariffaria SMS di reCAPTCHA, vedi Rilevare e prevenire le attività fraudolente tramite SMS.

Prima di iniziare

Prima di attivare la protezione antifrode tariffaria SMS per Identity Platform, completa le seguenti attività:

Modalità di applicazione forzata dell'autenticazione telefonica reCAPTCHA

La protezione antifrode tariffaria SMS di reCAPTCHA richiede che tu abbia configurato l'applicazione forzata dell'autenticazione telefonica reCAPTCHA, che ha due modalità: controllo e applicazione forzata.

Modalità di controllo

Quando imposti l'applicazione dell'autenticazione telefonica in modalità di controllo, Identity Platform utilizza la protezione antifrode tariffaria SMS di reCAPTCHA per verifica app. Se la richiesta dell'utente supera la valutazione della frode tariffaria, Identity Platform invia un messaggio SMS contenente un codice di verifica al telefono dell'utente. Se una richiesta non supera la valutazione della frode per pedaggi e utilizzi l'SDK client, vengono attivati i metodi di verifica di riserva per completare il flusso di autenticazione telefonica. I metodi di riserva accettati dipendono dalla piattaforma dell'app.

L'SDK client attiva i metodi di verifica di riserva nei seguenti scenari:

  • Il token reCAPTCHA è mancante.
  • Il token reCAPTCHA non è valido o è scaduto.
  • Il token reCAPTCHA non supera la soglia di punteggio.
  • reCAPTCHA non è configurato correttamente.

Assicurati che i metodi di verifica di riserva per la piattaforma della tua app siano configurati e pronti per essere attivati dall'SDK client, se necessario.

Web

Se la valutazione iniziale della frode stradale non va a buon fine, la modalità di controllo si basa su reCAPTCHA 2.0 per la verifica. Pertanto, devi configurare il verificatore reCAPTCHA (RecaptchaVerifier) e passarlo alle seguenti operazioni di autenticazione dello smartphone:

  • verifyPhoneNumber
  • signInWithPhoneNumber
  • linkWithPhoneNumber
  • reauthenticateWithPhoneNumber
Senza il verificatore reCAPTCHA, Identity Platform non può avviare reCAPTCHA v2 e restituirà auth/argument-error. Per ulteriori informazioni sulla configurazione del verificatore reCAPTCHA, consulta Configurare il verificatore reCAPTCHA nella documentazione di Firebase.

Android

Se la valutazione iniziale della frode relativa ai pedaggi non va a buon fine, la modalità di controllo verifica la tua app in base all'API Play Integrity. Se questa verifica non va a buon fine, viene attivato reCAPTCHA v2. reCAPTCHA v2 potrebbe essere attivato nei seguenti scenari:

  • Se sul dispositivo dell'utente finale non è installato Google Play Services.
  • Se l'app non è distribuita tramite il Google Play Store (su Authentication SDK v21.2.0 e versioni successive).
  • Se il token SafetyNet ottenuto non era valido (nelle versioni dell'SDK Authentication precedenti alla v21.2.0).
Per ulteriori informazioni sulla configurazione della verifica app per Android, consulta Attivare la verifica app nella documentazione di Firebase.

Modalità di applicazione forzata

Quando imposti l'applicazione dell'autenticazione telefonica in modalità di applicazione forzata, Identity Platform utilizza la protezione antifrode tariffaria SMS di reCAPTCHA per verifica app. Se la richiesta dell'utente supera la valutazione per i reati correlati ai pedaggi, Identity Platform invia un messaggio SMS contenente un codice di verifica al telefono dell'utente. Se la richiesta non supera la valutazione per frodi relative ai pedaggi, Identity Platform la blocca e non invia un messaggio SMS contenente un codice di verifica.

Non è richiesta alcuna verifica di riserva in modalità di applicazione forzata, quindi non devi configurare metodi di verifica aggiuntivi per la tua app. Tuttavia, ti consigliamo di configurare il verificatore reCAPTCHA per le app web per assicurarti che reCAPTCHA 2.0 sia attivato se decidi di impostare la modalità reCAPTCHA della tua app su AUDIT o OFF.

Attivare la protezione antifrode tariffaria SMS di reCAPTCHA

Per attivare la protezione antifrode tariffaria SMS:

  1. Se non l'hai ancora fatto, abilita l'API reCAPTCHA Enterprise nel tuo progetto.

  2. Attiva la protezione antifrode tariffaria SMS con reCAPTCHA. Per istruzioni, consulta la sezione Prima di iniziare della pagina Rileva e previeni le attività fraudolente tramite SMS nella documentazione di reCAPTCHA.

  3. Per attivare la protezione antifrode tariffaria SMS per un progetto, utilizza l'SDK Admin per chiamare updateConfig come segue:

      // Update the reCAPTCHA config to enable toll fraud protection
      const updateProjectConfigRequest = {
        recaptchaConfig: {
          phoneEnforcementState: 'ENFORCE_MODE',
          useSmsTollFraudProtection: 'true',
          tollFraudManagedRules: [{ startScore: START_SCORE,
            action: 'BLOCK' }],
        }
      }
      let projectConfig = await getAuth().projectConfigManager().updateProject(updateProjectConfigRequest);
    

    Sostituisci quanto segue:

    • ENFORCE_MODE: la modalità da impostare per l'applicazione forzata dell'autenticazione telefonica reCAPTCHA. I valori validi sono OFF, AUDIT e ENFORCE. Per attivare la protezione antifrode tariffaria SMS, questo parametro deve essere impostato su AUDIT o ENFORCE e useSmsTollFraudProtection deve essere impostato su true.

      Quando attivi la protezione antifrode tariffaria SMS per la prima volta, consigliamo di impostare lo stato di applicazione su AUDIT e di assicurarti che i flussi di autenticazione siano protetti prima di impostarlo su ENFORCE. Per maggiori informazioni sul funzionamento delle modalità, consulta le modalità di applicazione forzata dell'autenticazione telefonica reCAPTCHA.

    • START_SCORE: il punteggio più alto per la valutazione delle attività fraudolente relative ai pedaggi che una richiesta può avere prima di non riuscire. Puoi impostare questo punteggio tra 0.0 e 1.0. Qualsiasi punteggio superiore alla soglia impostata verrà considerato attività fraudolenta di pedaggio SMS. Ad esempio, se imposti una soglia di 0.3, reCAPTCHA non accetterà alcuna richiesta con un valore pari o superiore a 0.3.0.4 Pertanto, più basso è il punteggio impostato, più severe saranno le regole.

  4. Se utilizzi Identity Platform sul web o su Android, registra la tua app dalla console Firebase:

    Il provisioning della chiave reCAPTCHA può richiedere diversi minuti.

  5. Se hai impostato l'applicazione in modalità di controllo, ti consigliamo di monitorare le metriche di reCAPTCHA per la protezione antifrode tariffaria SMS per assicurarti che i tuoi flussi siano protetti.

Configurare l'SDK client

Configura l'SDK client in base alla piattaforma della tua app.

Web

  1. Esegui l'aggiornamento alla versione più recente dell'SDK web.

    • Il supporto di reCAPTCHA per l'autenticazione tramite email e password nelle app web è disponibile nelle versioni dell'SDK JavaScript 9.20.0 e successive.
    • Il supporto di reCAPTCHA per l'autenticazione telefonica nelle app web è disponibile nelle versioni 11 e successive dell'SDK JavaScript.

    Dopo aver integrato l'SDK web con la tua app, l'SDK recupera automaticamente la configurazione di reCAPTCHA e attiva la protezione per i fornitori che hai configurato.

  2. Per ridurre il numero di chiamate di rete effettuate dall'SDK e migliorare la raccolta degli indicatori reCAPTCHA, ti consigliamo di configurarlo esplicitamente come segue:

    import { initializeRecaptchaConfig } from '@firebase/auth';
    
    // Initialize Firebase Authentication
    const auth = getAuth();
    initializeRecaptchaConfig(auth)
      .then(() => {
        console.log("Recaptcha Enterprise Config Initialization successful.")
      })
      .catch((error) => {
        console.error("Recaptcha Enterprise Config Initialization failed with " + error)
      });
    

Android

  1. Esegui l'aggiornamento alla versione più recente dell'SDK Android. Il supporto di reCAPTCHA per l'autenticazione via email e password e l'autenticazione telefonica nelle app per Android è disponibile nella versione 23.1.0 dell'SDK Android e successive.

    Inoltre, il supporto di reCAPTCHA richiede il livello API 23 (Marshmallow) o versioni successive e Android 6 o versioni successive.

    Dopo aver integrato l'SDK Android con la tua app, l'SDK recupera automaticamente la configurazione di reCAPTCHA e attiva la protezione per i provider che hai configurato.

  2. Aggiungi la seguente regola di compilazione alla sezione delle dipendenze del file build.gradle a livello di app:

    implementation 'com.google.android.recaptcha:recaptcha:18.5.1'
    

    Assicurati di utilizzare la versione 18.5.1 o successive dell'SDK reCAPTCHA.

  3. Per ridurre il numero di chiamate di rete effettuate dall'SDK e per rendere più efficace la raccolta degli indicatori reCAPTCHA, ti consigliamo di configurarlo esplicitamente come segue:

    • Kotlin:
    // Initialize Firebase Authentication
    auth = Firebase.auth
    
    auth.initializeRecaptchaConfig().addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Recaptcha Enterprise Initialization successful.")
        } else {
            Log.w(TAG, "Recaptcha Enterprise Initialization failed.")
        }
    }
    
    • Java:
    // Initialize Firebase Authentication
    auth = FirebaseAuth.getInstance();
    auth.initializeRecaptchaConfig().addOnCompleteListener(
      this, new OnCompleteListener<void>() {
      @Override
      public void onComplete(@NonNull Task<void> task) {
        if (task.isSuccessful()) {
          Log.d(TAG, "Recaptcha Enterprise Initialization successful.");
        } else {
          Log.w(TAG, "Recaptcha Enterprise Initialization failed.");
        }
      }
    });
    

iOS

I flussi di autenticazione telefonica su iOS non sono supportati dall'integrazione di Identity Platform con l'API reCAPTCHA Enterprise.

  1. Esegui l'aggiornamento alla versione 10.14.0 o successive dell'SDK per iOS. Dopo aver integrato l'SDK per iOS con la tua app, l'SDK recupera automaticamente la configurazione di reCAPTCHA e attiva la protezione per i fornitori che hai configurato.

  2. Per integrare l'SDK reCAPTCHA per iOS nella tua app, consulta Preparare l'ambiente.

  3. Assicurati che -ObjC sia elencato nei flag del linker. Vai a Destinazione > Impostazioni di compilazione > Tutte > Collegamento e verifica che in Other Linker Flags sia visualizzato -ObjC.

  4. Per ridurre il numero di chiamate di rete effettuate dall'SDK e rendere più efficace la raccolta degli indicatori reCAPTCHA, ti consigliamo di configurarlo esplicitamente come segue:

    • Swift:
    // Initialize Firebase Authentication
    try await Auth.auth().initializeRecaptchaConfig()
    
    • Objective-C:
    // Initialize Firebase Authentication
    [[FIRAuth auth] initializeRecaptchaConfigWithCompletion:^(NSError * _Nullable error) {
      // Firebase Authentication initialization finished
    }];
    

Monitorare le metriche di reCAPTCHA per la protezione antifrode tariffaria SMS

Prima di impostare l'applicazione forzata di reCAPTCHA in modalità di applicazione forzata, ti consigliamo di utilizzare la modalità di controllo e di monitorare le metriche reCAPTCHA emesse dal tuo progetto per assicurarti che i flussi di autenticazione basati su SMS siano protetti. Ad esempio, queste metriche possono aiutarti a determinare se hai configurato correttamente l'integrazione di Identity Platform con l'API reCAPTCHA Enterprise. Inoltre, possono aiutarti a perfezionare la soglia di punteggio per il traffico degli utenti.

Assicurati che la funzionalità di protezione antifrode tariffaria SMS funzioni esaminando le seguenti metriche emesse dal tuo progetto in Cloud Monitoring:

Per ulteriori informazioni, consulta Monitorare le metriche reCAPTCHA.

Applicare la protezione antifrode tariffaria SMS

Dopo aver verificato che la tua app riceve traffico degli utenti accettabile, puoi attivare l'applicazione forzata di reCAPTCHA per proteggere i tuoi utenti. Assicurati di non interrompere il servizio per gli utenti esistenti, inclusi quelli che potrebbero utilizzare una versione precedente della tua app.

Per attivare l'applicazione di reCAPTCHA per i flussi di autenticazione basati su SMS in un progetto o un tenant, utilizza l'SDK Admin per eseguire il seguente comando:

  const enforceRequest = {
    recaptchaConfig: {
      phoneEnforcementState:  'ENFORCE',
      useSmsTollFraudProtection: 'true'
    }
  };

Disattivare la protezione antifrode tariffaria SMS

Per disattivare la protezione antifrode tariffaria SMS, utilizza l'SDK Amministrazione per eseguire il seguente comando:

  const disableRequest = {
    recaptchaConfig: {
      phoneEnforcementState:  'OFF',
      useSmsTollFraudProtection: 'false'
    }
  };

Per disattivare la protezione antifrode tariffaria SMS mentre utilizzi la protezione antibot, consulta Disattivare la protezione antifrode tariffaria SMS mentre utilizzi la protezione antibot.

Utilizzare la protezione antifrode tariffaria SMS con la protezione antibot

È possibile utilizzare la protezione antifrode tariffaria SMS contemporaneamente alla protezione da bot. Per le configurazioni che utilizzano entrambe le funzionalità di protezione, tieni presente quanto segue:

  • Quando imposti lo stato di applicazione dell'autenticazione dello smartphone su controllo, Identity Platform passa una richiesta quando soddisfa almeno una delle valutazioni. Ti invitiamo a monitorare le metriche di reCAPTCHA per assicurarti che la protezione antifrode tariffaria SMS e la protezione antibot siano configurate con impostazioni di punteggio ragionevoli.
  • Quando imposti lo stato di applicazione dell'autenticazione dello smartphone su Enforce, Identity Platform passa una richiesta solo quando soddisfa entrambe le valutazioni e la richiesta di errore si chiude senza passare a un altro metodo di verifica.

Per attivare entrambe le funzionalità, utilizza SDK Admin per eseguire il seguente comando:

  const enableBothRequest = {
    recaptchaConfig: {
      phoneEnforcementState:  'ENFORCE_MODE',
      useSmsTollFraudProtection: true,
      useSmsBotScore: true
    }
  };

Sostituisci ENFORCE_MODE con la modalità che vuoi impostare per l'applicazione forzata dell'autenticazione telefonica reCAPTCHA. I valori validi sono OFF, AUDIT e ENFORCE. Per attivare la protezione antifrode tariffaria SMS, questo parametro deve essere impostato su AUDIT o ENFORCE. Quando attivi la protezione antifrode tariffaria SMS per la prima volta, ti consigliamo di impostare questo parametro su AUDIT e di assicurarti che i flussi di autenticazione siano protetti prima di impostarlo su ENFORCE. Per ulteriori informazioni sul funzionamento delle modalità, consulta Modalità di applicazione forzata dell'autenticazione telefonica reCAPTCHA.

Disattivare la protezione antifrode tariffaria SMS durante l'utilizzo della protezione antibot

Se utilizzi contemporaneamente la protezione antifrode tariffaria SMS e la protezione antibot e vuoi disattivare la protezione antifrode tariffaria SMS senza disattivare la protezione antibot, utilizza l'SDK Amministrazione per eseguire il seguente comando:

  const disableRequest = {
    recaptchaConfig: {
      phoneEnforcementState:  'ENFORCE_MODE',
      useSmsTollFraudProtection: 'false',
      useSmsBotScore: 'true'
    }
  };

Sostituisci ENFORCE_MODE con la modalità impostata in precedenza per l'applicazione forzata dell'autenticazione telefonica reCAPTCHA. Questo valore deve essere AUDIT o ENFORCE. Per ulteriori informazioni sul funzionamento delle modalità, consulta Modalità di applicazione forzata dell'autenticazione telefonica reCAPTCHA.

Passaggi successivi