Limpiar spam en WordPress y proteger formularios
Limpiar spam en WordPress y proteger formularios: eliminamos malware, frenamos envíos masivos y reforzamos seguridad para recuperar control y confianza.
Índice
- Cómo saber si tu WordPress tiene spam o malware
- Pasos urgentes para cortar el spam en minutos
- Limpieza segura sin romper la web: archivos, base de datos y copias
- Revisar usuarios, roles y accesos fuera de lo normal
- Plugins, temas y actualizaciones: donde suele estar el foco
- Proteger formularios contra bots: recursos prácticos
- Email y SMTP: evitar que tu dominio sea usado para spam
- Endurecimiento: permisos, claves y configuración
- Monitorización, copias y alertas para no repetir la historia
- Preguntas frecuentes
Cómo saber si tu WordPress tiene spam o malware
Cuando alguien te dice que tu web está enviando correos raros, que aparecen enlaces extraños en Google o que el formulario recibe cientos de mensajes al día, suele haber dos escenarios: bots atacando formularios sin que haya infección, o infección real con inyección de código y uso de tu sitio como plataforma para spam. La diferencia importa, porque el tratamiento también cambia. Si solo hay bots, la prioridad es filtrar y blindar formularios. Si hay infección, toca limpiar archivos y base de datos, cambiar credenciales y revisar el servidor.
Señales típicas de infección: páginas que se redirigen a sitios de apuestas, farmacia o descargas, enlaces ocultos en el pie o en el contenido, usuarios administradores que no reconoces, cambios de contraseña que no has hecho, picos de CPU, o avisos de navegador de sitio peligroso. Señales más compatibles con bots sin infección: los formularios reciben spam, pero el resto del sitio funciona normal, no hay redirecciones, y Search Console no muestra problemas de seguridad.
Qué ocurre en la práctica: en muchas webs de servicios, el spam entra por formularios de contacto con campos públicos y sin límites. Un error frecuente es pensar que todo es malware y tocar archivos a ciegas, con lo que se rompe el tema o un plugin clave. Recomendación concreta: antes de borrar nada, activa un modo mantenimiento, haz una copia completa y revisa si el problema se concentra en formularios o también hay síntomas de inyección y redirecciones.
Para un diagnóstico rápido, revisa tres frentes. Primero, WordPress: lista de usuarios, plugins instalados, historial de actualizaciones si lo tienes, y si hay archivos nuevos en wp content uploads o en plugins con fechas sospechosas. Segundo, servidor: logs de acceso y error, procesos, y si hay llamadas repetidas a admin ajax o xmlrpc. Tercero, buscadores y reputación: Search Console, alertas de seguridad, y si tu dominio aparece en listas negras de correo. Con eso, ya puedes decidir un plan sin improvisar.
Pasos urgentes para cortar el spam en minutos
Si estás recibiendo una avalancha de spam, conviene cortar el grifo primero y limpiar después. Esto reduce carga del servidor, evita saturación del buzón y te permite trabajar con calma. El objetivo aquí es reducir el impacto en menos de una hora, sin hacer cambios irreversibles.
- Activa un modo mantenimiento temporal, o restringe el acceso a administración por IP si tienes esa opción.
- Desactiva el envío de emails del formulario, por ejemplo apuntando a un buzón interno o deshabilitando la notificación mientras actúas.
- Si el spam entra por un formulario concreto, desactiva ese formulario o cambia temporalmente la URL de la página.
- Bloquea por firewall o por reglas del servidor los patrones de bots más repetidos, según los logs.
- Deshabilita xmlrpc si no lo necesitas, ya que a menudo se usa para ataques automatizados.
Un paso muy efectivo y poco intrusivo es poner un control antispam inmediato en el formulario. Si usas Contact Form 7, WPForms, Gravity Forms o Elementor Forms, casi todos soportan reCAPTCHA, hCaptcha o un honeypot. Otra medida simple es añadir un límite de velocidad por IP y un bloqueo de países si el negocio es local y el spam llega de ubicaciones improbables, siempre con cuidado para no filtrar clientes reales.
Qué ocurre en la práctica: cuando un sitio empieza a recibir 500 envíos diarios, el propietario cambia el correo del formulario y cree que ya está, pero el bot sigue enviando y el servidor se ralentiza. Error frecuente: dejar el formulario público mientras se investiga. Recomendación concreta: desactiva el formulario o añade un honeypot y un rate limit el mismo día, aunque luego hagas una limpieza más profunda.
Cuando el volumen baja, ya puedes pasar a la limpieza real. Si tras poner filtros el spam sigue igual y además ves redirecciones o archivos raros, sospecha de infección. En ese caso, el bloqueo es un parche y la prioridad es desinfectar y cerrar la puerta que está abierta.
Limpieza segura sin romper la web: archivos, base de datos y copias
Limpiar spam en WordPress no debería ser un acto de fe. La forma profesional de hacerlo evita dos problemas típicos: borrar demasiado y dejar la web inutilizable, o borrar poco y que el malware vuelva a aparecer. Por eso, el orden importa: copia, análisis, limpieza, verificación.
Empieza por una copia completa de archivos y base de datos. Si tu hosting ofrece snapshots, úsalos. Si no, descarga por SFTP o SSH una copia de todo el directorio del sitio y exporta la base de datos. Esto no es opcional, es tu red de seguridad. Después, compara el core de WordPress con una versión limpia: muchos ataques añaden archivos en wp includes o cambian ficheros del core. Una estrategia sana es reinstalar el core desde cero y conservar solo wp content, pero incluso dentro de wp content hay que revisar.
En wp content, lo que más se infecta son plugins antiguos, temas pirata, y el directorio uploads con archivos PHP camuflados. Busca archivos con extensiones raras, dobles extensiones, o PHP donde no debería haberlo. En la base de datos, revisa options, especialmente valores relacionados con siteurl, home, y cualquier opción que contenga scripts, iframes o enlaces a dominios sospechosos. También revisa posts y postmeta para inyecciones de enlaces ocultos.
- Reinstala WordPress core desde una fuente oficial.
- Elimina plugins y temas que no uses, y reinstala los necesarios desde repositorio oficial.
- Revisa uploads para detectar PHP o archivos ejecutables.
- Audita la base de datos en options y contenido.
- Cambia todas las contraseñas: admin, FTP, panel hosting, base de datos si aplica.
Qué ocurre en la práctica: el atacante deja una puerta trasera pequeña en un plugin, aunque limpies el core. Error frecuente: limpiar solo la carpeta public y olvidar cron jobs o tareas programadas del servidor. Recomendación concreta: además de WordPress, revisa cron del hosting, tareas programadas y cualquier archivo que se ejecute fuera del flujo normal de la web.
Tras limpiar, verifica. Pasa un escaneo con un plugin de seguridad serio, revisa logs para confirmar que el patrón de peticiones bajó, y comprueba que no se recrean archivos sospechosos. Si se recrean, hay una persistencia: credenciales comprometidas, un cron malicioso o una backdoor que se te ha escapado.
Revisar usuarios, roles y accesos fuera de lo normal
Cuando hay spam o hackeo, la parte más peligrosa no siempre es el código, sino el acceso. Un usuario administrador creado por un atacante puede sobrevivir a limpiezas parciales y volver a infectar el sitio. Por eso, la auditoría de usuarios es obligatoria, incluso si crees que el problema era solo un bot en un formulario.
Revisa todos los usuarios y sus roles. Busca administradores desconocidos, correos con dominios raros, nombres genéricos, y cuentas creadas recientemente. Comprueba también si hay editores o autores con permisos excesivos. Si tu web trabaja con varios colaboradores, revisa quién realmente necesita acceso y aplica el mínimo privilegio. Cambia contraseñas y fuerza restablecimiento si es posible.
A continuación, revisa los accesos fuera de WordPress: panel del hosting, FTP o SFTP, base de datos, y credenciales de SMTP. Si un atacante tiene el panel, puede reinyectar archivos. Si controla SMTP, puede enviar spam incluso con el sitio limpio. Activa doble factor si tu hosting lo permite y limita el acceso a administración por IP si tu equipo es estable.
- Elimina usuarios no reconocidos y revisa la fecha de creación.
- Reduce roles y aplica mínimos privilegios.
- Regenera claves de seguridad de WordPress y tokens de API si existen.
- Activa doble factor en hosting y en WordPress cuando sea viable.
- Revisa si hay accesos desde países o IPs poco habituales en logs.
Qué ocurre en la práctica: en webs de empresa, el acceso se comparte por WhatsApp, y cuando hay un incidente nadie sabe quién tenía la contraseña. Error frecuente: cambiar solo la contraseña del admin, pero no la del panel del hosting ni la del FTP. Recomendación concreta: haz un cambio coordinado de credenciales con un gestor de contraseñas y registra quién tiene acceso y por qué.
Si encuentras un usuario administrador extraño, no lo borres sin más antes de revisar qué hizo. Mira si instaló plugins, creó páginas, o cambió opciones. En algunos casos conviene exportar logs y evidencias antes de limpiar del todo, especialmente si el incidente afecta a correos o reputación del dominio.
Plugins, temas y actualizaciones: donde suele estar el foco
La mayoría de infecciones en WordPress entran por una vulnerabilidad conocida en un plugin o tema desactualizado, o por el uso de temas nulled. La limpieza sin cerrar este punto se queda corta. Aquí la clave es inventario, actualización y sustitución responsable.
Haz una lista de plugins y temas activos e inactivos. Los inactivos también son riesgo, porque siguen en el servidor y pueden contener código vulnerable. Elimina todo lo que no sea imprescindible. Actualiza el resto a la última versión estable. Si un plugin lleva tiempo sin mantenimiento, valora reemplazarlo. También revisa si hay plugins duplicados con funciones similares, porque aumentan superficie de ataque.
Cuidado con los constructores y addons. Algunos formularios de page builders quedan expuestos si no se configura protección antispam. Lo mismo con plugins que crean endpoints públicos. Si no estás segura de qué hace cada plugin, una regla práctica es: si no lo necesitas para negocio, fuera. Menos piezas, menos puertas.
- Elimina plugins y temas no usados, aunque estén desactivados.
- Actualiza WordPress, PHP y todos los componentes soportados.
- Evita temas y plugins de origen no oficial.
- Revisa configuraciones de formularios y endpoints públicos.
- Activa actualizaciones automáticas cuando el sitio lo permita.
Qué ocurre en la práctica: un sitio se limpia, pero vuelve a infectarse porque el plugin vulnerable sigue instalado y solo se cambió el core. Error frecuente: dejar un plugin viejo por miedo a romper la web, pero sin plan de sustitución. Recomendación concreta: si un plugin es crítico, haz staging, prueba la actualización o un reemplazo, y documenta el cambio. La estabilidad se consigue con método, no con miedo.
Por último, revisa la compatibilidad con tu versión de PHP. A veces la falta de actualizaciones viene de un PHP obsoleto en hosting. Subir PHP de golpe puede romper cosas, pero mantenerlo viejo es un riesgo mayor. Si el sitio es importante, vale la pena un ajuste controlado con copias y pruebas.
Proteger formularios contra bots: recursos prácticos
Proteger formularios es el núcleo del problema cuando el spam llega por contacto, presupuesto o suscripción. La buena noticia es que, bien configurado, puedes reducir el spam a casi cero sin perjudicar a usuarios reales. La mala noticia es que no existe una única medida mágica. Lo eficaz suele ser una combinación de fricción mínima más controles invisibles.
Medidas recomendadas, de menor a mayor impacto para la persona usuaria. Primero, honeypot: un campo oculto que los bots suelen rellenar. Es casi invisible para humanos y muy efectivo. Segundo, rate limit: limitar envíos por IP o por sesión, ideal para oleadas. Tercero, validaciones inteligentes: bloquear mensajes con demasiados enlaces, con patrones de palabras típicas, o con correos desechables. Cuarto, CAPTCHA moderno: hCaptcha o reCAPTCHA, preferiblemente en modo que no obligue siempre a resolver pruebas. Quinto, confirmación por email en formularios de alta, cuando el riesgo es alto.
- Honeypot activado y probado con tu formulario real.
- Límite de envíos por IP y por minuto, con tolerancia para casos legítimos.
- Bloqueo de enlaces excesivos, palabras repetidas y cabeceras sospechosas.
- hCaptcha o reCAPTCHA configurado en páginas con mayor abuso.
- Registro de IP y user agent para análisis, con criterio de privacidad.
No olvides el lado servidor. Muchos bots no cargan tu página, disparan directamente el endpoint del plugin. Por eso, un firewall de aplicación web o reglas en el servidor pueden bloquear antes de llegar a WordPress. También conviene desactivar comentarios si no se usan, o al menos activar moderación y antispam. Y si tienes formularios muy valiosos, considera separar el endpoint en una ruta distinta y añadir un token de sesión.
Qué ocurre en la práctica: se instala un CAPTCHA, pero el spam continúa porque el bot ataca el endpoint directamente, sin pasar por el front. Error frecuente: confiar solo en el CAPTCHA del lado cliente. Recomendación concreta: combina CAPTCHA con honeypot y una capa de firewall o rate limit en servidor para cortar tráfico automático antes de WordPress.
Si tu negocio es local, una medida adicional es filtrar por país con cuidado. No es infalible y puede bloquear clientes que viajan o usan VPN, pero en muchas webs de servicios en una ciudad concreta reduce ruido. Si lo aplicas, ofrece siempre una alternativa visible, como teléfono o WhatsApp, para no perder oportunidades.
Email y SMTP: evitar que tu dominio sea usado para spam
A veces el problema no es solo el formulario, sino el correo saliente. Si tu WordPress envía emails con PHP mail sin control, o si un atacante obtuvo credenciales SMTP, tu dominio puede terminar en listas negras y tus comunicaciones legítimas dejarán de llegar. Esto impacta ventas, atención al cliente y reputación. Por eso, hay que revisar el flujo de email como parte del plan.
Primero, configura un plugin SMTP para que WordPress envíe desde un servicio controlado y autenticado, y no desde el servidor sin identidad. Segundo, revisa si hay colas de correo en el hosting o en el panel, y si existen envíos masivos recientes. Tercero, valida que tus registros DNS de autenticación están correctos: SPF, DKIM y DMARC. Esto no solo ayuda a entregar mejor, también reduce el riesgo de suplantación del dominio.
- Configura SMTP autenticado y limita el remitente a direcciones válidas.
- Revisa colas de correo y logs de envío en el hosting.
- Activa SPF y DKIM, y añade DMARC con una política gradual.
- Evita que formularios permitan definir el campo From libremente.
- Activa alertas de rebote y de reputación en tu proveedor de email.
En formularios, un punto crítico es el encabezado From. Si el plugin pone como From el email que escribe la persona usuaria, muchos proveedores lo considerarán suplantación. Lo correcto suele ser enviar desde tu propio dominio y poner el email del usuario en Reply To. Eso mejora entregabilidad y reduce bloqueos.
Qué ocurre en la práctica: el sitio está limpio, pero los correos siguen fallando porque el dominio quedó con mala reputación tras el incidente. Error frecuente: no mirar SPF, DKIM y el From del formulario. Recomendación concreta: tras limpiar spam, revisa DNS y ajusta SMTP, y monitoriza rebotes durante dos semanas para confirmar recuperación.
Si detectas que se enviaron muchos correos no autorizados, cambia credenciales de correo, revisa cuentas comprometidas y contacta con el hosting o proveedor de email para valorar medidas de rehabilitación de reputación. Es mejor actuar pronto, antes de que el daño se vuelva persistente.
Endurecimiento: permisos, claves y configuración
Una vez limpias y frenado el spam, toca blindar. El endurecimiento no consiste en añadir capas al azar, sino en cerrar las puertas más comunes con cambios de bajo riesgo. Esto reduce la probabilidad de reinfección y también limita el impacto si vuelve a ocurrir algo.
Empieza por lo básico: actualizaciones automáticas cuando sea razonable, contraseñas fuertes, doble factor para administradores, y claves de seguridad regeneradas. Después, permisos de archivos: evita permisos excesivos, y limita escritura donde no sea necesaria. Si el servidor lo permite, desactiva la ejecución de PHP en uploads. También es recomendable desactivar el editor de archivos desde el panel de WordPress, para que una cuenta comprometida no pueda modificar tema y plugins desde la interfaz.
- Regenera salts y claves de seguridad y fuerza cierre de sesiones.
- Aplica permisos mínimos a archivos y carpetas, evitando escritura global.
- Desactiva ejecución de PHP en uploads si tu hosting lo permite.
- Deshabilita editor de archivos en el panel de administración.
- Limita intentos de login y protege wp admin con medidas adicionales.
Otra capa importante es un firewall de aplicación web. Puede ser un plugin con reglas propias o un servicio externo. Lo relevante es que bloquee patrones de ataque conocidos, intentos de fuerza bruta y exploración de vulnerabilidades. Si tu proyecto es negocio, es una inversión razonable. Y si trabajas con varias webs, estandariza la configuración para no depender de ajustes manuales en cada una.
Qué ocurre en la práctica: se limpia el sitio y se instala un plugin de seguridad, pero se deja el acceso admin con usuario admin y una contraseña vieja. Error frecuente: pensar que el malware fue lo único y olvidar el endurecimiento. Recomendación concreta: establece un checklist post limpieza, con credenciales nuevas, doble factor y bloqueo de ejecución en uploads, y repásalo siempre.
Si el hosting es compartido y limitado, hay medidas que no podrás aplicar del todo. En ese caso, compensa con un plugin de firewall serio, buena monitorización y copias fiables. Si la web es crítica, valora un hosting gestionado o un entorno con más control.
Monitorización, copias y alertas para no repetir la historia
El verdadero éxito no es limpiar una vez, sino evitar que vuelva a pasar o detectar a tiempo. La monitorización convierte incidentes grandes en incidencias pequeñas. Y las copias convierten un desastre en una recuperación rápida. Este apartado suele ser el gran olvidado, hasta que el incidente se repite.
Define una estrategia de copias: al menos diaria para base de datos, y semanal para archivos, con retención suficiente. No guardes la única copia en el mismo servidor del sitio. Usa almacenamiento externo o snapshots del proveedor con retención. Prueba la restauración de vez en cuando, porque una copia que no se puede restaurar es un falso seguro.
En monitorización, activa alertas de cambios de archivos, de nuevos usuarios, de intentos de login, de picos de tráfico y de cambios de DNS si es posible. Revisa Search Console para alertas de seguridad y cobertura. Monitoriza también el correo, especialmente si tu web envía leads, porque un bloqueo de entrega puede ser tan dañino como el spam.
- Copias externas con retención y pruebas periódicas de restauración.
- Alertas por cambios de archivos y creación de usuarios administradores.
- Control de intentos de acceso y reglas de bloqueo.
- Revisión periódica de Search Console y logs de servidor.
- Monitorización de reputación de correo y entregabilidad.
Qué ocurre en la práctica: tras una limpieza, pasan meses y nadie vuelve a mirar actualizaciones o logs. Error frecuente: confiar en que el problema se resolvió para siempre. Recomendación concreta: fija una rutina mensual de revisión de plugins, usuarios, logs y copias, y una revisión trimestral más profunda del sitio.
Si gestionas varias webs, centraliza alertas. Un panel de seguridad o un sistema de logs agregados te permite detectar patrones. Muchos ataques automatizados prueban la misma vulnerabilidad en decenas de sitios, y si detectas uno, puedes proteger el resto antes de que caigan.
Preguntas frecuentes
¿Por qué recibo spam si mi WordPress no está hackeado?
Porque muchos bots no necesitan entrar en tu administración. Atacan formularios públicos y envían mensajes automatizados. También pueden atacar endpoints del plugin del formulario sin cargar la web. En estos casos, la solución suele ser protección antispam, rate limit y reglas de firewall, más que una desinfección profunda.
¿Es suficiente con instalar un CAPTCHA?
A menudo ayuda mucho, pero no siempre es suficiente. Si el bot ataca el endpoint del formulario, puede saltarse el CAPTCHA si la validación no se hace bien en servidor. Lo más eficaz suele ser combinar honeypot, limitación de envíos, filtrado de contenido y una capa de firewall.
¿Qué hago si Google marca mi web como peligrosa?
Primero, limpia y asegúrate de que no queda código malicioso. Después, revisa Search Console y solicita una revisión de seguridad si corresponde. También conviene revisar si hay redirecciones, enlaces ocultos y si el servidor está enviando contenido distinto según user agent. Si no se elimina la causa, la advertencia suele volver.
¿Puedo limpiar yo mismo o necesito un profesional?
Si el problema es solo spam de formularios, suele ser viable con ajustes y plugins adecuados. Si hay síntomas de infección, redirecciones, usuarios desconocidos o spam saliente, la limpieza requiere método, revisión de servidor y cambios coordinados de credenciales. En proyectos de negocio, la intervención profesional suele ahorrar tiempo y reduce riesgo de reinfección.
¿Cómo evito que el spam llegue a mi bandeja aunque el formulario reciba mensajes?
Además de bloquear bots, puedes implementar un flujo de verificación: enviar una respuesta automática con confirmación, usar un formulario con validación por email o derivar a un sistema de tickets. También ayuda configurar SMTP, ajustar Reply To correctamente y filtrar por reglas en el proveedor de correo, sin depender solo del filtro antispam del buzón.
Qué ocurre en la práctica: tras aplicar medidas antispam, el volumen baja, pero quedan algunos mensajes aislados y se tiende a relajar la vigilancia. Error frecuente: dejar de actualizar plugins por miedo. Recomendación concreta: mantén un calendario de mantenimiento y revisa el formulario principal tras cada actualización importante del tema o del plugin de formularios.
¿Necesitas asesoramiento legal?
Nuestro equipo de expertos está listo para ayudarte