Topics

Protección ligera contra spam con personalización de formularios de Google

  • column

Personalización de Google Form que implementamos anteriormente en respuesta a solicitudes de clientes que deseaban migrar sus formularios de contacto web a Google Form.

Lo hemos compilado en una columna y, afortunadamente, parece que muchas personas lo han utilizado como referencia. ¡Gracias!

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

Entonces recibimos una solicitud: ¿hay alguna forma de protegerse contra el gran volumen de correos no deseados que estamos recibiendo?
Esta vez, como tercera entrada de nuestra columna sobre Google Form, hemos compilado información sobre protección contra spam en la personalización de Google Form.

La primera solución que se nos vino a la mente fue: ¿sería posible implementar reCAPTCHA, el servicio de seguridad gratuito que proporciona Google?

Sin embargo,

Google Form no tiene una configuración estándar o alternancia que diga «habilitar reCAPTCHA». No existe tal opción en la pantalla de edición del formulario, y la comprensión correcta es que no es una función proporcionada oficialmente por Google.

Al investigar más, descubrimos que reCAPTCHA en Google Form funciona según el criterio de Google, por lo que no sabemos si aparecerá la marca de reCAPTCHA o no.

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

De hecho, la mayoría del spam de Google Form sigue este patrón de «golpear directamente el punto final sin pasar por la página», y esto permanece igual incluso con reCAPTCHA. A menos que se realice validación de token en el lado del servidor como GAS, esta ruta de POST directo no será efectiva, y no será una solución fundamental.

¡Pero hay soluciones!

De hecho, muchos bots de spam reales utilizan un tipo genérico que "busca formularios de contacto, los rellena automáticamente y los envía" (bots que renderizan realmente la página y envían a través del DOM).

Para este tipo de bot, controlar el botón de envío con JS tiene cierto efecto. Para mayor precisión, se recomienda combinar varios mecanismos. Todos ellos se completan solo con cambios en el archivo HTML; no es necesario tocar Google Forms ni GAS.

Referencia: [reddit] How can I prevent bots from spamming my Google Form and flooding my email?

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

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

Aunque supone algo de inconveniente para el usuario, tiende a atrapar a los bots genéricos que intentan presionar el botón de envío sin reaccionar a los elementos visuales de la UI.

2. Detección automática mediante campos honeypot (campos de entrada invisibles)

Preparar un campo de entrada invisible colocándolo fuera de la pantalla con CSS; los humanos nunca tocarán este campo, pero los bots que rellenan mecánicamente todos los campos del formulario y envían también introducirán un valor aquí. El mecanismo cancela el envío si este campo contiene un valor.

Es efectivo contra los bots que "rellenan mecánicamente todos los campos de entrada del formulario (visible o no) y luego envían". Este tipo de bot es muy común, por lo que la medida promete ser efectiva.

Dado que cada tipo de bot puede detectarse de manera diferente, combinar ambos métodos reduce significativamente los fallos.

Sigue siendo cierto que no hay efecto contra el "spam de tipo POST directo que no pasa por la página".

Si el sitio web recibe un ataque de spam directo en Google Form sin pasar por la página, en última instancia tendrá que recrear Google Form en sí.

Teniendo esto en cuenta, implementarlo como una "medida de mitigación contra algunos bots comunes" debería ser 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