Volver al blog
Conceptos básicos Publicado el 28.09.2026 7 min de lectura

Formularios de contacto de WordPress: una lista de comprobación de seguridad

Contact Form 7, WPForms, Gravity Forms, Ninja Forms o Fluent Forms: el plugin importa menos que cómo se configura y se mantiene. Esto es lo que hay que comprobar, y lo que hay que volver a comprobar después de cada actualización.

La mayoría de los sitios WordPress utilizan uno de unos pocos plugins de formularios: Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms y algunos más. Cualquiera de ellos puede funcionar de forma segura o quedar completamente abierto. La diferencia rara vez está en el propio plugin, sino en su configuración, en los complementos que lo rodean, en cómo sale el correo del servidor y en lo que ocurre con los mensajes una vez que llegan.

  • Mantenga actualizados el plugin de formularios y todos sus complementos, y borre los que ya no utilice.
  • Active el antispam propio del plugin (honeypot, integración de CAPTCHA, Akismet donde proceda) y confirme que funciona realmente.
  • Envíe las notificaciones mediante SMTP autenticado desde una dirección de su propio dominio.
  • Restrinja las cargas de archivos por tipo y tamaño, y evite que los archivos cargados puedan listarse o explorarse públicamente.
  • Mantenga la dirección de correo electrónico del destinatario fuera de la página y de su código fuente.
  • Almacene solo las entradas que necesite y solo durante el tiempo que las necesite.
  • Realice una breve comprobación después de cada actualización de WordPress, del tema o de cualquier plugin.

Actualizaciones: el plugin de formularios y todo lo que lo rodea

Los plugins de formularios son objetivos populares porque aceptan entradas de cualquier persona en internet. Las correcciones de seguridad llegan como actualizaciones normales, así que actualice sin demora, y no solo el plugin principal. Los complementos para pagos, cargas de archivos, conexiones con el CRM, lógica condicional o proveedores de CAPTCHA adicionales son código aparte con sus propias vulnerabilidades. Lo mismo ocurre con los plugins que instaló una vez para una prueba y olvidó. Desactivarlos no basta: los plugins desactivados siguen en el servidor y, en algunos casos, se puede acceder directamente a sus archivos. Si no lo utiliza, bórrelo.

Antispam: actívelo y después demuestre que funciona

La mayoría de los plugins de formularios tienen sus propias opciones antispam o se integran con servicios externos: un campo honeypot que los bots rellenan y las personas nunca ven, CAPTCHAs como reCAPTCHA, hCaptcha o Cloudflare Turnstile, y Akismet, que contrasta el contenido de los mensajes con una base de datos de spam. Las opciones varían según el plugin y la versión, así que compruebe los ajustes en lugar de dar nada por supuesto. Los CAPTCHAs externos cargan scripts de un tercero, y Akismet envía el contenido enviado a un servicio externo: ambos deben figurar en su política de privacidad y, según su configuración, en su gestión del consentimiento.

El problema más habitual es una protección que está activada pero no funciona. Un CAPTCHA que funciona con claves de prueba públicas lo deja pasar todo. Un widget cuyo script está bloqueado por un plugin de caché o de optimización, o por un error de JavaScript, no detiene nada. Un campo honeypot sin los estilos que lo ocultan lo leen los lectores de pantalla y lo rellenan los visitantes reales. Así que, después de cualquier cambio, abra el formulario en una ventana privada, revise la consola del navegador y el código fuente de la página y envíe un mensaje de prueba. Si desea una protección que no dependa de Google, el plugin gratuito de formexposed para WordPress añade un honeypot, una comprobación de tiempo y una prueba de trabajo, y vuelve a comprobar el sitio tras las actualizaciones de plugins: una opción entre varias.

Correo: cómo se envía y adónde va

Por defecto, WordPress entrega el correo a la función mail de PHP del servidor, y en muchos alojamientos esos mensajes están mal autenticados y acaban en spam, o desaparecen sin dejar rastro. En su lugar, envíe a través de un plugin SMTP o del servicio de correo de su alojamiento, utilizando un buzón real con nombre de usuario y contraseña y una dirección de remitente de su propio dominio, como una dirección forms@ específica. Los registros SPF, DKIM y DMARC del dominio deben cubrir a este remitente. No ponga la dirección del visitante en el campo From: no es su dominio, por lo que el mensaje no puede superar la alineación DMARC y, según la política del dominio del visitante, acaba en spam o se rechaza. Póngala en Reply-To y podrá seguir respondiendo con un clic.

La dirección del destinatario debe estar en los ajustes del plugin, no en la página. Revise el código fuente de su página de contacto: un enlace mailto junto al formulario, o un campo oculto con la dirección del destinatario, entrega esa dirección a cualquier bot recolector. En formularios antiguos o hechos a medida puede ser peor: si el servidor confía en un campo de destinatario oculto, cualquiera puede cambiarlo y utilizar su formulario para enviar correo a direcciones arbitrarias.

Cargas de archivos y entradas almacenadas

La carga de archivos es la función de formulario más arriesgada, así que pregúntese primero si la necesita realmente. Si es así, permita solo los tipos que realmente espera (por ejemplo, PDF y los formatos de imagen habituales) en lugar de bloquear unos pocos peligrosos, y fije un límite de tamaño. Compruebe dónde almacena el plugin los archivos cargados: no deben poder listarse en un directorio público y, idealmente, no deben ser accesibles en absoluto en una dirección que se pueda adivinar. Bórrelos una vez tramitados, o envíelos como adjuntos en lugar de guardarlos en el servidor.

Muchos plugins de formularios o sus complementos guardan cada envío en la base de datos de WordPress, a menudo incluido el spam. Es una copia de seguridad útil cuando falla el correo, pero también un montón creciente de datos personales. Con arreglo al principio de limitación del plazo de conservación del RGPD (Art. 5(1)(e)), estos datos no deberían conservarse más tiempo del necesario. Decida si necesita entradas almacenadas, qué campos y durante cuánto tiempo, y después utilice el ajuste de borrado automático del plugin si lo tiene, o borre periódicamente las entradas antiguas. Las copias de seguridad de la base de datos contienen los mismos datos.

Después de cada actualización

  1. 1Abra la página de contacto en una ventana privada: el formulario y su elemento antispam se muestran correctamente, y la consola del navegador no muestra errores.
  2. 2Consulte el código fuente de la página: el campo honeypot y el script del CAPTCHA siguen ahí, y la dirección del destinatario no.
  3. 3Envíe un mensaje de prueba: llega a la bandeja de entrada, no a spam, y las cabeceras muestran que SPF, DKIM y DMARC se superan.
  4. 4Revise los ajustes que importan: destinatario, dirección del remitente, tipos y tamaños de archivo permitidos, cuánto tiempo se conservan las entradas.
  5. 5Compruebe que el enlace a la política de privacidad y cualquier texto de consentimiento siguen mostrándose en el formulario.
  6. 6Anote la fecha y lo que ha comprobado, para saber cuándo funcionó el formulario por última vez de forma demostrable.

Una vez convertido en rutina, esto lleva poco tiempo y detecta precisamente los fallos silenciosos que de otro modo pasan desapercibidos durante semanas. Para una visión desde fuera, una comprobación gratuita en formexposed.com examina las páginas de formularios públicas de un sitio sin enviar nada y muestra si la protección que usted espera está implantada y configurada de forma eficaz, sin necesidad de cuenta.