En este documento se muestran ejemplos de cómo implementar las funciones de reCAPTCHA para WAF en Cloud Armor.
Puedes usar una o varias funciones de reCAPTCHA para WAF en una sola aplicación.
Si quieres usar más de una función, debes crear una clave de reCAPTCHA para cada una de ellas y usarlas en tu aplicación. Por ejemplo, si quieres usar tokens de acción de reCAPTCHA y la página de desafío de reCAPTCHA, debes crear una clave de token de acción y una clave de página de desafío, y usarlas en tu aplicación.Ejemplo 1: Usar tokens de sesión de reCAPTCHA y la página de desafío de reCAPTCHA
Puedes añadir un token de sesión de reCAPTCHA en las páginas a las que pueda acceder un usuario para que la cookie se actualice periódicamente (por ejemplo, en una página de inicio de sesión). Configura una regla de política de seguridad de Cloud Armor para redirigir la solicitud a una página de prueba reCAPTCHA cuando la puntuación sea baja.
En la siguiente ilustración se muestra un flujo de trabajo que usa el token de sesión de reCAPTCHA y las funciones de la página de prueba de reCAPTCHA:
Ejemplo 2: Usar tokens de acción de reCAPTCHA y la página de desafío de reCAPTCHA
Puedes añadir un token de acción de reCAPTCHA para proteger una acción del usuario, como la finalización de la compra. Configura una regla de política de seguridad de Cloud Armor para redirigir la solicitud a una página de prueba reCAPTCHA en cualquiera de las siguientes condiciones:
- La puntuación es baja.
- El atributo
action_name
del token de acción no coincide con la acción del usuario que está protegida.
En la siguiente ilustración se muestra un flujo de trabajo que usa el token de acción de reCAPTCHA y las funciones de la página de prueba de reCAPTCHA:
En el siguiente ejemplo de secuencia de comandos se muestra cómo usar un token de acción de reCAPTCHA y redirigir a una página de prueba de reCAPTCHA con el token de acción adjunto como encabezado:
<script src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_SITE_KEY"></script>
<script>
function onSuccess(token) {
const xhr = new XMLHttpRequest();
xhr.open('GET','http://www.example.com/checkout', false);
xhr.setRequestHeader("X-Recaptcha-Token", token);
xhr.onreadystatechange = function() {
// Make sure that the request is finished and response is ready with 200
if (this.readyState == 4 && this.status == 200) {
// Display the response, it could be a reCAPTCHA challenge
// page based on your Cloud Armor security rule settings.
document.open();
document.write(xhr.responseText);
document.close();
}
};
xhr.send(null);
}
grecaptcha.enterprise.ready(function () {
document.getElementById("execute-button").onclick = () => {
grecaptcha.enterprise.execute('ACTION_TOKEN_SITE_KEY', {
}).then(onSuccess, onError);
};
});
</script>
Siguientes pasos
- Consulta cómo implementar las funciones de reCAPTCHA WAF con Cloud Armor.
- Más información sobre las funciones de integración con proveedores de servicios de WAF