Ce document explique comment utiliser reCAPTCHA Account Defender pour détecter et prévenir les activités frauduleuses liées aux comptes sur les sites Web.
reCAPTCHA vous aide à protéger les actions critiques, comme la connexion et le paiement. Toutefois, il existe de nombreuses formes subtiles d'utilisation abusive de comptes qui peuvent être détectées en observant le comportement d'un utilisateur spécifique sur un site Web pendant une période donnée. reCAPTCHA Account Defender permet d'identifier ces types d'utilisation abusive subtile en créant un modèle spécifique à votre site Web pour détecter une tendance de comportement suspect ou un changement d'activité. En utilisant le modèle spécifique à votre site, reCAPTCHA Account Defender vous aide à détecter les éléments suivants :
- Activités suspectes
- Comptes avec des comportements similaires
- Requêtes provenant d'appareils marqués comme fiables pour des utilisateurs spécifiques
En fonction de l'analyse de l'outil Account Defender de reCAPTCHA et du modèle spécifique au site, vous pouvez effectuer les actions suivantes :
- Restreindre ou désactiver les comptes frauduleux.
- Empêchez les tentatives de piratage de compte.
- Limitez les piratages de compte réussis.
- N'accordez l'accès qu'aux demandes provenant de comptes utilisateur légitimes.
- Réduisez les frictions pour les utilisateurs qui se connectent depuis l'un de leurs appareils vérifiés.
Avant de commencer
Configurer vos pages Web pour reCAPTCHA Account Defender
reCAPTCHA Account Defender nécessite une compréhension approfondie des activités de compte pour permettre une détection efficace. Pour commencer à fournir des activités liées au compte à reCAPTCHA Account Defender, et pour créer et améliorer votre modèle spécifique au site, procédez comme suit :
- Activez la collecte de données de télémétrie horizontale.
- Créez des rapports sur les actions utilisateur critiques.
- Évaluez les événements utilisateur critiques.
- Annoter les événements utilisateur pour ajuster votre modèle spécifique au site
Activer la collecte de données de télémétrie horizontale
reCAPTCHA Account Defender nécessite une vue complète des actions de l'utilisateur, par exemple s'il est connecté ou s'il est sur le point de se connecter. Pour activer la collecte passive de données de télémétrie horizontale par reCAPTCHA Account Defender, chargez le script JavaScript reCAPTCHA avec la clé de site basée sur des scores que vous avez créée en arrière-plan de toutes les pages Web qui font partie de votre workflow utilisateur.
L'exemple suivant montre comment charger le script JavaScript reCAPTCHA sur une page Web.
<head> <script src="https://www.google.com/recaptcha/enterprise.js?render=KEY_ID"></script> .... </head>
Créer des rapports sur les actions utilisateur critiques
Pour détecter les schémas d'activité suspects et mieux comprendre les schémas d'activité typiques sur votre site, reCAPTCHA Account Defender a besoin d'informations sur les actions utilisateur critiques. Par conséquent, signalez les actions utilisateur critiques sur les pages Web en appelant grecaptcha.enterprise.execute() sur ces actions utilisateur critiques.
Nous vous recommandons de signaler toutes les actions utilisateur critiques, car cela permet de collecter des signaux supplémentaires. Pour chaque action utilisateur que vous souhaitez signaler, remplacez la valeur du paramètre action
de grecaptcha.enterprise.execute()
par un nom d'action décrivant l'action utilisateur.
Le tableau suivant liste les noms d'actions que vous pouvez utiliser lorsque vous signalez les actions utilisateur critiques.
Nom de l'action | Événement ou action déclenchés par l'utilisateur |
---|---|
LOGIN |
Connectez-vous au site Web. |
REGISTRATION |
Inscription sur le site Web. |
SECURITY_QUESTION_CHANGE |
Demande de modification de la question secrète. |
PASSWORD_RESET |
Demande de réinitialisation du mot de passe. |
PHONE_NUMBER_UPDATE |
Demande de modification du numéro de téléphone. |
EMAIL_UPDATE |
Requête de mise à jour de l'adresse e-mail. |
ACCOUNT_UPDATE |
Demander à modifier des informations liées au compte, comme les coordonnées |
TRIGGER_MFA |
Action qui déclenche un test MFA. |
REDEEM_CODE |
Demandez à utiliser le code. |
LIST_PAYMENT_METHODS |
Récupérez la liste des modes de paiement. |
L'exemple suivant montre comment appeler grecaptcha.enterprise.execute()
lors de la modification d'un numéro de téléphone :
<script> function onClick(e) { e.preventDefault(); grecaptcha.enterprise.ready(async () => { const token = await grecaptcha.enterprise.execute('KEY_ID', {action: 'PHONE_NUMBER_UPDATE'}); }); } </script>
Évaluer les événements utilisateur critiques
Lorsque vous appelez grecaptcha.enterprise.execute()
sur une action utilisateur, un jeton est généré. Pour les événements utilisateur critiques, tels que les connexions et les inscriptions réussies ou échouées, ainsi que les actions des utilisateurs connectés, créez une évaluation pour évaluer les résultats de l'appel grecaptcha.enterprise.execute()
. L'évaluation vous fournit un verdict sur le risque, que vous pouvez utiliser pour décider comment gérer les activités potentiellement frauduleuses. Vous pouvez, par exemple, bloquer les requêtes suspectes, demander une authentification pour les connexions risquées et examiner les comptes qui vous intéressent.
reCAPTCHA Account Defender vous demande de fournir un identifiant de compte stable pour attribuer l'activité des utilisateurs (comme les demandes de connexion, les demandes de connexion et les demandes d'inscription) à un compte spécifique. Cela aide reCAPTCHA Account Defender à comprendre les habitudes d'activité des utilisateurs et à créer un modèle d'activité pour chaque compte afin de mieux détecter le trafic anormal et abusif.
Choisissez un identifiant de compte stable accountId
qui n'est pas souvent modifié par l'utilisateur et fournissez-le à l'évaluation dans la méthode
projects.assessments.create
. Cet identifiant de compte stable doit avoir la même valeur pour tous les événements associés au même utilisateur. Vous pouvez fournir les éléments suivants comme identifiant de compte :
Identifiants utilisateur
Si chaque compte peut être associé de manière unique à un nom d'utilisateur, une adresse e-mail ou un numéro de téléphone stables, vous pouvez l'utiliser comme accountId
. Lorsque vous fournissez de tels identifiants multisites (identifiants réutilisables sur plusieurs sites), reCAPTCHA utilise ces informations pour améliorer la protection de vos comptes utilisateur en fonction de modèles multisites. Pour ce faire, il signale les identifiants de compte abusifs et utilise les connaissances sur les schémas d'utilisation abusive multisites liés à ces identifiants.
Vous pouvez également fournir un ID utilisateur interne associé de manière unique à chaque compte en tant que accountId
.
Haché ou chiffré
Si vous ne disposez pas d'un ID utilisateur interne associé de manière unique à chaque compte, vous pouvez transformer n'importe quel identifiant stable en identifiant de compte opaque et propre au site. Cet identifiant est toujours nécessaire pour que reCAPTCHA Account Defender comprenne les habitudes d'activité des utilisateurs et détecte les comportements anormaux, mais il n'est pas partagé sur d'autres sites.
Choisissez un identifiant de compte stable et rendez-le opaque avant de l'envoyer à reCAPTCHA en utilisant le chiffrement ou le hachage :
Chiffrement (recommandé) : chiffrez l'identifiant de compte à l'aide d'une méthode de chiffrement déterministe qui produit un texte chiffré stable. Pour obtenir des instructions détaillées, consultez Chiffrer les données de manière déterministe. Lorsque vous choisissez le chiffrement symétrique plutôt que le hachage, vous n'avez pas besoin de conserver de mappage entre vos identifiants utilisateur et les identifiants utilisateur opaques correspondants. Déchiffrez les identifiants opaques renvoyés par reCAPTCHA pour les transformer en identifiant utilisateur.
Hachage : nous vous recommandons de hacher l'identifiant de compte à l'aide de la méthode SHA256-HMAC avec un sel personnalisé de votre choix. Étant donné que les hachages sont unidirectionnels, vous devez conserver un mappage entre les hachages générés et vos identifiants utilisateur afin de pouvoir mapper l'identifiant de compte haché qui est renvoyé aux comptes d'origine.
En plus de fournir un identifiant de compte stable pour toutes les demandes liées au compte, vous pouvez fournir des identifiants de compte supplémentaires, potentiellement non stables, pour certaines demandes spécifiques.
Les identifiants de compte spécifiques au contexte fournis en plus de accountId
aident l'outil Account Defender de reCAPTCHA à mieux comprendre l'activité des utilisateurs et à détecter les tentatives de piratage de compte pour protéger vos comptes utilisateur. Lorsque vous fournissez des identifiants supplémentaires, reCAPTCHA utilise ces informations pour améliorer la protection de vos comptes utilisateur en fonction de modèles multisites. Pour ce faire, il signale les identifiants de compte abusifs et utilise les connaissances sur les schémas d'utilisation abusive multisites liés à ces identifiants. Par exemple, vous pouvez fournir les informations suivantes :
Nom d'utilisateur, adresse e-mail ou numéro de téléphone utilisés comme identifiant de connexion pour les demandes de connexion
Adresse e-mail ou numéro de téléphone validés pour une demande d'authentification multifacteur
Adresse e-mail ou numéro de téléphone (principal ou secondaire) fournis par l'utilisateur lors d'une demande de modification du compte
Adresses e-mail et numéros de téléphone fournis par l'utilisateur lors d'une demande d'inscription
Ajoutez l'identifiant de compte stable choisi au paramètre accountId
dans la méthode
projects.assessments.create
pour toutes les requêtes liées au compte. Vous pouvez éventuellement fournir des identifiants de compte supplémentaires pour les demandes concernées à l'aide du champ userIds
dans l'évaluation.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- TOKEN : jeton renvoyé par l'appel
grecaptcha.enterprise.execute()
- KEY_ID : clé reCAPTCHA associée au site
- ACCOUNT_ID : identifiant associé de manière unique au compte utilisateur pour un compte utilisateur sur votre site Web
- EMAIL_ADDRESS : facultatif. Adresse e-mail associée à cette demande, le cas échéant
- PHONE_NUMBER : facultatif. Numéro de téléphone associé à cette demande, le cas échéant
- USERNAME : facultatif. Nom d'utilisateur associé à cette demande, le cas échéant
Méthode HTTP et URL :
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Corps JSON de la requête :
{ "event": { "token": "TOKEN", "siteKey": "KEY_ID", "userInfo": { "accountId": "ACCOUNT_ID", "userIds": [ { "email": "EMAIL_ADDRESS" }, { "phoneNumber": "PHONE_NUMBER" }, { "username": "USERNAME" } ] } } }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
{ "tokenProperties": { "valid": true, "hostname": "www.google.com", "action": "login", "createTime": "2019-03-28T12:24:17.894Z" }, "riskAnalysis": { "score": 0.6, }, "event": { "token": "TOKEN", "siteKey": "KEY", "userInfo": { "accountId": "ACCOUNT_ID" } }, "name": "projects/PROJECT_NUMBER/assessments/b6ac310000000000", "accountDefenderAssessment": { "labels": ["SUSPICIOUS_LOGIN_ACTIVITY"] } }
Exemple de code
Java
Pour vous authentifier auprès de reCAPTCHA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Interpréter le verdict de risque des événements utilisateur critiques
Lorsque vous créez une évaluation avec Account Defender activé, Account Defender renvoie accountDefenderAssessment
dans la réponse à l'évaluation.
La valeur de accountDefenderAssessment
vous aide à évaluer si l'activité de l'utilisateur est légitime ou frauduleuse. Elle renvoie également un ID d'évaluation que vous devez utiliser lorsque vous annotez des événements utilisateur.
Voici un exemple de réponse JSON :
{ "tokenProperties": { "valid": true, "hostname": "www.google.com", "action": "login", "createTime": "2019-03-28T12:24:17.894Z" }, "riskAnalysis": { "score": 0.6, }, "event": { "token": "TOKEN", "siteKey": "KEY_ID", "expectedAction": "USER_ACTION" }, "name": "projects/PROJECT_ID/assessments/b6ac310000000000X", "accountDefenderAssessment": { labels: ["SUSPICIOUS_LOGIN_ACTIVITY"] } }
Le champ accountDefenderAssessment
peut présenter l'une des valeurs suivantes :
Valeur | Description |
---|---|
SUSPICIOUS_LOGIN_ACTIVITY |
Indique que la demande présente un risque élevé de credential stuffing ou de piratage de compte. |
SUSPICIOUS_ACCOUNT_CREATION |
Indique que la demande représente un risque élevé de création abusive de compte. |
PROFILE_MATCH |
Indique que les attributs de l'utilisateur correspondent à ceux qui ont déjà été observés pour cet utilisateur. Cette valeur indique que l'utilisateur se trouve sur un appareil de confiance qui a déjà été utilisé pour accéder à votre site Web.
|
RELATED_ACCOUNTS_NUMBER_HIGH |
Indique que la demande comporte un grand nombre de comptes associés. Cela ne signifie pas nécessairement que le compte est mauvais, mais une enquête plus approfondie peut être nécessaire. |
Annoter des événements pour ajuster votre modèle spécifique à votre site
Pour fournir plus d'informations à reCAPTCHA Account Defender et améliorer votre modèle de détection spécifique à votre site, vous devez annoter les événements que vous avez évalués en créant des évaluations.
Pour annoter une évaluation, envoyez une requête à la méthode projects.assessments.annotate
avec l'ID de l'évaluation. Dans le corps de cette requête, vous incluez des libellés fournissant des informations supplémentaires sur un événement décrit dans l'évaluation.
Pour annoter une évaluation, procédez comme suit :
-
Déterminez les informations et les libellés à ajouter dans le corps JSON de la requête en fonction de votre cas d'utilisation.
Le tableau suivant liste les libellés et les valeurs que vous pouvez utiliser pour annoter les événements :
Libellé Description Exemple de requête reasons
Obligatoire. Libellé pour vos évaluations. Fournissez des détails sur les événements en temps réel dans le libellé
reasons
quelques secondes ou minutes après l'événement, car ils influencent la détection en temps réel.Pour obtenir la liste des valeurs possibles, consultez Valeurs des motifs.
Exemple : Pour détecter les piratages de compte, indiquez si le mot de passe saisi était correct avec les valeurs
CORRECT_PASSWORD
ouINCORRECT_PASSWORD
. Si vous avez déployé votre propre MFA, vous pouvez ajouter les valeurs suivantes :INITIATED_TWO_FACTOR
,PASSED_TWO_FACTOR
ouFAILED_TWO_FACTOR
.{ "reasons": ["INCORRECT_PASSWORD"] }
annotation
Facultatif. Libellé indiquant la légitimité des évaluations. Fournissez des informations factuelles sur les événements de connexion et d'inscription pour valider ou corriger vos évaluations des risques dans le libellé
annotation
.Les valeurs possibles sont
LEGITIMATE
ouFRAUDULENT
.Vous pouvez envoyer ces informations à tout moment ou dans le cadre d'un job par lot. Toutefois, nous vous recommandons d'envoyer ces informations quelques secondes ou minutes après l'événement, car elles influencent la détection en temps réel.
{ "annotation": "LEGITIMATE" }
accountId
Facultatif. Libellé permettant d'associer un ID de compte à un événement.
Si vous avez créé une évaluation sans ID de compte, utilisez ce libellé pour fournir l'ID de compte d'un événement chaque fois qu'il est disponible.
{ "accountId": "ACCOUNT_ID" }
Créez une requête d'annotation avec les libellés appropriés.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- ASSESSMENT_ID : valeur du champ
name
renvoyée par l'appelprojects.assessments.create
. - ANNOTATION : facultatif. Étiquette indiquant si l'évaluation est légitime ou frauduleuse.
- REASONS : facultatif. Les raisons qui étayent votre annotation. Pour obtenir la liste des valeurs possibles, consultez Valeurs des motifs.
- ACCOUNT_ID : facultatif. Identifiant associé de manière unique au compte utilisateur sur votre site Web.
Pour en savoir plus, consultez Libellés pour les annotations.
Méthode HTTP et URL :
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Corps JSON de la requête :
{ "annotation": ANNOTATION, "reasons": REASONS, "accountId": ACCOUNT_ID }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :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
Enregistrez le corps de la requête dans un fichier nommé
request.json
, puis exécutez la commande suivante :$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 ContentVous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.
- ASSESSMENT_ID : valeur du champ
Exemple de code
Java
Pour vous authentifier auprès de reCAPTCHA, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Activer reCAPTCHA Account Defender
Une fois que vous avez configuré vos pages Web pour l'outil Account Defender de reCAPTCHA, vous pouvez l'activer.
Dans la console Google Cloud , accédez à la page reCAPTCHA.
Vérifiez que le nom de votre projet s'affiche dans le sélecteur de ressources en haut de la page.
Si le nom de votre projet n'apparaît pas, cliquez sur le sélecteur de projet, puis sélectionnez votre projet.
- Cliquez sur Paramètres.
Dans le volet Account Defender, cliquez sur Configurer.
Dans la boîte de dialogue Configurer Account Defender, cliquez sur Activer, puis sur Enregistrer.
La propagation de l'activation d'Account Defender reCAPTCHA dans nos systèmes peut prendre quelques heures. Une fois l'activation de la fonctionnalité propagée à nos systèmes, vous devriez commencer à recevoir des réponses liées à Account Defender dans les évaluations.