En este documento se explica cómo usar reCAPTCHA Account Defender para detectar y evitar actividades fraudulentas relacionadas con cuentas en sitios web.
reCAPTCHA te ayuda a proteger acciones críticas, como el inicio de sesión y la tramitación de compras. Sin embargo, hay muchas formas sutiles de abuso de cuentas que se pueden detectar observando el comportamiento de un usuario específico en un sitio web durante un periodo. reCAPTCHA Account Defender ayuda a identificar este tipo de abuso sutil creando un modelo específico para tu sitio web que detecte una tendencia de comportamiento sospechoso o un cambio en la actividad. Al usar el modelo específico del sitio, Account Defender de reCAPTCHA te ayuda a detectar lo siguiente:
- Actividades sospechosas
- Cuentas con comportamientos similares
- Solicitudes procedentes de dispositivos que se han marcado como de confianza para usuarios concretos
Según el análisis de Account Defender de reCAPTCHA y el modelo específico del sitio, puedes tomar las siguientes medidas:
- Restringir o inhabilitar cuentas fraudulentas.
- Evita los intentos de apropiación fraudulenta de cuentas.
- Mitigar los robos de cuentas que se hayan completado.
- Concede acceso solo a las solicitudes procedentes de cuentas de usuario legítimas.
- Reduce la fricción para los usuarios que inician sesión desde uno de sus dispositivos de confianza.
Antes de empezar
Configurar las páginas web para reCAPTCHA Account Defender
reCAPTCHA Account Defender requiere una comprensión exhaustiva de las actividades de las cuentas para poder detectar las amenazas de forma eficaz. Para empezar a enviar actividades relacionadas con cuentas a reCAPTCHA Account Defender y crear y mejorar tu modelo específico del sitio, haz lo siguiente:
- Habilite la recogida de datos de telemetría horizontales.
- Generar informes sobre acciones de usuario críticas.
- Evalúa los eventos de usuario críticos.
- Anota los eventos de usuario para optimizar tu modelo específico del sitio.
Habilitar la recogida de datos de telemetría horizontales
reCAPTCHA Account Defender requiere una vista completa de las acciones de los usuarios, como si han iniciado sesión o si se les va a redirigir para que lo hagan. Para habilitar la recogida pasiva de datos de telemetría horizontal por parte de Account Defender de reCAPTCHA, carga la secuencia de comandos JavaScript de reCAPTCHA con la clave de sitio basada en puntuación que has creado en segundo plano en todas las páginas web que forman parte del flujo de trabajo de tus usuarios.
En el siguiente ejemplo se muestra cómo cargar la secuencia de comandos JavaScript de reCAPTCHA en una página web.
<head> <script src="https://www.google.com/recaptcha/enterprise.js?render=KEY_ID"></script> .... </head>
Generar informes sobre acciones de usuario críticas
Para detectar patrones de actividad sospechosa y comprender mejor los patrones de actividad típicos de tu sitio, reCAPTCHA Account Defender necesita información sobre las acciones críticas de los usuarios. Por lo tanto, informa de las acciones críticas de los usuarios en las páginas web llamando a grecaptcha.enterprise.execute() en esas acciones críticas.
Te recomendamos que registres todas las acciones críticas de los usuarios, ya que esto ayuda a recoger señales adicionales. Por cada acción de usuario que quiera registrar, sustituya el valor del parámetro action
de grecaptcha.enterprise.execute()
por el nombre de la acción de usuario.
En la siguiente tabla se indican los nombres de las acciones que puede usar al informar de las acciones críticas de los usuarios.
Nombre de la acción | Evento iniciado por el usuario o acción del usuario |
---|---|
LOGIN |
Inicia sesión en el sitio web. |
REGISTRATION |
Registro en el sitio web. |
SECURITY_QUESTION_CHANGE |
Solicitud para cambiar la pregunta de seguridad. |
PASSWORD_RESET |
Solicita restablecer la contraseña. |
PHONE_NUMBER_UPDATE |
Solicitud para actualizar el número de teléfono. |
EMAIL_UPDATE |
Solicitud para actualizar la dirección de correo electrónico. |
ACCOUNT_UPDATE |
Solicitar la actualización de información relacionada con la cuenta, como los datos de contacto. |
TRIGGER_MFA |
Una acción que activa un desafío de MFA. |
REDEEM_CODE |
Solicitud para canjear un código. |
LIST_PAYMENT_METHODS |
Obtener la lista de métodos de pago. |
En el siguiente ejemplo se muestra cómo llamar a grecaptcha.enterprise.execute()
cuando se actualiza un número de teléfono:
<script> function onClick(e) { e.preventDefault(); grecaptcha.enterprise.ready(async () => { const token = await grecaptcha.enterprise.execute('KEY_ID', {action: 'PHONE_NUMBER_UPDATE'}); }); } </script>
Evaluar eventos de usuario críticos
Cuando llamas a grecaptcha.enterprise.execute()
en una acción de usuario, se genera un token. En el caso de los eventos de usuario críticos, como los inicios de sesión, los registros y las acciones de los usuarios que han iniciado sesión (tanto si se han realizado correctamente como si no), crea una evaluación para analizar los resultados de la llamada grecaptcha.enterprise.execute()
. La evaluación te proporciona un veredicto de riesgo que puedes usar para tomar una decisión sobre cómo gestionar las actividades potencialmente fraudulentas. Entre las acciones que puedes llevar a cabo se incluyen bloquear solicitudes sospechosas, verificar inicios de sesión arriesgados e investigar cuentas de interés.
reCAPTCHA Account Defender requiere que proporciones un identificador de cuenta estable para atribuir la actividad de los usuarios (como solicitudes de inicio de sesión, solicitudes de usuarios que han iniciado sesión y solicitudes de registro) a una cuenta específica. Esto ayuda a Account Defender de reCAPTCHA a comprender los patrones de actividad de los usuarios y a crear un modelo de actividad para cada cuenta con el fin de 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 cuenta:
Identificadores de usuario
Si cada cuenta se puede asociar de forma única a un nombre de usuario, una dirección de correo o un número de teléfono estables, puedes usarlo como accountId
. Cuando proporciones identificadores entre sitios (identificadores que se pueden reutilizar en varios sitios), reCAPTCHA usará esta información para mejorar la protección de tus cuentas de usuario en función de modelos entre sitios. Para ello, marcará los identificadores de cuentas abusivas y usará el conocimiento de los patrones de abuso entre sitios relacionados con estos identificadores.
Si tiene un ID de usuario interno asociado de forma exclusiva a cada cuenta, puede proporcionarlo como accountId
.
Cifrado con hash o encriptado
Si no tiene un ID de usuario interno asociado de forma exclusiva a cada cuenta, puede convertir cualquier identificador estable en un identificador de cuenta opaco y específico del sitio. Este identificador sigue siendo necesario para que reCAPTCHA Account Defender comprenda los patrones de actividad de los usuarios y detecte comportamientos anómalos, pero no se comparte con otros sitios.
Elige cualquier identificador de cuenta estable y hazlo opaco antes de enviarlo a reCAPTCHA mediante cifrado o cifrado con hash:
Cifrado (opción recomendada): cifra el identificador de la cuenta mediante un método de cifrado determinista que genere un texto cifrado estable. Para obtener instrucciones detalladas, consulta el artículo sobre cifrar datos de forma determinista. Si eliges el cifrado simétrico en lugar del cifrado con hash, no tienes que mantener una asignación entre tus identificadores de usuario y los identificadores de usuario opacos correspondientes. Descifra los identificadores opacos que devuelve reCAPTCHA para convertirlos en el identificador de usuario.
Cifrado con hash: recomendamos cifrar con hash el identificador de cuenta mediante el método SHA256-HMAC con una sal personalizada de tu elección. Como 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 cifrado que se devuelve a las cuentas originales.
Además de proporcionar un identificador de cuenta estable para todas las solicitudes relacionadas con la cuenta, puede proporcionar identificadores de cuenta adicionales, posiblemente no estables, para algunas solicitudes específicas.
Los identificadores de cuenta específicos del contexto que se proporcionan además del accountId
ayudan a reCAPTCHA Account Defender a comprender mejor la actividad de los usuarios y a detectar intentos de apropiación de cuentas para proteger las cuentas de usuario. Cuando proporcionas identificadores adicionales, reCAPTCHA usa esta información para mejorar la protección de tus cuentas de usuario basándose en modelos entre sitios. Para ello, 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 o el número de teléfono que se usó como identificador de inicio de sesión para las solicitudes de inicio de sesión
La dirección de correo o el número de teléfono que se verificó para una solicitud de autenticación multifactor
Una dirección de correo o un número de teléfono (principal o secundario) que haya proporcionado 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
Añade el identificador de cuenta estable elegido al parámetro accountId
del método
projects.assessments.create
en todas las solicitudes relacionadas con la cuenta. De forma opcional, puede proporcionar identificadores de cuenta adicionales para las solicitudes pertinentes mediante el campo userIds
en la evaluación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- TOKEN: token devuelto de la llamada
grecaptcha.enterprise.execute()
- KEY_ID: clave de reCAPTCHA asociada al sitio
- ACCOUNT_ID: identificador asociado de forma única a la cuenta de usuario de su sitio web.
- EMAIL_ADDRESS: opcional. Una dirección de correo asociada a esta solicitud, si procede
- 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 lo hay.
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 siguiente:
{ "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"] } }
Código de ejemplo
Java
Para autenticarte en reCAPTCHA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Interpretar el veredicto de riesgo de los eventos de usuario críticos
Cuando creas una evaluación con Account Defender habilitado, Account Defender devuelve accountDefenderAssessment
como parte de la respuesta de la 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 al anotar eventos de usuario.
A continuación se muestra un ejemplo de respuesta 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"] } }
El campo accountDefenderAssessment
puede tener cualquiera de los siguientes valores:
Valor | Descripción |
---|---|
SUSPICIOUS_LOGIN_ACTIVITY |
Indica que la solicitud representa un riesgo alto de relleno de credenciales o de robo de cuentas. |
SUSPICIOUS_ACCOUNT_CREATION |
Indica que la solicitud representa un riesgo alto de creación de cuentas abusivas. |
PROFILE_MATCH |
Indica que los atributos del usuario coinciden con los atributos que se han visto anteriormente para este usuario concreto. Este valor es un indicador de que el usuario está en un dispositivo de confianza que se ha usado antes para acceder a su sitio web.
|
RELATED_ACCOUNTS_NUMBER_HIGH |
Indica que la solicitud tiene un número elevado de cuentas relacionadas. Esto no implica necesariamente que la cuenta sea incorrecta, pero puede requerir una investigación más exhaustiva. |
Anotar eventos para optimizar el modelo específico de tu sitio
Para proporcionar más información a Account Defender de reCAPTCHA y mejorar el modelo de detección específico de tu sitio, debes anotar los eventos que hayas evaluado 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 deben añadir al cuerpo JSON de la solicitud en función de tu caso práctico.
En la siguiente tabla se enumeran las etiquetas y los valores que puede usar para anotar eventos:
Etiqueta Descripción Ejemplo de solicitud reasons
Obligatorio. Una etiqueta para respaldar tus evaluaciones. Proporcione los detalles de los eventos en tiempo real en la etiqueta
reasons
unos segundos o minutos después de que se produzcan, ya que influyen en la detección en tiempo real.Para ver la lista de posibles valores, consulta los valores de los motivos.
Ejemplo: Para detectar la apropiación de cuentas, anota si la contraseña introducida era correcta con los valores
CORRECT_PASSWORD
oINCORRECT_PASSWORD
. Si has implementado tu propia MFA, puedes añadir los siguientes valores:INITIATED_TWO_FACTOR
,PASSED_TWO_FACTOR
oFAILED_TWO_FACTOR
.{ "reasons": ["INCORRECT_PASSWORD"] }
annotation
Opcional. Una etiqueta que indica la legitimidad de las evaluaciones. Proporciona datos sobre los eventos de inicio de sesión y registro para validar o corregir tus evaluaciones de riesgos en la etiqueta
annotation
.Valores posibles:
LEGITIMATE
oFRAUDULENT
.Puede enviar esta información en cualquier momento o como parte de un trabajo por lotes. Sin embargo, le recomendamos que envíe 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. Etiqueta para asociar un ID de cuenta a un evento.
Si ha creado una evaluación sin un ID de cuenta, use 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 los datos de la solicitud, haz las siguientes sustituciones:
- ASSESSMENT_ID: valor del campo
name
devuelto por la llamadaprojects.assessments.create
. - ANNOTATION: opcional. Etiqueta que indica si la evaluación es legítima o fraudulenta.
- REASONS: opcional. Motivos que respaldan tu anotación. Para ver la lista de valores posibles, consulta los valores de motivos.
- ACCOUNT_ID: opcional. Identificador asociado de forma única a la cuenta de usuario de su sitio web.
Para obtener más información, consulta las etiquetas de las 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 que indique que la operación se ha realizado correctamente (2xx) y una respuesta vacía.
- ASSESSMENT_ID: valor del campo
Código de ejemplo
Java
Para autenticarte en reCAPTCHA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Habilitar Account Defender de reCAPTCHA
Una vez que hayas configurado tus páginas web para usar reCAPTCHA Account Defender, podrás habilitarlo.
En la Google Cloud consola, ve a la página reCAPTCHA.
Comprueba que el nombre de tu proyecto aparece en el selector de recursos de la parte superior de la página.
Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y, a continuación, selecciona tu proyecto.
- Haz clic en Configuración.
En el panel Protección de la cuenta, haga clic en Configurar.
En el cuadro de diálogo Configurar Account Defender, haga clic en Habilitar y, a continuación, en Guardar.
La habilitación de Account Defender de reCAPTCHA puede tardar unas horas en propagarse a nuestros sistemas. Una vez que la habilitación de la función se haya propagado a nuestros sistemas, deberías empezar a recibir respuestas relacionadas con Account Defender como parte de las evaluaciones.