🛡️ Protección de formularios y control de acceso

Los formularios de propform son accesibles públicamente por defecto, lo cual resulta útil para consultas, comentarios de clientes y generación de clientes potenciales. Sin embargo, algunos formularios deben poder abrirse o enviarse solo bajo determinadas condiciones. A continuación se detallan los mecanismos de protección disponibles.


Contenido


Honeypot y CSRF (activos automáticamente)

Cada formulario de propform cuenta con protección contra bots integrada, sin que tengas que configurar nada:

  • Campo honeypot: campo invisible que las personas reales no ven, pero que los bots rellenan → proceso cancelado, IP registrada
  • Token CSRF: token cifrado al acceder al formulario, verificado al enviarlo → los bots sin acceso regular fallan
  • Firma del formulario + marca de tiempo: evita ataques de repetición

Más información en Protección contra spam y defensa contra bots.


## Lista blanca de IP

Si un formulario solo debe ser accesible desde determinados rangos de IP (por ejemplo, un formulario interno para empleados solo desde la oficina):

Configuración:

  1. Ajustes del formulario → Ajustes adicionales → desplázate hasta el final
  2. Marca la casilla «Lista blanca de IP»
  3. Introduce las direcciones IP separadas por comas (p. ej., 192.168.1.10, 91.42.42.42)

Límites: máx. 2000 caracteres → es posible introducir varios cientos de direcciones IP

Qué ocurre: Quienes no figuren en la lista blanca verán el mensaje de error «Tu IP no está autorizada para acceder a este formulario».

> 💡 Consejo: Averigua tu propia IP a través de whatismyip.com o servicios similares. En el caso de IP domésticas dinámicas, es mejor planificar un rango de IP o utilizar una VPN.


## Contraseña del formulario

Protege el acceso al formulario. Sin la contraseña correcta, el formulario no se mostrará.

Configuración:

  1. Ajustes del formulario → Ajustes adicionales
  2. (Actualmente implementada como opción oculta; la activaremos bajo petición. Escríbenos brevemente a hello@propform.io.)
  3. Definir contraseña

Acceso:

https://formular.deine-domain.de/dein-formular?password=geheim123

Casos de uso:

  • Formulario interno para empleados sin acceso público
  • Enlace de prueba privado para clientes individuales

> ⚠️ Aviso de seguridad: La contraseña aparece en texto plano en la URL y, actualmente, también se almacena sin cifrar en la base de datos. Es adecuada para una protección básica, no para datos altamente confidenciales. Una auténtica autenticación de usuario y contraseña con datos de acceso configurables por cuenta está prevista en la hoja de ruta.

---

Clave de formulario mediante parámetros de URL

A diferencia de la contraseña del formulario, la clave de formulario comprueba un valor dinámico, por ejemplo, un campo del registro de onOffice que solo se puede establecer una vez (anti-envío duplicado).

Configuración:

  1. Ajustes del formulario → Ajustes adicionales«Clave del formulario obligatoria»
  2. Definir la clave — puede ser una macro, p. ej., _reservierung_aufgerufen
  3. Mensaje de error opcional («Ya ha enviado el formulario»)

Llamada:

https://formular.deine-domain.de/reservierung?key=ja

→ El valor detrás de key= debe coincidir exactamente con el valor de la macro resuelta.

Caso de uso: flujo de trabajo de reservas:

  • Al principio, el campo _reservierung_aufgerufen está vacío en onOffice → No se puede llamar al formulario
  • Mediante la configuración, estableces el campo en ja (por ejemplo, cuando el cliente llega al paso de reserva)
  • Tras el envío, puedes volver a establecer el campo en nein → El formulario queda bloqueado para su repetición

---

Fecha de caducidad

Un formulario debe estar disponible solo hasta una fecha determinada. Añade la fecha de caducidad como parámetro de URL a tu enlace de formulario y activa en la configuración del formulario → «Fecha de caducidad obligatoria».

https://formular.deine-domain.de/bewerbung?exp=2030-12-31 23:59:59

Importante: se necesita fecha + hora

El parámetro ?exp= necesita fecha Y hora; si solo se introduce la fecha, se producirá un error con el mensaje «Fecha de caducidad no válida».

Correcto:

?exp=2030-12-31 23:59:59

Incorrecto (fallo):

?exp=2030-12-31

Fecha de caducidad dinámica mediante la macro DateAdd

