ALTCHA
WP-ImmoMakler es compatible con la protección antispam respetuosa con la privacidad ALTCHA. Se carga completamente desde su propio servidor de WordPress, sin conexión a terceros y sin cookies.
Funcionamiento
Sección titulada «Funcionamiento»ALTCHA plantea al navegador de su visitante una tarea de cálculo automatizada (una denominada prueba de trabajo). El navegador la resuelve en segundo plano en cuanto se ha cargado la página, mientras su visitante rellena el formulario. Solo se muestra un pequeño campo que confirma que la comprobación se ha realizado correctamente:
Por tanto, sus visitantes no tienen que resolver ningún desafío ni hacer clic en nada. Para un bot de spam que envía formularios de forma masiva, en cambio, el esfuerzo de cálculo se acumula hasta convertirse en un obstáculo real.
A continuación, el servidor comprueba si la solución enviada corresponde a una tarea emitida por él mismo. Cada tarea es válida una sola vez y solo durante un tiempo limitado.
Configuración
Sección titulada «Configuración»ALTCHA está activado de forma predeterminada: no tiene que configurar nada. Encontrará la selección en el backend de su sitio web (wp-admin) en WP-ImmoMakler → Ajustes → Protección antispam → Nivel 2: proveedores de CAPTCHA, por si desea elegir en su lugar otro proveedor o «Sin CAPTCHA (solo nivel 1)». No se requieren más ajustes ni ninguna cuenta externa, a diferencia de los CAPTCHAs alojados externamente, que requieren todos un sitekey y un secret key.
El ajuste se aplica a todos los formularios del plugin:
- el formulario de contacto en la vista de detalle del inmueble
- el formulario de alertas de búsqueda
- el formulario de desistimiento
- el formulario de perfil de búsqueda de Propstack y el registro en el newsletter de Propstack
Protección de datos
Sección titulada «Protección de datos»- La tarea de cálculo la genera y la comprueba su propio servidor. No existe conexión con servidores de terceros.
- No se establecen cookies.
- No se recopilan datos de comportamiento de sus visitantes (movimientos del ratón, pulsaciones de teclas).
- Lo único que se transmite es la solución de la tarea de cálculo: un valor numérico aleatorio junto con una suma de comprobación.
El aviso «Protegido por ALTCHA» dentro del campo es un simple enlace de texto a altcha.org. No carga ningún contenido desde ese sitio.
Detalles técnicos
Sección titulada «Detalles técnicos»Endpoint de la API REST
Sección titulada «Endpoint de la API REST»El navegador obtiene la tarea de cálculo a través de un endpoint de la API REST de WordPress:
GET /wp-json/immomakler/v1/altcha/challengeLa respuesta no se puede almacenar en caché de forma intencionada (Cache-Control: no-store), ya que cada tarea solo es válida una vez.
Procedimiento de cálculo y valores predeterminados
Sección titulada «Procedimiento de cálculo y valores predeterminados»WP-ImmoMakler elige el procedimiento de cálculo según las posibilidades de su servidor:
- Argon2id, si la extensión de PHP
sodiumestá cargada, lo cual ocurre en casi todos los proveedores de hosting. Argon2id exige mucha memoria: cada paso de cálculo ocupa 64 MB de memoria. Para el navegador de su visitante esto es irrelevante, pero impide que un bot de spam recurra a tarjetas gráficas, que de otro modo resolverían miles de tareas simultáneamente. - PBKDF2/SHA-256 en caso contrario. No necesita ninguna extensión ni una cantidad de memoria destacable, pero se puede calcular considerablemente más rápido en tarjetas gráficas que en un navegador.
Ambos valores predeterminados corresponden a la recomendación de ALTCHA para el procedimiento respectivo:
| Parámetro | Argon2id | PBKDF2/SHA-256 | Descripción |
|---|---|---|---|
algorithm | ARGON2ID | PBKDF2/SHA-256 | Procedimiento de cálculo de la tarea |
Iteraciones (cost) | 1 | 5.000 | Esfuerzo por paso de cálculo |
Memoria (memory_cost) | 65.536 KiB (64 MB) | – | Memoria por paso de cálculo |
Pasos de cálculo (counter) | 100–200 | 5.000–10.000 | Número de pasos hasta la solución |
| Validez | 30 minutos | 30 minutos | Después la tarea caduca |
| Uso múltiple | no posible | no posible | Cada tarea resuelta sirve para exactamente un envío |
En un ordenador de escritorio, la tarea se resuelve con ambos procedimientos en aproximadamente dos a tres segundos; en un smartphone de gama media, en unos diez segundos. Como el cálculo comienza al cargar la página, en la práctica finaliza antes de que el formulario esté completamente rellenado. Un bot tiene que resolver la misma tarea de nuevo para cada envío y paga por tanto el mismo tiempo de cálculo por envío.
El núcleo de cálculo de Argon2id se carga como un archivo independiente desde el directorio del plugin (vendors/altcha/workers/argon2id.js). Si la memoria de su servidor es escasa y Argon2id no se puede calcular allí, WP-ImmoMakler emite automáticamente la tarea afectada con PBKDF2 y lo anota en el registro.
Ajustar la dificultad
Sección titulada «Ajustar la dificultad»Si sigue recibiendo spam con ALTCHA activado, puede aumentar el esfuerzo de cálculo mediante un filtro. El filtro recibe los valores predeterminados del procedimiento que utiliza su servidor; el siguiente ejemplo duplica el esfuerzo para ambos. Tenga en cuenta que con ello también aumenta el tiempo de espera en dispositivos poco potentes.
add_filter( 'immomakler_altcha_challenge_options', function ( $options ) { $options['counter_min'] *= 2; $options['counter_max'] *= 2; return $options;} );Aumente los pasos de cálculo (counter) y no las iteraciones (cost) ni la memoria (memory_cost): el esfuerzo para el navegador es en cualquier caso el producto de los valores, pero las iteraciones y la memoria determinan además cuánto tarda su servidor en generar y comprobar cada tarea.
Mediante el mismo filtro puede definir también el procedimiento. Esto es necesario cuando el núcleo de cálculo de Argon2id no se puede cargar en su instalación, por ejemplo, porque un plugin de optimización o una CDN entrega los archivos del directorio del plugin desde otro dominio:
add_filter( 'immomakler_altcha_challenge_options', function ( $options ) { $options['algorithm'] = 'PBKDF2/SHA-256'; return $options;} );Si el filtro indica un procedimiento que su servidor no admite, el filtro se ignora por completo: sus pasos de cálculo serían muchas veces demasiado débiles o demasiado lentos para el otro procedimiento.
Filtro del formulario
Sección titulada «Filtro del formulario»La protección antispam se integra en la validación del formulario de contacto mediante el siguiente filtro:
// Añadir su propia lógica de validaciónadd_filter( 'immomakler_contact_form_errors_in_send', function( $errors ) { // $errors['mi_error'] = true; return $errors;} );El mensaje de error que aparece cuando la comprobación falla se puede personalizar:
add_filter( 'immomakler_contactform_altcha_validationfailed', function ( $html ) { return '<div class="alert alert-danger" role="alert">Vuelva a intentarlo, por favor.</div>';} );