En este documento, se muestra cómo usar reCAPTCHA Account Defender para detectar y prevenir actividades fraudulentas relacionadas con cuentas en aplicaciones para dispositivos móviles.
reCAPTCHA te ayuda a proteger acciones críticas, como el acceso y la confirmación de compra. Sin embargo, existen muchas formas sutiles de abuso de cuentas que se pueden detectar observando el comportamiento de un usuario específico en una aplicación para dispositivos móviles durante un período. La protección de cuentas de reCAPTCHA ayuda a identificar este tipo de abuso sutil creando un modelo específico del sitio para tu aplicación para dispositivos móviles que detecte una tendencia de comportamiento sospechoso o un cambio en la actividad. Con el modelo específico del sitio, la protección de cuentas de reCAPTCHA te ayuda a detectar lo siguiente:
- Actividades sospechosas
- Cuentas con comportamientos similares
- Solicitudes provenientes de dispositivos que se marcaron como de confianza para usuarios específicos
Según el análisis de la protección de cuentas de reCAPTCHA y el modelo específico del sitio, puedes realizar las siguientes acciones:
- Restringir o inhabilitar las cuentas fraudulentas
- Evita los intentos de apropiación de cuentas.
- Mitigar las apropiaciones de cuentas exitosas
- Otorga acceso solo a las solicitudes provenientes de cuentas de usuario legítimas.
- Reducir los obstáculos para los usuarios que acceden desde uno de sus dispositivos de confianza
Antes de comenzar
- Podrás acceder a la protección de cuentas de reCAPTCHA para aplicaciones para dispositivos móviles después de activar una revisión de seguridad automática agregando una cuenta de facturación a tu proyecto. Agrega una cuenta de facturación a tu proyecto para incorporar tu sitio a esta función.
- Prepara tu entorno para reCAPTCHA.
- Crea una clave basada en la puntuación.
Configura tu aplicación para dispositivos móviles para la protección de cuentas de reCAPTCHA
La protección de cuentas de reCAPTCHA requiere una comprensión integral de las actividades de la cuenta para permitir una detección eficaz. Para comenzar a enviar actividades relacionadas con la cuenta a la protección de cuentas de reCAPTCHA y crear y mejorar tu modelo específico del sitio, haz lo siguiente:
Integra reCAPTCHA a tu aplicación para dispositivos móviles.
- En el caso de las apps para Android, consulta Cómo integrar reCAPTCHA en apps para Android.
- En el caso de las apps para iOS, consulta Cómo integrar reCAPTCHA en apps para iOS.
- Genera informes sobre las acciones críticas de los usuarios.
- Evalúa los eventos críticos del usuario.
- Anota los eventos de usuarios para ajustar tu modelo específico del sitio.
Genera informes sobre las acciones críticas del usuario
Para detectar patrones de actividad sospechosos y comprender mejor los patrones de actividad típicos en tu sitio, reCAPTCHA Account Defender necesita información sobre las acciones críticas del usuario.
Para cada acción de tu app que esté protegida con reCAPTCHA, llama al método execute()
con RecaptchaAction
. Para obtener más información sobre execute()
y RecaptchaAction
, consulta los siguientes vínculos:
- Android:
execute()
yRecaptchaAction
. - iOS:
execute()
yRecaptchaAction
.
reCAPTCHA proporciona un conjunto integrado de acciones y, si es necesario, puedes crear acciones personalizadas.
En la siguiente tabla, se enumeran los nombres de las acciones que puedes usar cuando informes las acciones críticas del usuario.
Nombre de la acción | Evento o acción iniciados por el usuario |
---|---|
LOGIN |
Accede a la aplicación para dispositivos móviles. |
SIGNUP |
Regístrate en la aplicación para dispositivos móviles. |
Evalúa los eventos de usuario críticos
Cuando llamas a execute()
en una acción del usuario, se genera un token. Para los eventos críticos del usuario, como los accesos, los registros y las acciones de los usuarios que accedieron a sus cuentas (tanto exitosos como fallidos), crea una evaluación para analizar los resultados de la llamada a execute()
. La evaluación te proporciona un veredicto de riesgo, que puedes usar para tomar una decisión sobre cómo manejar las actividades potencialmente fraudulentas. Algunas de las acciones que puedes realizar son bloquear solicitudes sospechosas, desafiar inicios de sesión riesgosos e investigar cuentas de interés.
reCAPTCHA Account Defender requiere que proporciones un identificador de cuenta estable para atribuir la actividad del usuario (como solicitudes de acceso, solicitudes de acceso con la cuenta y solicitudes de registro) a una cuenta específica. Esto ayuda a reCAPTCHA Account Defender a comprender los patrones de actividad del usuario y a crear un modelo de actividad para cada cuenta, lo que permite detectar mejor el tráfico anómalo y abusivo.
Elige un identificador de cuenta estable accountId
que el usuario no cambie con frecuencia y proporciónalo a la evaluación en el método
projects.assessments.create
. Este identificador de cuenta estable debe tener el mismo valor para todos los eventos relacionados con el mismo usuario. Puedes proporcionar lo siguiente como identificador de la cuenta:
Identificadores de usuario
Si cada cuenta se puede asociar de forma única con un nombre de usuario, una dirección de correo electrónico o un número de teléfono estables, puedes usarlo como accountId
. Cuando proporcionas esos identificadores entre sitios (identificadores que se pueden reutilizar en diferentes sitios), reCAPTCHA usa esta información para mejorar la protección de tus cuentas de usuario en función de los modelos entre sitios, ya que marca los identificadores de cuentas abusivas y usa el conocimiento de los patrones de abuso entre sitios relacionados con estos identificadores.
Como alternativa, si tienes un ID de usuario interno asociado de forma única a cada cuenta, puedes proporcionarlo como accountId
.
Con hash o encriptado
Si no tienes un ID de usuario interno asociado de forma única a cada cuenta, puedes convertir cualquier identificador estable en un identificador de cuenta opaco y específico del sitio. Este identificador sigue siendo necesario para que el defensor de cuentas de reCAPTCHA comprenda los patrones de actividad del usuario y detecte comportamientos anómalos, pero no se comparte en otros sitios.
Elige cualquier identificador de cuenta estable y hazlo opaco antes de enviarlo a reCAPTCHA con encriptación o hash:
Encriptación (recomendada): Encripta el identificador de la cuenta con un método de encriptación determinístico que produzca un texto cifrado estable. Para obtener instrucciones detalladas, consulta cómo encriptar datos de forma determinística. Cuando eliges el encriptado simétrico en lugar del hash, no necesitas mantener una asignación entre tus identificadores de usuario y los identificadores de usuario opacos correspondientes. Descifrar los identificadores opacos que devuelve reCAPTCHA para convertirlos en el identificador del usuario
Codificación hash: Recomendamos codificar el identificador de la cuenta con el método SHA256-HMAC y una cadena de caracteres personalizada de tu elección. Dado que los hashes son unidireccionales, debes mantener una asignación entre los hashes generados y tus identificadores de usuario para poder asignar el identificador de cuenta hasheado que se devuelve a las cuentas originales.
Además de proporcionar un identificador de cuenta estable para todas las solicitudes relacionadas con la cuenta, puedes proporcionar identificadores de cuenta adicionales, posiblemente no estables, para algunas solicitudes específicas.
Los identificadores de cuentas específicos del contexto que se proporcionan además del accountId
ayudan a la protección de cuentas de reCAPTCHA a comprender mejor la actividad del usuario y detectar los intentos de usurpación de cuentas para mantener seguras las cuentas de los usuarios. Cuando proporcionas identificadores adicionales, reCAPTCHA usa esta información para mejorar la protección de tus cuentas de usuario en función de los modelos entre sitios, ya que marca los identificadores de cuentas abusivas y usa el conocimiento de los patrones de abuso entre sitios relacionados con estos identificadores. Por ejemplo, puedes proporcionar lo siguiente:
El nombre de usuario, la dirección de correo electrónico o el número de teléfono que se usó como identificador de acceso para las solicitudes de acceso
La dirección de correo electrónico o el número de teléfono que se verificó para una solicitud de autenticación de varios factores
Una dirección de correo electrónico o un número de teléfono (principal o secundario) que proporcionó el usuario durante una solicitud de actualización de la cuenta
Las direcciones de correo electrónico y los números de teléfono que proporciona el usuario durante una solicitud de registro
Agrega el identificador de cuenta estable elegido al parámetro accountId
en el método
projects.assessments.create
para todas las solicitudes relacionadas con la cuenta. De manera opcional, proporciona identificadores de cuenta adicionales para las solicitudes pertinentes con el campo userIds
en la evaluación.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID de tu proyecto de Google Cloud
- TOKEN: Token que se muestra a partir de la llamada
execute()
- KEY_ID: Clave de reCAPTCHA asociada con la app
- ACCOUNT_ID: Es el identificador asociado de forma única con la cuenta de usuario de tu app.
- EMAIL_ADDRESS: Opcional Dirección de correo electrónico asociada a esta solicitud, si hay alguna
- PHONE_NUMBER: Opcional Un número de teléfono asociado a esta solicitud, si hay alguno
- USERNAME: Opcional Nombre de usuario asociado a esta solicitud, si corresponde
Método HTTP y URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Cuerpo JSON de la solicitud:
{ "event": { "token": "TOKEN", "siteKey": "KEY_ID", "userInfo": { "accountId": "ACCOUNT_ID", "userIds": [ { "email": "EMAIL_ADDRESS" }, { "phoneNumber": "PHONE_NUMBER" }, { "username": "USERNAME" } ] } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "tokenProperties": { "valid": true, "androidPackageName": "com.example.app" or "iosBundleId": "com.example.app", "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"] } }
Muestra de código
Java
Para autenticarte en reCAPTCHA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Interpreta el veredicto de riesgo de los eventos críticos del usuario
Cuando creas una evaluación con la protección de cuentas habilitada, esta devuelve accountDefenderAssessment
como parte de la respuesta de evaluación.
El valor de accountDefenderAssessment
te ayuda a evaluar si la actividad del usuario es legítima o fraudulenta. También devuelve un ID de evaluación que debes usar cuando anotes eventos del usuario.
El siguiente ejemplo es una respuesta JSON de muestra:
{ "tokenProperties": { "valid": true, "androidPackageName": "com.example.app" or "iosBundleId": "com.example.app", "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"] } }
El campo accountDefenderAssessment
puede tener cualquiera de los siguientes valores:
Valor | Descripción |
---|---|
SUSPICIOUS_LOGIN_ACTIVITY |
Indica que la solicitud representa un alto riesgo de credential stuffing o usurpación de cuenta. |
SUSPICIOUS_ACCOUNT_CREATION |
Indica que la solicitud representa un alto riesgo de creación de cuentas abusivas. |
PROFILE_MATCH |
Indica que los atributos del usuario coinciden con los atributos que se vieron anteriormente para este usuario en particular. Este valor es un indicador de que el usuario se encuentra en un dispositivo de confianza que se usó anteriormente para acceder a tu aplicación para dispositivos móviles.
|
Anota eventos para ajustar tu modelo específico del sitio
Para proporcionar más información a la protección de cuentas de reCAPTCHA y mejorar tu modelo de detección específico del sitio, debes anotar los eventos que evaluaste creando evaluaciones.
Para anotar una evaluación, envía una solicitud al método projects.assessments.annotate
con el ID de la evaluación. En el cuerpo de esa solicitud, se incluyen etiquetas que proporcionan información adicional sobre un evento descrito en la evaluación.
Para anotar una evaluación, haz lo siguiente:
-
Determina la información y las etiquetas que se agregarán en el cuerpo JSON de la solicitud según tu caso de uso.
En la siguiente tabla, se enumeran las etiquetas y los valores que puedes usar para anotar eventos:
Etiqueta Descripción Ejemplo de solicitud reasons
Obligatorio. Una etiqueta para respaldar tus evaluaciones. Proporciona detalles del evento en tiempo real en la etiqueta
reasons
unos segundos o minutos después del evento, ya que influyen en la detección en tiempo real.Para obtener la lista de valores posibles, consulta valores de motivos.
Ejemplo: Para detectar la apropiación de cuentas, anota si la contraseña ingresada fue correcta con los valores
CORRECT_PASSWORD
oINCORRECT_PASSWORD
. Si implementaste tu propia MFA, puedes agregar los siguientes valores:INITIATED_TWO_FACTOR
yPASSED_TWO_FACTOR
oFAILED_TWO_FACTOR
.{ "reasons": ["INCORRECT_PASSWORD"] }
annotation
Opcional. Es una etiqueta que indica la legitimidad de las evaluaciones. Proporciona datos sobre los eventos de registro y acceso para validar o corregir tus evaluaciones de riesgo en la etiqueta
annotation
.Los valores posibles son
LEGITIMATE
oFRAUDULENT
.Puedes enviar esta información en cualquier momento o como parte de un trabajo por lotes. Sin embargo, te recomendamos que envíes esta información unos segundos o minutos después del evento, ya que influye en la detección en tiempo real.
{ "annotation": "LEGITIMATE" }
accountId
Opcional. Es una etiqueta para asociar un ID de cuenta con un evento.
Si creaste una evaluación sin un ID de cuenta, usa esta etiqueta para proporcionar el ID de cuenta de un evento siempre que esté disponible.
{ "accountId": "ACCOUNT_ID" }
Crea una solicitud de anotación con las etiquetas adecuadas.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- ASSESSMENT_ID: Es el valor del campo
name
que se devolvió de la llamadaprojects.assessments.create
. - ANNOTATION: Opcional Es una etiqueta que indica si la evaluación es legítima o fraudulenta.
- REASONS: Opcional Son los motivos que respaldan tu anotación. Para obtener la lista de valores posibles, consulta valores de motivos.
- ACCOUNT_ID: Opcional. Es el identificador asociado de forma única a la cuenta del usuario en tu app.
Para obtener más información, consulta etiquetas para anotaciones.
Método HTTP y URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Cuerpo JSON de la solicitud:
{ "annotation": ANNOTATION, "reasons": REASONS, "accountId": ACCOUNT_ID }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente 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 ContentDeberías recibir un código de estado exitoso (2xx) y una respuesta vacía.
- ASSESSMENT_ID: Es el valor del campo
Muestra de código
Java
Para autenticarte en reCAPTCHA, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Habilita la protección de cuentas de reCAPTCHA
Después de configurar tu aplicación para dispositivos móviles para la protección de cuentas de reCAPTCHA, puedes habilitar esta función.
En la consola de Google Cloud , ve a la página reCAPTCHA.
Verifica que el nombre de tu proyecto aparezca en el selector de recursos en la parte superior de la página.
Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y, luego, selecciona tu proyecto.
- Haz clic en Configuración.
En el panel Account Defender, haz clic en Configurar.
En el cuadro de diálogo Configurar Account Defender, haz clic en Habilitar y, luego, en Guardar.
Es posible que la habilitación de la protección de cuentas de reCAPTCHA tarde algunas horas en propagarse a nuestros sistemas. Una vez que la habilitación de la función se propague a nuestros sistemas, deberías comenzar a recibir respuestas relacionadas con Account Defender como parte de las evaluaciones.
¿Qué sigue?
- Para obtener información sobre otras funciones de protección de la cuenta, consulta Funciones de protección de cuentas de usuario.