Topics

Personalización de Google Form con protección contra spam ligera

  • column

Implementamos una personalización de Google Forms a partir de la solicitud de cambiar el formulario de contacto del sitio web a Google Forms.

Los publico en una columna, ¡y afortunadamente parece que muchas personas los están utilizando como referencia! Gracias.

Trampas comunes al crear formularios con Google Form
Implementación de la pantalla de confirmación personalizada de Google Form

En ese contexto, recibimos una solicitud preguntando si hay alguna medida contra el gran volumen de correo no deseado.
Esta vez, como tercera entrega de nuestra columna sobre Google Forms, hemos compilado información sobre medidas anti-spam para la personalización de Google Forms.

La primera solución que se me ocurrió fue: ¿no sería posible implementar reCAPTCHA, un servicio de seguridad gratuito proporcionado por Google?

Sin embargo,

Google Forms no tiene una configuración estándar o alternancia como "habilitar reCAPTCHA". En la pantalla de edición del formulario tampoco existe tal opción, y es importante reconocer que no es una función oficialmente proporcionada por Google.

Así es. Tras investigar más, descubrimos que reCAPTCHA en Google Forms funciona según la evaluación de Google, y no podemos saber si aparecerá o no la marca de reCAPTCHA.

En primer lugar, la personalización de Google Forms requiere ingresar ID de campo como entry.386122698 en HTML, por lo que todo es visible en texto plano. Si se conoce esta URL e ID de entrada, es técnicamente posible enviar un POST directo a formResponse desde un script simple como curl o requests de Python sin necesidad de abrir la página en el navegador.

De hecho, la mayoría del spam en Google Forms sigue este patrón de "acceder directamente al punto de acceso sin pasar por la página", y aunque se implemente reCAPTCHA, sigue siendo igual. A menos que se realice la validación de tokens en el lado del servidor, como a través de Google Apps Script, esta ruta de POST directo no es efectiva y no es una solución definitiva.

¡Pero hay soluciones!

En la práctica, muchos spambots reales utilizan el tipo genérico "buscar formulario de contacto, rellenarlo automáticamente y enviarlo" (bots que procesan el DOM después de renderizar la página).

Este tipo de mecanismo controlado por JS en el botón de envío tiene cierto efecto. Para mejorar la precisión, se recomienda combinar varios mecanismos. Todos ellos requieren únicamente cambios en el archivo HTML y no requieren tocar Google Forms ni GAS.

Referencia: [reddit] ¿Cómo puedo evitar que los bots envíen spam a mi formulario de Google y llenen mi correo electrónico?

1. Generar una suma aleatoria de números cada vez con JS y mostrarla.

Una fórmula simple que suma números aleatorios generados con Math.floor(Math.random()*9)+1. Con cada carga de página, JS genera y muestra números aleatorios en pantalla, por ejemplo "3 + 5 = ?", y el botón de envío permanece deshabilitado hasta que el usuario ingrese la respuesta correcta.

Aunque representa cierta molestia para el usuario, tiende a atrapar bots genéricos que no reaccionan a la interfaz visual y simplemente presionan el botón de envío.

2. Detección automática mediante campo trampa (campo de entrada invisible)

Preparar un campo de entrada invisible para los ojos humanos, posicionándolo fuera de la pantalla con CSS. Los humanos nunca interactuarán con este campo, pero los bots que rellenan mecánicamente todos los campos del formulario antes de enviarlo también ingresarán un valor aquí. El mecanismo cancela el envío si este campo contiene un valor al momento de enviar.

Es efectivo contra el tipo de bots que "rellenan mecánicamente todos los campos de entrada del formulario (independientemente de si son visibles o no) y luego envían". Como estos bots son muy comunes, esta medida promete ser útil como contramedida.

Dado que cada tipo de bot detecta diferentes tipos de amenazas, combinar ambos métodos reduce significativamente las omisiones.

Sigue siendo cierto que este enfoque no es efectivo contra "ataques de spam de tipo POST directo que evitan la página web".

Cuando un sitio web es atacado por spam directamente en Google Form sin pasar por la página, finalmente es necesario recrear Google Form en sí.

Considerando esto, implementarlo como una "medida de mitigación contra algunos bots comunes" es bastante efectivo, ¿verdad!

Autor de este artículo

Me dedico al desarrollo frontend con enfoque en el marcado, utilizando JavaScript, React y Next.js. ¡Me alegra mucho cuando los sitios en los que he trabajado se publican exitosamente! Mi hobby es tocar la guitarra. Me encantan los gatos y los boniatos🐱🍠

Hiraitch

Ingeniero de frontend / Incorporado en 2022

Ver artículos de este staff

Destacamos por nuestro equipo confiable y nuestra rápida capacidad de respuesta

En Liberogic, nuestro personal experimentado impulsa activamente los proyectos, lo que nos ha ganado una alta evaluación de nuestros clientes.
Nos aseguramos de asignar adecuadamente gerentes de proyecto y directores, manteniendo una ejecución fluida de todo el proyecto. Evitamos aumentos de costos innecesarios mediante asignación completa, distribuyendo recursos estratégicamente según las necesidades, y somos reconocidos por la rapidez en la comprensión de tareas, elaboración de presupuestos y entrega de cotizaciones.

* Tome en cuenta que nuestra empresa no participa activamente en labores de residencia tipo SES.

Puede utilizar prácticamente todas las herramientas principales de gestión de proyectos y chat como Slack, Teams, Redmine, Backlog, Asana, Jira, Notion, Google Workspace, Zoom, Webex, entre otras.

Consulte con nosotros sobre sus dudas relacionadas con la web.

Casos de Estudio