Rileva e previeni le frodi relative agli SMS

Questo documento mostra come utilizzare la protezione antifrode tariffaria di reCAPTCHA via SMS per rilevare e prevenire attacchi di pompaggio di SMS nelle aziende che si affidano a SMS per l'autenticazione a due fattori (2FA) o la verifica telefonica, che è un potenziale obiettivo per le frodi relative ai numeri via SMS.

SMS 2FA è uno standard di settore per la sicurezza di accesso e registrazione, ma non offre protezione contro le frodi relative al numero di SMS o il pompaggio di SMS.

La protezione contro le frodi del pedaggio di reCAPTCHA SMS contribuisce a proteggere la tua azienda dalle frodi relative al pagamento di SMS o SMS, pur mantenendo la comodità dell'autenticazione basata su SMS. La protezione contro le frodi a pagamento di reCAPTCHA SMS agisce come filtro per il tuo traffico SMS. Prima di inviare un SMS, la protezione contro le frodi a pagamento via SMS di reCAPTCHA ti fornisce un punteggio di rischio che indica la probabilità che quel numero di telefono commetta una frode tariffaria via SMS. In base a questo punteggio, puoi consentire o bloccare i messaggi SMS fraudolenti prima che vengano inviati al tuo provider SMS.

Prima di iniziare

  • Prepara l'ambiente per reCAPTCHA.
  • Attiva la protezione da frodi a pagamento di reCAPTCHA SMS nel tuo progetto Google Cloud:

    1. Nella console Google Cloud, vai alla pagina reCAPTCHA.

      Vai a reCAPTCHA

    2. Verifica che il nome del progetto venga visualizzato nel selettore di risorse.

      Se non vedi il nome del progetto, fai clic sul selettore di risorse e poi seleziona il progetto.

    3. Fai clic su Impostazioni.

    4. Se l'account defender reCAPTCHA non è abilitato per il tuo progetto, procedi nel seguente modo:

      1. Nel riquadro Account defender, fai clic su Abilita.
      2. Nella finestra di dialogo Configura account defender, fai clic su Abilita.
    5. Nel riquadro Protezione da frodi di pedaggio SMS, fai clic su Configura.

    6. Fai clic sul pulsante di attivazione/disattivazione Abilita e poi su Salva.

    La propagazione dell'abilitazione della protezione antifrode a pagamento tramite SMS di reCAPTCHA ai nostri sistemi potrebbe richiedere alcuni minuti. Dopo che l'abilitazione della funzionalità viene propagata ai nostri sistemi, dovresti iniziare a ricevere risposte relative alla protezione antifrode del pagamento di reCAPTCHA SMS nell'ambito delle valutazioni.

  • Crea una chiave basata sul punteggio per il tuo sito web o applicazione mobile.

Configura la protezione contro le frodi a pagamento di reCAPTCHA SMS

Per configurare la protezione contro le frodi a pagamento tramite SMS di reCAPTCHA sul tuo sito web o nella tua applicazione mobile, procedi nel seguente modo:

  1. Integra reCAPTCHA nel tuo sito web o nella tua applicazione mobile.

  2. Crea una valutazione con il numero di telefono.

  3. Annota la valutazione.

Integra reCAPTCHA

Per integrare reCAPTCHA nel tuo sito web o nella tua applicazione mobile, procedi in uno dei seguenti modi:

Crea una valutazione con il numero di telefono

Con il token generato dalla funzione execute(), crea una valutazione utilizzando le librerie client di reCAPTCHA o l'API REST del tuo backend.

Questo documento mostra come creare una valutazione utilizzando l'API REST. Per scoprire come creare una valutazione utilizzando le librerie client, consulta Creare valutazioni.

Prima di creare una valutazione:

  • Configura l'autenticazione per reCAPTCHA.

    Il metodo di autenticazione scelto dipende dall'ambiente in cui è configurato reCAPTCHA. La tabella seguente consente di scegliere il metodo di autenticazione appropriato e l'interfaccia supportata per configurare l'autenticazione:

    Ambiente Interfaccia Metodo di autenticazione
    Google Cloud
    • REST
    • Librerie client
    Utilizza account di servizio collegati.
    On-premise o da un cloud provider diverso REST Utilizza le chiavi API o la federazione delle identità per i carichi di lavoro.

    Se vuoi utilizzare le chiavi API, ti consigliamo di proteggerle applicando limitazioni relative alle chiavi API.

    Librerie client

    Utilizza quanto segue:

  • Scegli un identificatore dell'account stabile accountId che non viene modificato spesso dall'utente e forniscilo alla valutazione nel metodo projects.assessments.create. Questo identificatore di account stabile deve avere lo stesso valore per tutti gli eventi relativi allo stesso utente. Puoi fornire il seguente identificatore dell'account:

    Identificatori degli utenti

    Se ogni account può essere associato in modo univoco a un nome utente, un indirizzo email o un numero di telefono stabile, puoi utilizzarlo come accountId. Quando fornisci questi identificatori tra siti (identificatori che possono essere riutilizzati in più siti), reCAPTCHA utilizza queste informazioni per migliorare la protezione dei tuoi account utente in base a modelli cross-site segnalando gli identificatori di account illeciti e utilizzando la conoscenza dei pattern di abuso tra siti correlati a questi identificatori.

    In alternativa, se hai un ID utente interno associato in modo univoco a ogni account, puoi fornirlo come accountId.

    Con hash o criptato

    Se non disponi di un ID utente interno associato in modo univoco a ciascun account, puoi trasformare qualsiasi identificatore stabile in un identificatore di account opaco specifico per il sito. Questo identificatore è ancora necessario affinché l'account defender di reCAPTCHA possa comprendere i pattern di attività utente e rilevare comportamenti anomali, ma non viene condiviso tra altri siti.

    Scegli qualsiasi identificatore dell'account stabile e rendilo opaco prima di inviarlo a reCAPTCHA utilizzando la crittografia o l'hashing:

    • crittografia (consigliata): cripta l'identificatore dell'account utilizzando un metodo di crittografia deterministico che produce un testo crittografato stabile. Per istruzioni dettagliate, consulta la sezione sulla crittografia dei dati in modo deterministico. Quando scegli la crittografia simmetrica rispetto all'hashing, non è necessario mantenere una mappatura tra gli identificatori utente e i corrispondenti identificatori utente opaci. Decripta gli identificatori opachi restituiti da reCAPTCHA per convertirli in identificatori utente.

    • Hashing: consigliamo di eseguire l'hashing dell'identificatore dell'account utilizzando il metodo SHA256-HMAC con un sale personalizzato a tua scelta. Poiché gli hash sono solo unidirezionali, devi mantenere una mappatura tra gli hash generati e gli identificatori utente in modo da poter mappare gli identificatori dell'account con hash che vengono restituiti agli account originali.