En las plantillas de correo de onOffice puedes calcular la fecha de caducidad de forma dinámica — p. ej., «El enlace es válido durante 14 días a partir de hoy»:

?exp=_calculate(DateAdd(now;14;days)) 23:59:59

Unidades para DateAdd: days, weeks, months, years. La hora se añade al final como una cadena fija, ya que DateAdd solo proporciona la fecha.

Casos de uso:

  • Formularios de solicitud con fecha límite
  • Ofertas por tiempo limitado
  • Códigos promocionales con validez limitada

---

Valores permitidos como truco anti-envío

Una solución ingeniosa si quieres vincular el envío del formulario a una condición adicional, sin necesidad de autenticación por separado:

Patrón:

  1. Añade un campo de texto al formulario (puede ser invisible o visible para el usuario como «Introducción de código»)
  2. Configuración del campoConfiguración adicional → Establece «Valores permitidos» en el valor deseado, p. ej., passwort1234
  3. Al enviar el formulario, propform comprueba los valores permitidos: si el valor no es correcto → no se envía el formulario

Casos de uso:

  • Código antispam para formularios públicos («Introduce el código de nuestro correo electrónico»)
  • Código de acceso único que envías por un canal independiente
  • Protección adicional al honeypot/CSRF

> 💡 Diferencia con respecto al honeypot: el honeypot bloquea los campos rellenados automáticamente. Aquí, el valor debe introducirse manualmente.

---

Filtro por formulario (restricción de registros)

Si un formulario puede cargar o editar registros (por ejemplo, el formulario de edición de direcciones o de edición de inmuebles), puedes restringir el acceso a un filtro de onOffice, lo cual es fundamental en el caso de los formularios públicos.

Configuración:

  1. Crea un filtro en onOffice (p. ej., «solo inmuebles activos», «solo estado > 5», «solo región de marketing X»)
  2. En el formulario de propform → Campos de dirección/inmuebles → Configuración de filtro → selecciona el filtro
  3. Efecto: el formulario puede cargar/editar exclusivamente registros de este filtro; todo lo demás se rechaza

Más información al respecto en la FAQ independiente: Filtro por formulario.

> ⚠️ Aspecto de seguridad en los formularios públicos: Sin filtro, un usuario puede acceder a cualquier registro que vea el usuario de la API mediante la manipulación del UUID en la URL. El filtro limita esto al ámbito deseado.


Requisito de UUID para la llamada al formulario

Impide que se pueda llamar a un formulario sin un UUID de registro válido en la URL. Importante en formularios de edición y descarga, que siempre necesitan un registro concreto.

Configuración:

  1. Ajustes del formulario → Ajustes adicionales«Se requiere propiedad y/o dirección para acceder al formulario»
  2. Seleccionar cuál de los dos UUID se requiere (ambos son posibles)

Qué ocurre sin UUID:

  • El formulario no se muestra; en su lugar, aparece un mensaje de error
  • Evita la manipulación de la URL: si el usuario elimina un UUID de la URL, de lo contrario se crearía un registro vacío
  • Evita la creación accidental de registros vacíos si el empleado envía el enlace sin referencia a un registro

Casos de uso:

  • Formularios de descarga (véase Campos de descarga) — sin UUID no hay registro, sin registro no hay archivos
  • Formularios de edición desde la máscara de onOffice (captación, traspaso, reserva)
  • Formularios de estado/estadísticas para propietarios

> 💡 Consejo de combinación: el requisito de UUID + filtro por formulario + comprobación de duplicados de direcciones da como resultado una pila de seguridad muy sólida para los formularios de edición públicos.

---

Comparación: ¿qué protección para qué?

Protección Protege contra Esfuerzo de configuración Aplicación
Honeypot + CSRF Bots, ataques de repetición automático siempre activo
Lista blanca de IP acceso público pequeño formulario interno para empleados
Contraseña de formulario Acceso anónimo Mínimo Enlace de prueba privado
Clave de formulario Envío duplicado, reenvíos Medio Reservas/acciones puntuales
Fecha de caducidad enlaces caducados bajo formularios con límite de tiempo
Valores permitidos envío no autorizado bajo código de spam, protección contra adiciones
Filtro por formulario manipulación de UUID, fuga de registros medio formularios de edición públicos
Requisito de UUID Llamada sin registro, archivos adjuntos vacíos bajo Formularios de descarga y edición

Relacionado