En este documento, se muestra cómo usar el defensor de la cuenta de reCAPTCHA para detectar y evitar actividades fraudulentas relacionadas con las cuentas en sitios web.
reCAPTCHA te ayuda a proteger las acciones críticas, como el acceso y la confirmación de la compra. Sin embargo, existen muchas formas sutiles de abuso de cuentas que se pueden detectar si se observa el comportamiento de un usuario específico en un sitio web durante un período. El defensor de la cuenta de reCAPTCHA ayuda a identificar este tipo de abuso sutil mediante la creación de un modelo específico del sitio para que tu sitio web detecte una tendencia de comportamiento sospechoso o un cambio en la actividad. Si usas el modelo específico del sitio, el defensor de la cuenta 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
En función del análisis del defensor de la cuenta de reCAPTCHA y el modelo específico del sitio, puedes tomar las siguientes medidas:
- Restringir o inhabilitar cuentas fraudulentas
- Evitar intentos de apropiación de cuentas
- Mitigar las apropiaciones exitosas de las cuentas
- Otorga acceso solo a las solicitudes que provengan de cuentas de usuario legítimas.
- Reduce la fricción para los usuarios que acceden desde uno de sus dispositivos de confianza.
Antes de comenzar
Configura tus páginas web para el defensor de la cuenta de reCAPTCHA
El defensor de la cuenta de reCAPTCHA requiere una comprensión integral de las actividades de la cuenta para permitir una detección eficaz. Para comenzar a proporcionar actividades relacionadas con la cuenta al defensor de la cuenta de reCAPTCHA y crear y mejorar el modelo específico del sitio, haz lo siguiente:
- Habilita la recopilación de datos de telemetría horizontal.
- Genera informes sobre las acciones críticas del usuario.
- Evalúa los eventos críticos del usuario.
- Anota los eventos del usuario para ajustar el modelo específico para tu sitio.
Habilitar la recopilación de datos de telemetría horizontal
El defensor de la cuenta de reCAPTCHA requiere una vista completa de las acciones del usuario, por ejemplo, si este accedió a su cuenta o si se lo indica. Para habilitar la recopilación pasiva de datos de telemetría horizontal por parte del defensor de la cuenta de reCAPTCHA, carga la secuencia de comandos de JavaScript de reCAPTCHA con la clave del sitio basada en puntuaciones que creaste en segundo plano de todas las páginas web que forman parte del flujo de trabajo de los usuarios.
En el siguiente ejemplo, se muestra cómo cargar la secuencia de comandos de JavaScript de reCAPTCHA en una página web.
<head> <script src="https://www.google.com/recaptcha/enterprise.js?render=KEY_ID"></script> .... </head>
Genera informes sobre las acciones críticas del usuario
Para detectar patrones de actividad sospechosos y comprender mejor los patrones de actividad típicos de tu sitio, el defensor de la cuenta de reCAPTCHA necesita la información sobre las acciones críticas del usuario. Por lo tanto, informa las acciones críticas del usuario en las páginas web mediante una llamada a grecaptcha.enterprise.execute() en esas acciones del usuario críticas.
Recomendamos informar todas las acciones críticas del usuario, ya que eso ayuda en la recopilación de indicadores adicionales. Para cada acción del usuario que desees denunciar, reemplaza el valor del parámetro action
de grecaptcha.enterprise.execute()
con un nombre de acción que describa la acción del usuario.
En la siguiente tabla, se indican los nombres de las acciones que puedes usar al informar sobre las acciones críticas del usuario.
Nombre de la acción | Evento iniciado por el usuario o acción del usuario |
---|---|
LOGIN |
Accede al 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 |
Solicita actualizar el número de teléfono. |
EMAIL_UPDATE |
Solicita actualizar la dirección de correo electrónico. |
ACCOUNT_UPDATE |
Solicitud para actualizar la información relacionada con la cuenta, como los detalles de contacto. |
TRIGGER_MFA |
Una acción que activa un desafío de MFA. |
REDEEM_CODE |
Solicitud para canjear el código. |
LIST_PAYMENT_METHODS |
Obtén la lista de formas de pago. |
En el siguiente ejemplo, se muestra cómo llamar a grecaptcha.enterprise.execute()
en una actualización del 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>
Evalúa los eventos críticos del usuario
Cuando llamas a grecaptcha.enterprise.execute()
en una acción del usuario, se genera un token. Para los eventos críticos del usuario, como los accesos exitosos y fallidos, los registros y las acciones de los usuarios que accedieron, crea una evaluación para analizar los resultados de la llamada a grecaptcha.enterprise.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 los accesos riesgosos y también investigar cuentas de interés.
El defensor de la cuenta de reCAPTCHA requiere que proporciones un identificador de cuenta estable para atribuir la actividad del usuario (como solicitudes de acceso, acceso y solicitudes de registro) a una cuenta específica. Esto ayuda a que el defensor de la cuenta de reCAPTCHA comprenda los patrones de actividad del usuario y cree un modelo de actividad para cada cuenta a 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 del 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 manera única con un nombre de usuario, una dirección de correo electrónico o un número de teléfono estables, puedes usarla como accountId
. Cuando proporcionas estos identificadores entre sitios (identificadores que se pueden volver a usar en varios sitios), reCAPTCHA usa esta información para mejorar la protección de tus cuentas de usuario en función de modelos entre sitios. Para ello, marca los identificadores de cuenta abusivos 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 con cada cuenta, puedes proporcionarlo como el accountId
.
Con hash o encriptado
Si no tienes un ID de usuario interno asociado de forma exclusiva con cada cuenta, puedes convertir cualquier identificador estable en un identificador de cuenta opaco y específico para el sitio. Este identificador aún es necesario para que el defensor de la cuenta 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 haz que sea opaco antes de enviarlo a reCAPTCHA mediante encriptación o hash:
encriptación (recomendada): Encripta el identificador de cuenta con un método de encriptación determinista que produce un texto cifrado estable. Para obtener instrucciones detalladas, consulta encripta los datos de manera determinista. Cuando eliges la criptografía simétrica en lugar de la codificación hash, no es necesario que mantengas una asignación entre tus identificadores de usuario y los identificadores de usuario opacos correspondientes. Desencripta los identificadores opacos que devuelve reCAPTCHA para convertirlos en el identificador de usuario.
Hashing: te recomendamos generar un hash para el identificador de la cuenta mediante el método SHA256-HMAC con la sal personalizada que elijas. Debido a que los hash son unidireccionales únicamente, debes mantener una asignación entre los hashes generados y tus identificadores de usuario para poder asignar el identificador de cuenta con hash 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 cuenta específicos del contexto que se proporcionan junto con el accountId
ayudan a
el defensor de la cuenta de reCAPTCHA a comprender mejor la actividad del usuario y a detectar intentos
de apropiación de cuentas para proteger tus cuentas de usuario. Cuando proporcionas identificadores adicionales, reCAPTCHA usa esta información para mejorar la protección de tus cuentas de usuario según modelos de varios sitios. Para ello, marca identificadores de cuenta abusivos y usa el conocimiento de los patrones de abuso entre sitios relacionados con estos identificadores. Por ejemplo, puedes proporcionar la siguiente información:
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 relevantes en el campo
userIds
de la evaluación.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- TOKEN: Token que se muestra a partir de la llamada
grecaptcha.enterprise.execute()
- KEY_ID: Es la clave de reCAPTCHA asociada con el sitio.
- ACCOUNT_ID: Es el identificador asociado de forma exclusiva con la cuenta de usuario de una cuenta de usuario de tu sitio web.
- EMAIL_ADDRESS: Opcional Una dirección de correo electrónico asociada con esta solicitud, si corresponde
- PHONE_NUMBER: Opcional Un número de teléfono asociado con esta solicitud, si corresponde
- USERNAME: Opcional Un nombre de usuario asociado con 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, "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"] } }
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.
Interpretar el veredicto de riesgo de los eventos críticos del usuario
Cuando creas una evaluación con el defensor de la cuenta habilitado, este muestra 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 muestra un ID de evaluación que debes usar cuando anotas eventos de usuario.
El siguiente ejemplo es una respuesta JSON de muestra:
{ "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 alto riesgo de uso excesivo de credenciales o apropiación de cuentas. |
SUSPICIOUS_ACCOUNT_CREATION |
Indica que la solicitud representa un alto riesgo de creación de cuenta abusiva. |
PROFILE_MATCH |
Indica que los atributos del usuario coinciden con los atributos que se vieron antes para este usuario en particular. Este valor indica que el usuario se encuentra en un dispositivo de confianza que se usó antes para acceder a tu sitio web.
|
RELATED_ACCOUNTS_NUMBER_HIGH |
Indica que la solicitud tiene una gran cantidad de cuentas relacionadas. Esto no necesariamente implica que la cuenta sea incorrecta, pero podría requerir más investigación. |
Anota eventos para ajustar el modelo específico para tu sitio
Para proporcionar más información al defensor de la cuenta de reCAPTCHA y mejorar tu modelo de detección específico del sitio, debes anotar los eventos que evaluaste mediante la creación de evaluaciones.
Para anotar una evaluación, debes enviar una solicitud al método projects.assessments.annotate
con el ID de evaluación. En el cuerpo de esa solicitud, incluyes 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 indican 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 los valores de motivos.
Ejemplo: Para detectar apropiaciones de cuentas, indica con los valores
CORRECT_PASSWORD
oINCORRECT_PASSWORD
si la contraseña ingresada era correcta. Si implementaste tu propia MFA, puedes agregar los siguientes valores:INITIATED_TWO_FACTOR
yPASSED_TWO_FACTOR
oFAILED_TWO_FACTOR
.{ "reasons": ["INCORRECT_PASSWORD"] }
annotation
Opcional. Una etiqueta para indicar la legitimidad de las evaluaciones. Proporciona datos sobre los eventos de acceso y registro para validar o corregir las evaluaciones de riesgos en la etiqueta
annotation
.Valores posibles:
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 influyen en la detección en tiempo real.
{ "annotation": "LEGITIMATE" }
accountId
Opcional. Es una etiqueta para asociar un ID de cuenta a un evento.
Si creaste una evaluación sin un ID de cuenta, usa esta etiqueta para proporcionar el ID de cuenta de un evento cuando esté disponible.
{ "accountId": "ACCOUNT_ID" }
Crear 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 muestra la llamada aprojects.assessments.create
. - ANNOTATION: Opcional Una etiqueta que indica si la evaluación es legítima o fraudulenta.
- REASONS: Opcional Motivos que respaldan tu anotación. Para obtener la lista de valores posibles, consulta los valores de motivos.
- ACCOUNT_ID: Es el identificador que está asociado de forma inequívoca con la cuenta de usuario en tu sitio web (opcional).
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 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.
Habilitar el defensor de la cuenta de reCAPTCHA
Después de configurar tus páginas web para el defensor de cuentas de reCAPTCHA, puedes habilitarlo.
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, elige tu proyecto.
- Haz clic en Configuración.
En el panel Defensor de la cuenta, haz clic en Habilitar.
En el diálogo Configurar defensor de la cuenta, haz clic en Habilitar.
Es posible que la habilitación del defensor de la cuenta de reCAPTCHA tarde algunas horas en propagarse a nuestros sistemas. Una vez que la habilitación de la función se haya propagado a nuestros sistemas, deberías comenzar a recibir respuestas relacionadas con el defensor de la cuenta como parte de las evaluaciones.