Desde Octubre de 2018 Google ofrece una nueva versión de reCAPTCHA para implementar validaciones en sitios. La característica principal de esta versión es que funciona de modo transparente al usuario, quien ya no tiene que completar campos interpretando imágenes o resolviendo ecuaciones o cuentas. En reCAPTCHA v3, Google implementa un algoritmo propietario que, posiblemente, revisa cómo alguien se mueve por la web para determinar con un puntaje la probabilidad de que sea un bot/spammer o un usuario legítimo.
De este modo, la validación hecha en prontus_form.cgi
u otro script lado servidor recibirá una respuesta con un parámetro score
. Este parámetro contendrá un valor entre 0 y 1, y el implementador/administrador de cada sitio deberá decidir cuál es el mínimo puntaje necesario para considerar como válida una request.
Por defecto, Google aclara que se puede validar contra un puntaje de 0.5. Requests con score menores son consideradas como spammers/bots, requests con puntajes mayores son consideradas usuarios válidos.
Además del score
, otro parámetro importante de reCAPTCHA v3 es el action
. Este parámetro te permite discriminar distintos usos de reCAPTCHA en tu sitio, por ejemplo para discriminar entre distintos formularios, o para discriminar entre el recaptcha usado en la homepage de tu sitio y aquel usado en un formulario. Según Google, el parámetro action
te permite:
- Una discriminación detallada de datos para las diez principales actions de tu sitio en la consola de administración de recaptcha.
- Análisis de riesgo adaptativo basado en el contexto de la acción, porque el comportamiento abusivo es variable.
Las actions son parámetros alfanuméricos, y no deben ser individuales para cada usuario.
Para la implementación necesitarás cumplir los siguientes pasos:
En la página Administración - Configuración - Configuración Global deberás completar los siguientes parámetros:
- RECAPTCHA_API_URL: el valor de esta URL actualmente es https://www.google.com/recaptcha/api/siteverify
- RECAPTCHA_SECRET_CODE: ingresa aquí la clave secreta obtenida al registrar tus sitios en https://www.google.com/recaptcha/admin/create
- RECAPTCHA_V3_SCORE: este valor puede ser 0, 1 o un número decimal entre 0 y 1. Por defecto Prontus lo configura en 0.5.
- RECAPTCHA_SITEKEY: la clave de configuración entregada por google al configurar recaptcha. Queda disponible con la marca reservada
%%_recaptcha_sitekey%%
.
En la plantilla de formulario, debes incluir código como el siguiente:
<head>
...
<!-- esta es la key pública obtenida al registrar tu sitio en recaptcha. -->
<script src="https://www.google.com/recaptcha/api.js?render=_reCaptcha_SITE_KEY_"></script>
<script>
function enviaFormConsulta() { // función gatillada onsubmit
if (confirm('¿Estás seguro que deseas enviar los datos?')) {
grecaptcha.ready(function() {
grecaptcha.execute('%%_recaptcha_sitekey%%', {action: 'prontus_form'}).then(function(token) {
// input creado en el form para pasar el token recibido
$('#g-recaptcha-response').val(token);
$('#g-recaptcha-action').val('prontus_form');
return true;
});
});
}
return false;
}
</script>
...
</head>
<body>
<form id="miForm" onsubmit="return enviaFormConsulta();" action="/%%_prontus_id%%/cgi-bin/prontus_form.cgi" method="POST">
<!-- otros campos del Form Prontus -->
<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response" value="">
<input type="hidden" name="g-recaptcha-action" id="g-recaptcha-action" value="">
<!-- otros campos del Form Prontus -->
</form>
<body>
De desearlo, puedes hacer configurable el parámetro action en tus formularios, creando un campo de texto en la plantilla de FID y luego usándolo en la plantilla de formulario. Por ejemplo, en el FID podrías crear un input
<input type="text" name="recaptcha_action" value="%%recaptcha_action%%">
y luego en la plantilla de formulario usarías
grecaptcha.execute('_reCaptcha_SITE_KEY_', {action: '%%recaptcha_action%%'}).then(function(token) { ... });
La implementación es básicamente la misma: debes configurar el código onsubmit
u onload
u otro (según prefieras, pero recordando que cada token devuelto por recaptcha tiene una validez de 2 minutos), y enviar el formulario. El parámetro score
es global para todo Prontus, por lo que se aplicará del mismo modo que al Prontus Form, y puedes implementar el parámetro action
pasándolo en duro en la llamada a grecaptcha.execute()
.
Conceptos Básicos
¿Qué es Prontus?
Estructura de directorios
Glosario
Navegadores soportados
Tutoriales
Instalación de Prontus CMS
Implementar un nuevo sitio en Prontus
Cómo crear un FID
Cómo crear una plantilla de artículo
Cómo crear una plantilla de portada
Cómo crear plantillas de formulario
Cómo implementar un formulario
Cómo implementar un buscador
Cómo implementar un buscador Elasticsearch
Cómo crear una plantilla de taxonomía
Cómo crear plantillas de tags
Cómo crear una plantilla de listado
Cómo crear una plantilla de tags jerárquicos
Implementar carga de videos en Prontus
Integración de Redes Sociales
Instalación y Configuración
Requerimientos
Configuración del servidor
Base de datos
Asegurar la plataforma
Instalación con Wizard Prontus
Ajustes post-instalación
Archivos de configuración de Prontus
Friendly URLs
Friendly URLs para imágenes
SSI en Prontus
Logs de Eventos
Ejecutar procesos periódicamente con cron
Debugging
Plantillas
Plantillas de FID
Plantillas de artículo
Plantillas de portada
Plantillas de taxonomía
Plantillas de artículos relacionados
Plantillas de tags
Plantillas de listado
Plantillas de tags jerárquicos
Plantillas de mapa de taxonomía
Plantillas de mapa de tags
Marcas
Tipos de marcas
Diccionario de marcas
Marcas para texto
Marcas de lógica
Marcas de despliegue
Marca Menú y Panel
Parsing de marcas en formularios Prontus
Funcionalidades
Funcionalidades SEO en Prontus CMS
Multivistas
Galería de Imágenes
Buscador Multivista
Buscador
Buscador Elasticsearch
Calendarios
Imprimir artículos
Posting de contenidos
Plugins
Post-procesos
Prontus functions
Implementar copias de seguridad automáticas con Dropbox
Implementar múltiples ediciones
Regeneración masiva de artículos via línea de comandos