Aggiungi il parametro accountId e il numero di telefono nel formato E.164 come UserId da verificare nella valutazione nel metodo projects.assessments.create.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • TOKEN: token restituito dalla chiamata grecaptcha.enterprise.execute().
  • KEY_ID: la chiave basata sul punteggio installata sul tuo sito web.
  • ACCOUNT_ID: un identificatore univoco per il tuo sito web per un account utente.
  • PHONE_NUMBER: numero di telefono da verificare per rilevare eventuali comportamenti dannosi. Il numero di telefono deve essere nel formato E.164 e non deve essere sottoposto ad hashing o criptato.

Metodo HTTP e URL:

POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments

Corpo JSON della richiesta:


{
  "event": {
    "token": "TOKEN",
    "siteKey": "KEY_ID",
    "userInfo": {
      "accountId": "ACCOUNT_ID",
      "userIds": [
        {
          "phoneNumber": "PHONE_NUMBER"
        }
      ]
    }
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

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

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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

Dovresti ricevere una risposta JSON simile alla seguente:


{
  "event": {
     …
  },
  "name": "ASSESSMENT_ID",
  "smsFraudAssessment": {
    "smsFraudRisk": 0.3
  }
}

La risposta che ricevi include il punteggio smsFraudRisk nel campo smsFraudAssessment . Più alto è il punteggio, maggiore è la probabilità che il numero di telefono sia rischioso. Più basso è il punteggio, più è probabile che il numero di telefono sia legittimo.

Sei responsabile delle azioni che intraprendi in base alla valutazione. Per l'integrazione più semplice, puoi impostare soglie su smsFraudRisk per contribuire alla tua decisione.

Annota la valutazione

Per monitorare il traffico SMS e migliorare il rilevamento di attività fraudolente, devi annotare le valutazioni entro 10 minuti dall'invio dell'SMS o dopo la verifica del numero di telefono.

Per annotare una valutazione, invia una richiesta al metodo projects.assessments.annotate con l'ID valutazione. Nel corpo della richiesta, includi il numero di telefono in formato E.164 nel campo phoneAuthenticationEvent.

Per annotare un test:

  1. Determina le informazioni e le etichette da aggiungere nel corpo JSON della richiesta a seconda del caso d'uso.

    La seguente tabella elenca le etichette e i valori che puoi utilizzare per annotare gli eventi:

    Etichetta Descrizione Esempio di richiesta
    reasons

    Obbligatorio. Un'etichetta a supporto delle valutazioni.

    Fornisci i dettagli dell'evento in tempo reale nell'etichetta reasons pochi secondi o minuti dopo l'evento perché influenzano il rilevamento in tempo reale.

    Valori possibili:

    • INITIATED_TWO_FACTOR: viene inviato un codice di verifica tramite SMS.
    • PASSED_TWO_FACTOR: il codice di verifica è stato verificato.
    • FAILED_TWO_FACTOR: il codice di verifica non è valido.
        {
        "reasons": ["INITIATED_TWO_FACTOR"],
        "phoneAuthenticationEvent": {
          "phoneNumber": "+18005550175"
        }
      }
    annotation

    Facoltativo. Un'etichetta per indicare la legittimità delle valutazioni.

    Fornisci informazioni sugli eventi di accesso e registrazione per convalidare o correggere le valutazioni dei rischi nell'etichetta annotation.

    Valori possibili: LEGITIMATE o FRAUDULENT.

    Ti consigliamo di inviare queste informazioni entro pochi secondi o minuti dopo l'evento perché influenzano il rilevamento in tempo reale.

      {
       "annotation": "LEGITIMATE"
      }
      
  2. Crea una richiesta di annotazione con le etichette appropriate.

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • ASSESSMENT_ID: valore del campo name restituito dalla chiamata projects.assessments.create.
    • ANNOTATION: facoltativo. Un'etichetta per indicare se la valutazione è legittima o fraudolenta.
    • REASONS: motivi a supporto della tua annotazione. Per l'elenco dei valori possibili, consulta i valori dei motivi.
    • PHONE_NUMBER: numero di telefono valutato. Il numero di telefono deve essere nel formato E.164 e non deve essere sottoposto ad hashing o criptato.

    Metodo HTTP e URL:

    POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate

    Corpo JSON della richiesta:

    {
      "annotation": ANNOTATION,
      "reasons": REASONS,
      "phoneAuthenticationEvent": {
        "phoneNumber": "PHONE_NUMBER"
      }
    }
    

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

    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

    Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

    $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 Content

    Dovresti ricevere un codice di stato di operazione riuscita (2xx) e una risposta vuota.

Passaggi successivi