Descripción
Seguridad Premium. Coste cero.
Vigilante ofrece características de seguridad para WordPress de calidad empresarial de forma totalmente gratuita. Sin versión premium, sin ventas cruzadas, sin características ocultas tras muros de pago.
Protege tu web con un paquete de seguridad completo: cortafuegos, identificación en dos pasos, protección contra ataques de fuerza bruta, cabeceras de seguridad, exploración de integridad de archivos, detección de plugins cerrados, detección de malware, gestión de usuarios, registro de auditoría de seguridad, modo bajo ataque y mucho más.
Una vez activado, Vigilante aplica inmediatamente reglas de cortafuegos contra ataques habituales (inyección SQL, XSS, inclusión de archivos), cabeceras de seguridad, supervisión de intentos de acceso, bloqueo de XML-RPC, ocultación de la versión de WordPress y protección de archivos sensibles (`.htaccess`, `wp-config.php`), tras realizar automáticamente una copia de seguridad de tus archivos de configuración existentes.
Preajustes de seguridad con un clic
Elige un preajuste y protégete al instante:
Estándar – Seguridad equilibrada adecuada para la mayoría de los sitios web. Activa todos los módulos con valores por defecto razonables que no interfieren con el funcionamiento normal del sitio.
Máxima seguridad – Ajustes más estrictos para sitios de alta seguridad. Límites de tráfico más estrictos, reglas CSP más rigurosas, avisos de administración obligatorios. Algunas configuraciones pueden requerir cierta adaptación.
Siempre puedes personalizar los ajustes individuales después de aplicar un preajuste.
Modo «Bajo ataque»
¿Tu sitio web está siendo objeto de un ataque activo? Activa el modo «Bajo ataque» con un solo clic y detén el tráfico malintencionado al instante:
- Desafío JavaScript: todos los visitantes deben pasar una verificación automática del navegador antes de acceder a tu sitio. Los navegadores auténticos lo resuelven en segundos, mientras que los bots quedan bloqueados por completo.
- Límite de tráfico agresivo: se limitan las solicitudes a 30 por minuto, con bloqueos de 15 minutos para los infractores.
- Restricción de métodos HTTP: solo se permiten GET, POST y HEAD. Se bloquean PUT, DELETE, PATCH, OPTIONS y TRACE.
- Bloqueo de agentes de usuario vacíos: se rechazan las solicitudes sin cabeceras de agente de usuario.
- Bloqueo total de XML-RPC durante el ataque
- Restricción de la API REST: solo los usuarios identificados pueden acceder a la API REST.
- Desactivación automática: El modo se apaga después de 4 horas para que nunca se te olvide que está activo
- Avisos por correo electrónico cuando se active y desactive el modo
- Cookies firmadas con HMAC: Los visitantes verificados reciben una cookie firmada para que solo vean el desafío una vez.
El modo «Bajo ataque» funciona de manera independiente de la configuración de tus preajustes. Tus ajustes habituales se conservan, y se restauran cuando se desactive este modo.
Identificación en dos pasos (2FA)
Añade un segundo paso de verificación a tu acceso a WordPress:
- Aplicación de verificación (TOTP) – Google Authenticator, Authy, Microsoft Authenticator o cualquier aplicación compatible con TOTP
- Códigos por correo electrónico – Códigos de verificación únicos de 6 dígitos enviados por correo electrónico
- Configuración del código QR directamente en los perfiles de usuario
- 10 códigos de recuperación para acceso de emergencia si pierdes tu dispositivo
- Periodo de gracia configurable para que los usuarios configuren su aplicación de verificación
- Dispositivos de confianza – Permite a los usuarios omitir la identificación en dos pasos en dispositivos reconocidos durante 30 días
- Forzado basado en perfiles – requiere 2FA a administradores, editores o cualquier perfil
- Excluir a usuarios específicos de los requisitos de 2FA
- Herramienta de administración para restablecer el TOTP de los usuarios que hayan perdido su verificación
- Caducidad del código, límite de intentos y nombre del remitente del correo electrónico configurables
- Correos electrónicos de aviso a los usuarios cuando se activa el 2FA o se cambia de método
Protección con cortafuegos
Bloquea peticiones malintencionadas antes de que lleguen a WordPress:
- Bloqueo de inyecciones SQL
- Evitar ataques XSS (Cross-Site Scripting)
- Protección frente a inclusión de archivos (LFI/RFI)
- Bloqueo de exploración de directorios
- Filtrado de cadenas de consulta malintencionadas (recoge patrones sospechosos genéricos que los bloqueadores específicos no detectan)
- Detección y bloqueo de bots sospechosos
- Bloquea peticiones con agente de usuario vacío
- Limitación de peticiones para evitar ataques DDoS y de fuerza bruta, con bloqueos progresivos opcinales
- Gestión de lista blanca y lista negra de IPs (IPv4 e IPv6, con rangos CIDR y comodines)
- Lista blanca y lista negra de User-Agent con coincidencia parcial.
- Control de detección de IP de visitantes: Lee la IP real directamente desde la conexión (valor por defecto a prueba de suplantaciones) o desde una cabecera de proxy cuando se está detrás de Cloudflare, un proxy inverso o un balanceador de carga, con un aviso al administrador si se detecta un proxy pero no está configurado.
- Restricción de métodos HTTP
- Protección de archivos del servidor mediante .htaccess: bloquea el acceso directo a wp-config.php, .htaccess, wp-includes/ y archivos sensibles (.log, .sql, .bak, debug.log, readme.html, etc.) y, opcionalmente, el acceso externo a wp-cron.php
- Bloquea la ejecución de PHP en /uploads (uno de los métodos de ataque tipo post más habituales)
- Desactiva la navegación de directorios
Seguridad en el acceso
Frena los intentos de acceso no autorizados:
- Límite de intentos de inicio de sesión con umbrales configurables
- Bloqueos progresivos – bloqueos más largos para los infractores reincidentes
- URL de inicio de sesión personalizada – oculta wp-login.php de los bots
- Avisos de cambio de URL de inicio de sesión a todos los usuarios del área de admnistración
- Ocultar mensajes de error en el inicio de sesión – no reveles nombres de usuario válidos
- Control de XML-RPC: Déjalo activo, bloquea solo los métodos de pingback (recomendado, ya que cierra la vía de propagación mientras la aplicación móvil y Jetpack siguen funcionando), o desactívalo por completo.
- Control de contraseñas de aplicación
- Aviso por correo electrónico cuando se bloquea una IP por superar el límite de intentos de acceso
- Avisos por correo electrónico de inicios de sesión de admins
- Lista blanca de IPs para ubicaciones de confianza
Seguridad de usuarios
Protección integral de las cuentas de usuarios:
- Bloquea nombres de usuario inseguros (admin, test, root, etc.) en los nuevos registros
- Advierte de usuarios existentes con nombres de usuario inseguros para que puedas renombrarlos o eliminarlos
- Bloquea la búsqueda de autores — Intercepta las URLs del tipo
?author=Npara que WordPress no las redirija a/author/USERNAME/y no se filtre el slug de acceso. - Forzar contraseñas seguras con longitud mínima
- Caducidad de contraseñas con intervalos configurables
- Historial de contraseñas – evita la reutilización de contraseñas anteriores
- Forzar restablecimiento de contraseñas – Por usuarios específicos, por perfilo o a todos los usuarios (recuperación después de un hackeo)
- Límites de sesión – controla los inicios de sesión simultáneos por usuario
- Gestión de sesiones – ve y cierra sesiones activas
- Verificación por correo electrónico de los nuevos registros
- Procedimiento de aprobación de registros – aprueba manualmente los nuevos usuarios
- Exploración de cuentas de admin – alertas ante nuevos admins, cambios de correo electrónico, cambios de contraseña, escalado de privilegios
- Protección del nombre a mostrar – Impide revelar públicamente el nombre de usuario con el que se accede
Cabeceras de seguridad
Consigue una calificación A de seguridad:
- Content Security Policy (CSP) con una política por defecto compatible con WordPress y el modo Report-Only para realizar pruebas de forma segura antes de aplicarla
- HSTS (HTTP Strict Transport Security) con includeSubdomains y opciones de precarga
- X-Frame-Options – evita el clickjacking
- X-Content-Type-Options – evita la detección de MIMEs
- Referrer Policy control
- Política de permisos (cámara, micrófono, geolocalización, pagos, USB)
- Políticas Cross-Origin (COEP, COOP, CORP)
- Forzado de HTTPS con corrección automática de contenido mixto
- Ocultación de la huella digital del servidor — Neutraliza la cabeceras
Server:,X-Powered-Byy otras cabeceras de huella digital de las respuestas
Supervisión de integridad de archivos
Detecta plugins vulnerables y cambios no autorizados en tus archivos:
- Verificación del núcleo de WordPress con las sumas de comprobación oficiales
- Monitorización de archivos de plugins y temas con sumas de comprobación de WordPress.org
- Los archivos de configuración críticos (wp-config.php, .htaccess) se supervisan comparándolos con la versión de referencia, detecta inyecciones de código incluso en archivos sin suma de comprobación oficial
- Detección de plugins cerrados y eliminados: Revisión diaria del repositorio de WordPress.org para señalar cualquier plugin instalado que haya sido cerrado por contener malware, problemas de seguridad o incumplimientos de las directrices, incluyendo tanto los cierres explícitos como las retiradas silenciosas (eliminaciones) con la opción de ignorar por slug los plugins antiguos que aún no se puedan desinstalar
- Vista de diferencias lína a línea de los cambios, con un flujo de trabajo de aprobación por archivo
- Exploración en busca de código sospechoso sin sumas de comprobación en plugins y temas
- Detección de archivos adicionales en plugins y temas (archivos que no se encuentran en la distribución original)
- Exploración del directorio de subidas en busca de archivos PHP, extensiones duplicadas y archivos .htaccess, con una clasificación inteligente entre reglas peligrosas y de protección
- Exploración del directorio raíz en busca de archivos PHP que no son de la instalación (una forma común de ataque)
- Detección de ofuscación por concatenación de cadenas
- Niveles de aviso configurables y lista de ignorados para descartar archivos conocidos
- Rutas y extensiones de archivo excluidas
- Exploraciones automáticas programadas (a diario, semanalmente)
- Alertas por correo electrónico con formato HTML que incluyen secciones con el nivel de gravedad, entre las que se encuentra una sección específica para los plugins cerrados
Auditoría de seguridad
Haz seguimiento de todo lo que pasa en tu sitio:
- Intentos de inicio de sesión correctos y fallidos
- Eventos de la identificación en dos pasos
- Cambios en cuentas de usuarios (creación, borrado, cambios de perfil)
- Modificaciones de contenido (entradas, páginas)
- Activaciones/desactivaciones de plugins y temas
- Eventos de seguridad y amenazas bloqueadas
- Seguimiento y filtrado de métodos de solicitud HTTP (GET, POST, PUT, DELETE).
- Ventana emergente con detalles de registro mejorados, con secciones agrupadas y acciones rápidas.
- Añade con un solo clic una IP o un User-Agent a la lista blanca/lista negra del cortafuegos desde las entradas del registro.
- Enlaces de búsqueda directa de IP a AbuseIPDB.
- Período de retención configurable, exportación a CSV y filtrado por tipo de evento, gravedad, método de solicitud o fecha
Alertas de auditoría – Recibe un correo electrónico cuando el registro de auditoría señale algo que merezca tu atención. Están desactivadas por defecto y se configuran en la auditoría de seguridad:
- Alertas inmediatas cuando se registra un evento grave, por gravedad mínima (un nuevo administrador, un plugin cerrado o un aumento de privilegios se registran como críticos)
- Alertas con umbral cuando se produce un pico en una categoría (bloqueos del cortafuegos, errores de acceso, eventos de usuarios, plugins, integridad de archivos, seguridad, sistema y contenido) durante un intervalo de 30 minutos, 1, 6 o 24 horas, contando únicamente los eventos de advertencia y críticos, para que la actividad rutinaria nunca las active
- Un intervalo de espera antirrepetición evita que una avalancha de eventos se convierta en un sinfín de avisos que inunden tu bandeja de entrada
- Las alertas activas aparecen en «Ajustes y herramientas», el escritorio, la puntuación de configuración y la comprobación de seguridad
- Botón «Enviar correo electrónico de prueba» para confirmar el envío
Comprobación de seguridad
Auditoría de seguridad bajo demanda integrada en el escritorio. Sin servicios externos, sin cuentas, sin claves API – Todo se ejecuta en tu servidor:
- Más de 40 comprobaciones en 6 categorías: SSL/TLS, cabeceras HTTP, exposición de WordPress, acceso e identificación archivos sensibles y comprobaciones internas
- Puntuación de 0 a 100 con calificación de A a E, además de un desglose por categorías y detalles explicativos para cada comprobación
- 15 comprobaciones internas exclusivas que no se pueden realizar desde el exterior: estado de fin de vida útil de PHP, actualizaciones pendientes, plugins inactivos, plugins cerrados o eliminados, permisos de archivos, detección de salts por defecto, prefijo de tabla
wp_, nombre de usuarioadmin, administradores sin 2FA, estado de los módulos, errores de auditoría recientes, resultado de la última exploración de integridad de archivos y si están configuradas las alertas de auditoría - Verificación de reputación basada únicamente en DNS con Spamhaus ZEN, Barracuda BRBL y SpamCop SCBL (informativa — Los listados aparecen marcados, pero no afectan a la puntuación)
- Exploración en dos fases: Las comprobaciones rápidas locales aparecen en menos de un segundo, las comprobaciones remotas aparecen a medida que se completan
- Exploración semanal automática con alerta por correo electrónico opcional si la puntuación baja en 10 o más puntos o si una nueva comprobación crítica empieza a dar fallos
- Historial de 30 exploraciones con gráfico de tendencia y puntos de referencia
- Enlace de «Ir al ajuste» que se activa cada vez que falla una comprobación, y que lleva directamente al campo concreto de Vigilante que lo soluciona
- Diagnóstico inteligente de cabeceras que informa «configurado pero no se está sirviendo» cuando una caché o una CDN anula tus cabeceras
Refuerzo de WordPress
Protección multinivel en WordPress — Administración, contenido, cabecera, feeds y base de datos:
- Protege la administración: Desactiva el editor integrado de plugins y temas, impide instalaciones y actualizaciones desde el área de administración y fuerza HTTPS en esta área. Compatible con cualquier configuración de alojamiento, respetando los valores ya establecidos y sin sustituirlos nunca
- Desactiva el cron interno de WordPress para el recuento de visitas cuando ya tengas configurada una tarea cron real en el servidor
- Aviso en el escritorio cuando el modo de depuración sigue activado en producción, para que los mensajes de error nunca lleguen a los visitantes
- Oculta tu versión de WordPress en todos los lugares donde pueda aparecer: encabezado HTML, feeds RSS y Atom y, si quieres, en todas las URL de scripts y hojas de estilo de la parte visible del sitio (quitando solo la versión de WordPress, sin afectar a la gestión de caché de los plugins y temas)
- Eliminación diaria automática de archivos readme.html, license.txt y licencia.txt del directorio raíz de WordPress, los cuales podrían exponer tu versión
- Limpieza del encabezado HTML — Elimina el enlace RSD, el manifest de Windows Live Writer, la cabecera de enlaces cortos y el enlace de descubrimiento de la API REST
- Refuerzo de la base de datos — Comprobación de seguridad del prefijo de las tablas por defecto
wp_, y herramienta de renombrado con un solo clic, con copia de seguridad completa antes del cambio - Seguridad en los comentarios — Campo señuelo contra bots de spam, moderación obligatoria para todos los comentarios nuevos, cierre de comentarios en entradas antiguas, desactivación de pingbacks y trackbacks
- Gestión de feeds — Desactivar por completo los feeds RSS y Atom, o desactivarlos solo cuando el sitio no tenga contenido publicado
Seguridad de la API REST
Controla el acceso a la API en tu sitio:
- Tres modos de acceso: público (comportamiento por defecto de WordPress), solo para usuarios identificados (cierra el acceso a la API a visitantes anónimos) o selectivo (listas personalizadas de usuarios permitidos y bloqueados)
- Bloquea la enumeración de usuarios a traves de
/wp-json/wp/v2/users - Protege cualquier lista de variables sensibles contra accesos anónimos
- Opciones de compatibilidad por plugin para que el modo identificado no afecte a la parte pública de la web: WooCommerce, Contact Form 7, Gravity Forms, WPForms, Elementor, Jetpack. Las variables de oEmbed y la salud del sitio siguen estando disponibles por defecto
Herramientas de seguridad
Utilidades incluidas:
- Copia de seguridad de la base de datos: descarga una copia de seguridad completa o parcial de la base de datos en formato ZIP con selección de tablas.
- Cambio del prefijo de la base de datos: cambie el prefijo por defecto wp_ por un prefijo aleatorio seguro.
- Ajustes de exportación/importación – Transfiere tu configuración entre sitios
- Copia de seguridad manual – Crea copias de seguridad de .htaccess y wp-config.php cuando lo necesites
- Restablecer valores por defecto – Empieza desde cero con un solo clic
Seguro por principios
Se realiza automáticamente una copia de seguridad de tus archivos .htaccess, wp-config.php y robots.txt actuales antes de realizar cualquier modificación. Las copias de seguridad se almacenan en la base de datos de WordPress, nunca como archivos en el directorio raíz del sitio, y se verifican mediante sumas de comprobación MD5.
Cuando desactivas Vigilante se eliminan automáticamente todas las reglas de seguridad y se restauran tus archivos de configuración originales. Sin código residual, sin sitios web rotos.
¿Por qué usar Vigilante?
La mayoría de los plugins de seguridad para WordPress reservan sus mejores funcionalidades para los planes de pago. Vigilante te ofrece todo desde el principio — Sin planes premium, sin restricciones de características, sin ventas dirigidas. Cortafuegos, identificación en dos pasos con aplicación de verificación, cabeceras de seguridad, integridad de archivos, registro de auditoría, comprobación de seguridad con alertas semanales en caso de bajada y mucho más. Todo gratis, actualizándose constantemente y siguiendo los estándares de programación de WordPress.
Disponemos de una comparación detallada de las funcionalidades de Vigilante respecto a otros populares plugins de seguridad (Wordfence, Solid Security, AIOS, Sucuri, SG Security). Descubre qué ofrece cada uno en su versión gratuita y en qué aspectos Vigilante cubre carencias.
Soporte
¿Necesitas soporte privado o un desarrollo personalizado?
¿Necesitas ayuda individualizada, resolución de problemas prioritaria o una funcionalidad, integración o adaptaciones personalizadas creadas específicamente para tu sitio? Ofrezco soporte privado y desarrollos personalizados. Solo tienes que contactarme y decirme qué necesitas.
¿Necesitas ayuda o tienes sugerencias?
¿Te gusta el plugin? ¡Déjanos un comentario de 5 estrellas y así ayudas a que lo conozcan otros!
Acerca de Ayuda WordPress
Somos especialistas en plugins de optimización de seguridad, SEO, IA y rendimiento para WordPress. Creamos herramientas que solucionan problemas reales a los propietarios de sitios WordPress manteniendo los más altos estándares de programación y requisitos de accesibilidad.
Capturas










Instalación
- Sube los archivos del plugin al directorio
/wp-content/plugins/vigilante/, o instálalo directamente la pantalla de plugins de WordPress. - Activa el plugin a través del menú ‘Plugins’ en WordPress
- Ve a ‘Vigilante’ en el menú de administración
- Aplica un preajuste de seguridad o personaliza los ajustes de cada módulo
Requisitos:
- WordPress 6.2 o superior
- PHP 7.4 o superior
- Servidor Apache o LiteSpeed (para características de .htaccess)
- Certificado SSL recomendado para HSTS
FAQ
-
¿Este plugin ralentizará mi sitio?
-
No. Vigilante está optimizado para ofrecer un rendimiento óptimo. El cortafuegos utiliza una eficiente comparación de patrones, las consultas a la base de datos se almacenan en caché con transitorios y las reglas .htaccess se ejecutan a nivel del servidor antes incluso de que se cargue PHP.
-
¿Qué pasa cuando activo el plugin?
-
Vigilante crea inmediatamente una copia de seguridad de tus archivos .htaccess y wp-config.php existentes en la base de datos, luego aplica los ajustes de seguridad por defecto. Todos los módulos están activados con ajustes por defecto equilibrados adecuados para la mayoría de los sitios.
-
¿Qué pasa cuando desactivo el plugin?
-
Todas las modificaciones de seguridad se revierten automáticamente. Se eliminan las reglas .htaccess, se restauran los valores originales de las constantes wp-config.php y se borran las tareas programadas. Tu sitio web vuelve al estado anterior a Vigilante.
-
¿Cómo funciona la identificación en dos pasos?
-
Vigilante ofrece dos métodos de identificación en dos pasos (2FA). Con aplicación de verificación (TOTP), debes escanear un código QR en tu perfil para vincular una aplicación como Google Authenticator o Authy, y luego introducir un código de 6 dígitos de la aplicación cada vez que inicies sesión. Con los códigos por correo electrónico recibirás un código de un solo uso por correo electrónico tras introducir tu contraseña. Si lo activa el administrador del sitio, puedes marcar tu dispositivo como de confianza para saltarte la identificación en dos pasos durante 30 días.
-
¿Qué pasa si pierdo mi teléfono o el acceso a la aplicación de verificación?
-
Al configurar el TOTP de Vigilante, el plugin genera 10 códigos de recuperación. Puedes utilizar cualquiera de ellos como sustituto puntual del código de identificación. Si te quedas sin códigos de recuperación, un administrador puede restablecer tu TOTP desde los ajustes del plugin.
-
¿Qué pasa si no recibo el código 2FA por correo electrónico?
-
Comprueba primero tu carpeta de correo no deseado. Puedes hacer clic en «Reenviar código» en el formulario de verificación. Los códigos caducan tras 10 minutos por defecto. Si el problema persiste, un administrador puede desactivar temporalmente la identificación en dos pasos desde los ajustes del plugin.
-
¿Puedo cambiar entre correo electrónico y aplicación de verificación?
-
Sí. Ve a «Seguridad en el acceso > Identificación en dos pasos» y cambia el método de verificación. Si están activos los avisos, los usuarios afectados recibirán un correo electrónico en el que se explica el nuevo método y cómo configurarlo.
-
¿Qué perfiles de usuario requieren 2FA?
-
Por defecto, la identificación en dos pasos (2FA) se aplica a los administradores y editores. Puedes personalizar qué perfiles requieren 2FA en los ajustes de seguridad del inicio de sesión y excluir a usuarios específicos individualmente.
-
¿Cómo puedo recuperarme si me han bloqueado el acceso?
-
Acceda a tu sitio web a través de FTP/SFTP y cambia el nombre de la carpeta del plugin para desactivarlo temporalmente, o elimina las filas de la tabla
vigilante_login_attemptscorrespondientes a tu dirección IP en la base de datos. -
¿El cortafuegos bloqueará a los usuarios legítimos?
-
El cortafuegos está configurado para permitir el funcionamiento normal de WordPress, incluyendo el editor de bloques, la API REST y los maquetadores más populares. Si experimentas problemas puedes añadir direcciones IP específicas a la lista blanca o ajustar los umbrales de limitación de tráfico.
-
¿Puedo usarlo con otros plugins de seguridad?
-
Aunque Vigilante funciona de forma independiente, ejecutar varios plugins de seguridad puede provocar conflictos. Recomendamos probar primero en un entorno de pruebas si necesitas combinar soluciones de seguridad.
-
¿Funciona con plugins de caché?
-
Sí. Vigilante es compatible con los plugins de caché más populares. El cortafuegos se ejecuta antes que las capas de caché, y las reglas .htaccess no interfieren con los mecanismos de caché.
-
¿Funciona con WooCommerce?
-
Sí. Vigilante incluye ajustes de compatibilidad para WooCommerce. El módulo de seguridad REST API permite automáticamente las variables de WooCommerce, y el cortafuegos no bloqueará las conexiones de la pasarela de pago.
-
¿Cómo puedo comprobar mis cabeceras de seguridad?
-
Usa la herramienta de prueba de cabeceras integrada en la pestaña «Cabeceras de seguridad» o visita securityheaders.com con la URL de tu sitio para obtener una calificación de seguridad.
-
¿Qué es la comprobación de seguridad?
-
La comprobación de seguridad es una auditoría bajo demanda integrada en el escritorio. Realiza más de 40 comprobaciones en 6 categorías (SSL/TLS, cabeceras HTTP, exposición de WordPress, acceso e identificaci,ón archivos sensibles y comprobaciones internas) y ofrece una puntuación del 0 al 100 con una puntuación de A a E. A diferencia de los escáneres externos online, se ejecuta íntegramente en tu servidor y tiene acceso a 14 comprobaciones internas exclusivas: estado de fin de vida útil de PHP, actualizaciones pendientes, plugins cerrados/eliminados, permisos de archivos, detección de salts por defecto, administradores sin 2FA activada y mucho más.
-
¿La comprobación de seguridad en vía mis datos a algún servicio externo?
-
No. Todas las comprobaciones se realizan en tu servidor. El único tráfico externo consiste en tres consultas de DNS contra listas negras públicas (Spamhaus, Barracuda, SpamCop) para la categoría de reputación – Son consultas DNS estándar sin identificación, sin claves API y sin ningún salvo la dirección IP de tu sitio. Si desactivas la categoría de reputación la comprobación no realiza ninguna llamada de red externa.
-
¿Cuán a menudo debería realizar la comprobación de seguridad?
-
Ejecútala manualmente tras cualquier cambio importante (actualización de un plugin, migración de servidor, configuración de un nuevo perfil de usuario). Para una supervisión continua activa la exploración automática semanal desde el widget. Solo recibirás un correo electrónico si la puntuación baja 10 puntos o más, o si una nueva comprobación crítica empieza a fallar — así que no recibirás spam de exploraciones rutinarias.
-
¿Qué es la caducidad de contraseñas?
-
Puedes requerir a los usuarios que cambien sus contraseñas después de un número determinado de días (30, 60, 90, etc.). Los usuarios reciben avisos antes de la caducidad y se ven obligados a cambiar su contraseña en el siguiente inicio de sesión cuando caduca. El historial de contraseñas evita la reutilización de contraseñas recientes.
-
¿Qué es la aprobación de registros?
-
Cuando está activada, los nuevos registros de usuarios requieren la aprobación manual de un administrador antes de que la cuenta se active. Los usuarios pendientes no pueden iniciar sesión hasta que sean aprobados. Puedes configurar el rechazo automático después de un número determinado de días.
-
¿Qué hace la verificación por correo electrónico?
-
Los nuevos usuarios deben verificar su dirección de correo electrónico haciendo clic en un enlace antes de que su cuenta se active. Esto evita registros falsos y garantiza que la información de contacto sea válida.
-
¿Cómo funcionan los límites de sesión?
-
Puedes limitar el número de sesiones simultáneas que puede tener cada usuario. Cuando se alcanza el límite se bloquea el nuevo inicio de sesión o se cierra la sesión más antigua, dependiendo de tu configuración.
-
¿Puedo exportar el registro de auditoría de seguridad?
-
Sí. El registro de la auditoría de seguridad se puede exportar a formato CSV para su análisis externo o para la elaboración de informes de cumplimiento. También puedes filtrar los registros por tipo de evento, usuario o intervalo de fechas antes de exportarlos.
-
¿Qué archivos revisa el escáner de integridad?
-
El escáner compara los archivos del núcleo de WordPress, archivos de plugins y temas frente a las sumas de comprobación oficiales de WordPress.org. Los plugins y temas sin sumas de comprobación disponibles también se exploran utilizando una estricta detección de patrones de ofuscación. El directorio de subidas se explora en busca de archivos PHP, extensiones dobles y archivos .htaccess. Si se detectan archivos PHP adicionales que no están presentes en las distribuciones originales y que contengan código sospechoso se marcan automáticamente como sospechosos.
-
¿Con qué frecuencia se ejecuta la auditoría de archivos?
-
Puedes configurar exploraciones automáticas para que se ejecuten a diario o semanalmente. También puedes realizar exploraciones manuales en cualquier momento. Los avisos por correo electrónico admiten tres niveles: todos los resultados, solo archivos sospechosos o desactivados.
-
¿Cuál es la diferencia entre los preajustes estándar y máximo?
-
El nivel estándar aplica ajustes equilibrados adecuados para la mayoría de los sitios. El nivel máximo aplica reglas más estrictas: límites de tráfico más bajos, políticas de CSP más estrictas, avisos de administración obligatorios, límites de sesión y un refuerzo más agresivo. El nivel máximo puede requerir adaptaciones para sitios con funcionalidades complejas.
-
¿Dónde se almacenan las copias de seguridad?
-
Las copias de seguridad de la configuración (.htaccess, wp-config.php, robots.txt) se almacenan en la base de datos de WordPress, no como archivos en el directorio raíz del sitio, por lo que nunca pueden servirse a través de HTTP. La copia de seguridad de la base de datos que descargas se genera como un archivo ZIP temporal con un nombre imposible de adivinar y se elimina inmediatamente después de la descarga.
-
¿Qué es el modo Bajo ataque?
-
El modo «Bajo ataque» es una característica de emergencia que puedes activar cuando tu sitio web está sufriendo un ataque activo. Añade un desafío JavaScript que los navegadores auténticos resuelven automáticamente en unos segundos, mientras que los bots y los scripts automatizados quedan bloqueados por completo. También aplica una limitación de velocidad agresiva, bloquea los métodos HTTP restringidos y restringe el acceso a la API.
-
¿El modo «Bajo ataque» afectará a los usuarios que hayan iniciado sesión?
-
No. Los usuarios que han iniciado sesión, las páginas de administración, las tareas cron, las solicitudes AJAX y la página de inicio de sesión están excluidos del desafío JavaScript. Solo los visitantes no identificados que visiten la web ven la página de verificación.
-
¿Qué pasa si se me olvida desactivar el modo «Bajo ataque»?
-
Se desactiva automáticamente después de 4 horas. También recibirás un aviso por correo electrónico cuando se active y se desactive.
-
¿El modo «Bajo ataque» cambia mis ajustes de seguridad habituales?
-
No. Funciona independientemente de tus preajustes (estándar o máximo). Tus ajustes habituales no se ven afectados y siguen funcionando con normalidad una vez que se desactiva el modo «Bajo ataque».
-
¿Cómo funciona la copia de seguridad de la base de datos?
-
Ve a «Vigilante > Herramientas > Copia de seguridad de la base de datos». Selecciona las tablas que quieras incluir (o deja todas seleccionadas) y, a continuación, haz clic en «Descargar». La copia de seguridad se genera como un archivo ZIP temporal con un nombre imposible de adivinar, se envía a tu navegador y se elimina del servidor inmediatamente después de la descarga.
-
¿Qué ocurre al cambiar el prefijo de la base de datos?
-
WordPress utiliza wp_ como prefijo por defecto para las tablas. Cambiarlo por un prefijo aleatorio añade una capa de protección contra los ataques de inyección SQL que tienen como objetivo los nombres de tabla por defecto. Ve a «Vigilante > Refuerzo de WP > Refuerzo de la base de datos». Crea siempre una copia de seguridad antes de cambiar el prefijo.
-
¿Cómo excluyo del cortafuegos servicios de gestión como ModularDS o ManageWP?
-
Ve a «Vigilante > Cortafuegos > Listas de User-Agent» y añade el nombre del servicio (por ejemplo, ModularDS, ManageWP UptimeRobot) a la lista blanca de User-Agent. Utiliza la coincidencia parcial, por lo que al introducir « ModularConnector» se aplicará a cualquier cadena de User-Agent que contenga esa palabra clave.
Si también utilizas una URL de acceso personalizada, añade también la dirección IP del escritorio de administración a la lista blanca de IPs del cortafuegos. Algunas operaciones (por ejemplo, la instalación de una actualización de un plugin desde MainWP) acceden a wp-admin sin una sesión de WordPress y con un agente de usuario genérico de WordPress en lugar del nombre del servicio, por lo que la regla de User-Agent por sí sola no las detectaría. Una IP incluida en la lista blanca puede superar la protección del login/wp-admin oculto (y aún así debe verificarse).
-
¿Puedo enviar avisos de seguridad a alguien que no sea el administrador del sitio?
-
Sí. Ve a «Vigilante > Ajustes y herramientas > Ajustes de avisos». Puedes añadir destinatarios de correo electrónico adicionales (uno por línea) y, si lo deseas, desmarcar el correo electrónico de administración de WordPress. Esto resulta útil para profesionales de mantenimiento que gestionan varios sitios web y necesitan recibir todas las alertas de seguridad.
-
¿Puedo personalizar los destinatarios de los avisos como quiera?
-
Sí. Utiliza el filtro
vigilante_notification_recipients. Este filtro recibe y devuelve una lista de direcciones de correo electrónico que se utilizan para todos los avisos administrativos:add_filter( 'vigilante_notification_recipients', function( $recipients ) { $recipients[] = 'security-team@example.com'; return $recipients; } );
Reseñas
Colaboradores y desarrolladores
«Vigilante – Suite de seguridad 100% gratis: Cortafuegos, 2FA, login, cabeceras, escáner…» es un software de código abierto. Las siguientes personas han colaborado con este plugin.
Colaboradores«Vigilante – Suite de seguridad 100% gratis: Cortafuegos, 2FA, login, cabeceras, escáner…» está traducido en 2 idiomas. Gracias a los traductores por sus contribuciones.
¿Interesado en el desarrollo?
Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.
Registro de cambios
2.9.8
- Mejorado: Los ajustes iniciales ya no fuerzan el uso de HTTPS en ningún sitio. Las opciones «Forzar SSL en la administración» (que escribe FORCE_SSL_ADMIN en el archivo wp-config.php), «Redirigir de HTTP a HTTPS» y «Corregir contenido mixto» arrancan inactivos, sumándose a HSTS y a la reescritura de la dirección del sitio, que ya estaban desactivadas. «Corregir contenido mixto» no puede causar ningún problema, ya que solo reescribe las direcciones del propio sitio y únicamente en un sitio que ya se sirva a través de HTTPS, pero una opción cuya propia descripción indica que reescribe http a https no tiene cabida en los ajustes por defecto de un plugin que, deliberadamente, no decide si un sitio utiliza HTTPS. Basta con un clic para cualquiera que acabe de migrar y quiera que se reescriba su contenido antiguo. «Forzar SSL en la administración» se activaba sin comprobar en absoluto si el sitio respondía a través de HTTPS, por lo que al activar el plugin en un sitio que se sirva a través de HTTP se redirigía al administrador a una dirección que podía no existir, y en una red cualquier subsitio podía hacerlo para todos. Que un sitio utilice HTTPS es decisión del propietario, y ahora esto coincide con lo que ya hacían HSTS y la reescritura de la dirección del sitio.
- Mejorado: «Actualizar solicitudes inseguras» es ahora una opción independiente, desactivada por defecto. Antes formaba parte de la opción «Corregir contenido mixto», que viene activada por defecto, por lo que todos los sitios que se servían a través de HTTPS indicaban a los navegadores que actualizaran todas las solicitudes http://, incluidas aquellas que apuntaban a servidores de terceros: cualquier contenido alojado en un dominio sin HTTPS dejaba de cargarse en lugar de cargarse de forma insegura, y no había forma de mantener el resto de la gestión del contenido mixto sin desactivar esta opción. «Corregir contenido mixto» ahora hace solo lo que su nombre indica: reescribe las direcciones del propio sitio. Los sitios que se actualicen seguirán enviando la directiva si tenían activada la opción «Corregir contenido mixto», por lo que nada cambia para ellos hasta que decidan lo contrario, y también conservan la propia opción «Corregir contenido mixto»: el nuevo valor por defecto solo se aplica a las nuevas instalaciones.
- Mejorado: Los requisitos de contraseña que se aplican a las nuevas instalaciones son los dos que impiden el uso de contraseñas realmente fáciles de adivinar, las contraseñas comunes y conocidas, y la inclusión del nombre de usuario en la contraseña. Los cuatro requisitos de clase de caracteres (mayúsculas, minúsculas, números y símbolos) se mantienen disponibles para quien los desee. La recomendación actual es que lo que hace que una contraseña sea débil es que sea fácil de adivinar, no la falta de un símbolo, y las reglas de composición empujan a los usuarios hacia sustituciones predecibles. Los sitios existentes mantienen las reglas que ya tengan.
- Mejorado: Ahora las nuevas instalaciones activan los dos eventos que indican que alguien ha obtenido privilegios: la aparición de un nuevo administrador y el ascenso de permisos a algún perfil, ya que estos son indicios característicos de una apropiación de cuenta y son lo suficientemente poco frecuentes como para no convertirse en ruido. Las otras dos alertas de administrador siguen siendo opcionales.
- Mejorado: Los límites de sesión están activados en las nuevas instalaciones, con la opción de tres sesiones concurrentes y la de cerrar la más antigua, que ya eran los valores recomendados.
- Mejorado: Se ha desactivado por defecto la caducidad de contraseñas. Ya no se recomienda la rotación forzada, ya que es, con diferencia, la principal causa de las consultas de soporte, con usuarios que se quedan sin acceso en medio de una tarea. La característica sigue ahí para quienes tengan que cumplir con una política que lo exija, y la puntuación de configuración sigue recomendándola.
- Mejorado: El preajuste «Estándar» deja la opción de XML-RPC como en las nuevas instalaciones, bloqueando únicamente los métodos pingback. Antes desactivaba XML-RPC completamente, y para eso está el de «Máxima seguridad».
- Mejorado: El preajuste «Máxima seguridad» ahora activa las alertas de auditoría, tanto las inmediatas para eventos críticos como las de umbral, ya que una configuración con ese nombre que nunca te avisa de que ha ocurrido algo es un producto a medias. El modo «Bajo ataque» se basa en «Máxima seguridad», por lo que las mantiene activadas mientras esté activado y restaura tus ajustes al activarse. El tiempo de espera compartido evita que un ataque prolongado se convierta en una avalancha de correos electrónicos.
- Mejorado: Al restablecer los ajustes por defecto ya no se borra lo que hayas introducido. Las listas de direcciones IP y de agentes de usuario, la dirección de acceso personalizada, la configuración de identificación en dos pasos, las exclusiones del análisis de integridad y los destinatarios adicionales de alertas se conservan tanto al pulsar los botones de restablecimiento como al seleccionar el preajuste «Estándar». Los ajustes de seguridad siguen volviendo a sus valores por defecto. Nadie pulsa un botón llamado «Restablecer valores por defecto» esperando que desaparezca la lista blanca de su cortafuegos.
- Corrección (Multisitio): Al cambiar el prefijo de la base de datos, los subsitios ya no se quedan sin perfiles. La opción de perfiles se almacena una vez por sitio y solo se cambia el nombre de la que pertenece al sitio principal, por lo que todos los subsitios acababan con un menú desplegable de perfiles vacío y errores graves en los plugins que dan por hecho que existe un perfil. Ahora se revisan todos los sitios de la red y se repara cualquier subsitio cuya opción de perfiles contenga un nombre inesperado procedente de una migración anterior. Informado por Albert Calzada.
- Corrección (Multisitio): ya no es posible cambiar el prefijo de la base de datos desde un subsitio. La herramienta leía el prefijo del sitio desde el que se invocaba, por lo que, desde un subsitio, solo habría renombrado las tablas de ese sitio al reescribir el prefijo compartido por toda la red. La herramienta ya está disponible en el sitio principal para los administradores de red, y se explica con detalle en otra sección.
- Corrección (Multisitio): Los ajustes que modifican los archivos wp-config.php y .htaccess se gestionan únicamente desde el sitio principal. Estos dos archivos son compartidos por toda la red, mientras que los ajustes se almacenan por sitio. Por lo tanto, cada vez que se guardaban desde cualquier sitio, se reescribían según las opciones propias de ese sitio: el último en guardarse prevalecía, deshaciendo silenciosamente el resto, y cada pantalla seguía mostrando su propio valor almacenado en lugar de lo que realmente indicaba el archivo. Activar o desactivar el plugin en un subsitio provocaba lo mismo sin que nadie tocara ningún ajuste. Ahora, los subsitios ven esas secciones como de solo lectura, y se rechazan las modificaciones en cualquier otro lugar.
- Corrección (Multisitio): Ya no se ofrecen las copias de seguridad de la base de datos y la configuración a los subsitios. Tanto la base de datos como el archivo wp-config.php pertenecen a toda la red, por lo que una copia de seguridad realizada desde un subsitio incluiría todos los demás sitios, así como todos los usuarios de la red, incluidas las credenciales y los salts de autorización.
- Corrección: Al cambiar el prefijo de la base de datos ya no se renombran los ajustes que no tienen nada que ver con dicho prefijo. Solo hay un nombre de opción que se genera a partir del prefijo de la tabla, el que contiene los perfiles. Todo lo demás que empiece con las mismas letras es un nombre literal que pertenece a WordPress o a un plugin. Se renombraban todos, por lo que se perdía la selección de la página de la política de privacidad y los plugins que guardan su configuración en una opción cuyo nombre empiece por «wp_», entre ellos WP Rocket, no encontraban nada donde la almacenan. Lo mismo ocurría con los datos por usuario, por lo que también se renombraban el estado del alumno y los ajustes de traducción.
- Corrección: Al cambiar el prefijo de la base de datos ya no te saca de la sesión ni te redirige a la pantalla de instalación de WordPress. El archivo wp-config.php es un archivo PHP, por lo que la caché de opcode seguía sirviendo el prefijo anterior durante un par de segundos después de que se reescribiera, y cualquier solicitud que llegara en ese intervalo iniciaba WordPress con tablas que ya no existían: interpretaba que el sitio no estaba instalado y ofrecía el instalador, y la falta de la tabla de usuarios provocaba que la cookie de sesión fallara, a lo que WordPress responde borrándola. Ahora, el archivo se elimina de la caché de opcode nada más escribirse.
- Corrección: La caché de objetos se vacía tras un cambio en el prefijo de la base de datos. Las opciones se sirven desde ella, y las entradas renombradas se modificaban sin que WordPress se diera cuenta, por lo que un sitio con una caché de objetos persistente seguía utilizando los nombres antiguos.
- Corrección: El preajuste «Estándar» ahora aplica todos los valores por defecto, que es lo que dice que hace. Solo especificaba apenas una docena de campos, por lo que, al aplicarlo después del preajuste «Máximo», este último conservaba las reglas de contraseña de «Máximo», sus cuatro alertas de administrador, su límite de una sesión y su caducidad de contraseña de treinta días: el preajuste que promete valores por defecto sensatos no aplicaba casi ninguno de ellos. Ahora se basa en los propios valores por defecto, por lo que ya no puede desvirtuarse, y deja intactos los datos introducidos por el propietario del sitio: las listas de direcciones IP y de agentes de usuario, la dirección de acceso personalizada, la configuración de la identificación en dos pasos, las exclusiones de exploración y los destinatarios de los avisos adicionales. La opción «Restablecer valores por defecto» sigue estando disponible para empezar de cero.
- Corrección: Al aplicar un preajuste ya no se alteran las listas de perfiles. Los preajustes se superponían mediante una fusión que combinaba las listas posición a posición en lugar de sustituirlas, por lo que al aplicar «Estándar» sobre «Máximo», los dos perfiles cuyas contraseñas caducaban pasaban a ser cinco en «Máximo», sobrescribiéndose los dos primeros, y una lista vacía en un preajuste no vaciaba nada en absoluto.
- Corrección: El modo «Bajo ataque» ya no altera las listas de roles que hereda del preajuste «Máximo», por la misma razón que lo hacían los preajustes.
- Corrección: Restaurar los ajustes por defecto ya no desactiva XML-RPC por completo. Una nueva instalación solo bloquea los métodos de pingback, pero el botón «Restablecer» y la acción «Restablecer valores por defecto» dejaban el ajuste sin configurar, y «sin configurar» significa bloqueado por completo, por lo que los valores por defecto que se obtenían al pulsar el botón no eran los mismos que los de la instalación.
- Corrección: La comprobación de seguridad ya no indica que los sitios están en una lista negra cuando no es así. Las listas negras responden con un código reservado para indicar que rechazan la consulta, normalmente porque el servidor realiza la consulta a través de un sistema de resolución DNS público, y cualquier respuesta se interpretaba como una inclusión en la lista, por lo que se indicaba a los sitios que solicitaran una exclusión de una lista que no existía. Tampoco se consultan ya las direcciones privadas ni las reservadas.
2.9.7
- Mejorado: XML-RPC se traslada a la pestaña de refuerzo de WP, junto a los ajustes de pingback y trackback, con los que está relacionado, y se convierte en una opción única con tres opciones en lugar de dos casillas de verificación separadas en la de seguridad en el acceso, que podían marcarse al mismo tiempo y contradecirse entre sí. La búsqueda de ajustes ya apuntaba a la pestaña de refuerzo de WP para XML-RPC mientras que el ajuste en sí estaba en la de acceso, por lo que buscarlo llevaba a la pestaña incorrecta. Una nueva instalación ahora bloquea los métodos de pingback, que es la parte que se utiliza indebidamente para la propagación, y deja el resto accesible para que la aplicación de WordPress, Jetpack o un gestor remoto funcionen sin tener que tocar nada. Desactivar XML-RPC por completo sigue siendo la opción recomendada y está a un clic de distancia. Los ataques de fuerza bruta a través de XML-RPC siguen estando cubiertos, porque esos accesos pasan por el mismo bloqueo que cualquier otro. Los sitios que se actualizan mantienen exactamente lo que tenían, y la comprobación de seguridad resuelve el ajuste de la misma manera que lo hace el código que lo aplica.
- Mejorado: La búsqueda de ajustes ahora cubre todos los ajustes y sus palabras clave se pueden traducir. Era una lista escrita a mano que indexaba 68 de las 131 filas, por lo que buscar XML-RPC, contraseñas de aplicación, límites de sesión, caducidad de contraseñas o los ajustes de cabeceras no devolvía nada; y sus términos de búsqueda estaban codificados de forma fija, por lo que solo el inglés y el español encontraban algo por sinónimo. Ahora cada configuración regional puede proporcionar sus propios términos.
- Mejorado: La pestaña «Cabeceras de seguridad» ahora muestra Content Security Policy, HTTPS y HSTS seguidas, ya que las tres están relacionadas, y HSTS explica lo que realmente hace en lugar de repetir el texto de HTTPS. Su advertencia es la que realmente importa en el caso de HSTS: los navegadores la recuerdan durante todo el «max age», incluso si se desactiva más tarde, por lo que un sitio que pierda su certificado seguirá siendo inaccesible hasta que caduque. HSTS solo se puede activar en un sitio cuya dirección ya comience por https, ya que activarlo en cualquier otro sitio deja el sitio no disponible para todos los navegadores que lo respeten.
2.9.6
- Mejorado: La pestaña de cabeceras de seguridad ahora tiene una sección HTTPS con los tres ajustes que se ejecutaban sin forma de verlos o cambiarlos: redirigir HTTP a HTTPS, corregir contenido mixto y reescribir la dirección del sitio a https al activar. El último ahora está desactivado por defecto. Solía estar activado, por lo que al activar el plugin se reescribían la dirección de WordPress y la dirección del sitio a https sin preguntar y sin comprobar que el sitio respondía a través de HTTPS, lo que en un sitio publicado a través de HTTP lo dejaba apuntando a una dirección que podría no responder. La desactivación nunca lo deshacía. Ahora solo se ejecuta cuando está activado y la solicitud que activa el plugin es en sí misma a través de HTTPS. Los sitios cuyas direcciones ya fueron reescritas por una versión anterior las mantienen.
- Mejorado: Una casilla de verificación «Desactivar XML-RPC Pingback» en la pestaña de seguridad en el acceso, para sitios que necesitan el resto de XML-RPC para la aplicación móvil o Jetpack. El ajuste existía y funcionaba, pero no tenía ningún control en la interfaz.
- Mejorado: La redirección de HTTP a HTTPS ahora solo actúa en sitios cuya dirección ya es https://. En un sitio que aún se publica a través de HTTP enviaba cada solicitud a una dirección que podría no responder. Los sitios en HTTPS siguen redirigiendo exactamente igual que antes.
- Mejorado: El plugin ahora muestra el mismo nombre en la lista de plugins que en WordPress.org. Solo cambia el nombre mostrado, los ajustes, los datos y las actualizaciones no se ven afectados.
- Corrección: Las subidas de imágenes desde el editor vuelven a funcionar en WordPress 7.1 cuando la política de seguridad de contenido está activada. WordPress 7.1 procesa las imágenes en el navegador antes de subirlas y carga su motor WebAssembly desde una URL blob:, que está gobernada por la directiva connect-src. blob: faltaba allí, por lo que esa carga se bloqueaba. WordPress nunca lo notaba, porque su propia prueba de compatibilidad solo comprueba si los workers blob: están permitidos, lo que esta política ya permitía, por lo que seguía adelante de todos modos y la subida fallaba con un error que culpaba al formato del archivo. Se ha añadido blob: a connect-src en las políticas por defecto y máxima, y las advertencias de compatibilidad ahora comprueban también esa directiva. Informado por Antonio Cambronero.
- Corrección: Al guardar la pestaña de cabeceras de seguridad ya no se desactiva la redirección HTTPS y la corrección de contenido mixto, y al guardar la seguridad en el acceso ya no se desactiva el bloqueo de pingback de XML-RPC. Los ajustes sin un campo en su propio formulario se trataban como casillas de verificación sin marcar en cada guardado, por lo que al pulsar en guardar se desactivaban silenciosamente.
- Corrección: La integridad de archivos ya no informa de que los archivos del núcleo faltan permanentemente en sitios que no están en inglés. El manifiesto de sumas de comprobación localizado publicado por WordPress.org enumera los archivos de idioma de Akismet y de los temas por defecto, que no forman parte del núcleo y no viajan en el paquete de idioma del núcleo, por lo que eliminar un plugin o tema no utilizado, exactamente lo que recomienda la comprobación de seguridad, dejaba hallazgos que nunca se vaciaban.
- Corrección: La comprobación de seguridad ya no falla en su propia prueba REST /wp/v2/users/me en un sitio con ajustes de fábrica. Bloquear la enumeración de autores, que está activada por defecto, anula el registro de esa ruta, y una ruta que no existe responde con 404 en lugar del 401 que exigía la prueba. Un sitio correctamente protegido obtenía 97 de 100 puntos, y la única forma de recuperar los puntos era desactivar una protección real. La prueba hermana en /wp/v2/users ya aceptaba ese 404.
- Corrección: La prueba de contenido mixto ya no cuenta los enlaces normales a direcciones http://. Examinaba cada href de la página, por lo que un enlace saliente simple, o un enlace canónico o de feed, se informaba como contenido inseguro. Ahora solo se cuentan los recursos que la página realmente carga.
- Corrección: Los valores de las cabeceras se limpian de saltos de línea y comillas dobles antes de escribirse en .htaccess. Un salto de línea en un valor finalizaba la directiva y convertía el resto en configuración del servidor por sí mismo.
- Corrección: Al desinstalar el plugin ahora se eliminan las copias de seguridad que guardaba de wp-config.php y .htaccess. Esas copias se toman en la base de datos antes de que el plugin escriba en cualquiera de los dos archivos, y no estaban en la lista de desinstalación, por lo que una copia de wp-config.php, con las credenciales de la base de datos y los salts de identificación incluidos, permanecía en la tabla de opciones después de borrar el plugin. Los registros de copias de seguridad individuales y la caché del estado del plugin también se vacían.
- Corrección: Se han eliminado tres ajustes que ningún código leía nunca: dos que quedaban de versiones anteriores y uno detrás de una característica de cortafuegos que el readme describía pero que nunca se implementó en ninguna versión.
2.9.5
- Mejorado: El cron diario de caducidad de contraseñas ya no ejecuta una consulta a la base de datos por cada usuario. Al solicitar a WordPress únicamente los ID de usuario, la caché de usermeta queda vacía, por lo que cada comprobación de recordatorio volvía a la base de datos; ahora, todo el conjunto se prepara por adelantado. Los sitios con muchos usuarios en los perfiles afectados lo notarán durante la ejecución diaria de mantenimiento.
- Mejorado: La reescritura de contenido mixto ya no abre un búfer de salida en las solicitudes de administración, AJAX y REST. Solo reescribe documentos HTML completos, por lo que esas respuestas estaban consumiendo un búfer y una llamada de retorno que, de todos modos, las descartaba. En una web de WooCommerce, solo los fragmentos del carrito generaban docenas de ellas por visitante.
- Corrección: El limitador de frecuencia del cortafuegos ahora mide un intervalo real de 60 segundos. El contador de solicitudes renovaba su propio plazo de caducidad con cada acceso, por lo que el intervalo nunca se cerraba mientras seguía llegando tráfico y el límite dejó de significar «solicitudes por minuto»: pasó a ser «solicitudes desde el último minuto completo de inactividad». Los visitantes y editores autorizados quedaban bloqueados con un error 429 muy por debajo del límite configurado, y el problema se agravaba cuanto más tráfico tenía el sitio, ya que el recuento se realiza por IP y nunca se reiniciaba. Con el valor por defecto de 120 por minuto, un tráfico sostenido de 66 por minuto se bloqueaba a sí mismo tras 110 segundos. El problema afectaba con mayor intensidad en los casos en que varias personas compartían una misma dirección, como en una oficina o un CGNAT móvil, y sobre todo en sitios web detrás de una CDN sin ninguna cabecera de proxy declarada, donde todo el sitio se contabilizaba como un único visitante. Los contadores almacenados por versiones anteriores se descartan al actualizar.
- Corrección: La reescritura de contenido mixto ya no cierra un búfer de salida que no haya abierto. Al cerrarse solo comprobaba si había algún búfer abierto; por lo tanto, cuando otro plugin había abierto uno después de él y aún no lo había cerrado, se vaciaba ese búfer y el de Vigilante quedaba sin vaciar.
- Corrección: Los botones para activar y desactivar los módulos en la página de ajustes ahora tienen nombres accesibles. Un lector de pantalla los anunciaba como casillas de selección sin etiqueta, ya que el nombre del módulo se encontraba en un elemento fuera de la etiqueta del botón, lo que hacía que la lista de módulos (el control principal del plugin) resultara inutilizable para las personas con discapacidad visual.
2.9.4
- Corregido: Con una URL de acceso personalizada activa, bloquear el acceso al wp-admin oculto ya no muestra la plantilla 404 del tema desde dentro del hook «init». Cada solicitud bloqueada estaba pagando una representación completa de la página antes de que WordPress hubiera terminado de arrancar, con un coste equivalente a servir una página real, y llenaba debug.log con avisos de «llamada incorrecta» de componentes que esperan que «wp_loaded» se haya ejecutado primero (WooCommerce registraba uno por cada visita al carrito). La regresión llegó en la 2.9.3, cuando las cuatro rutas de bloqueo se unificaron en una única ayuda de 404. El wp-login.php oculto y el acceso directo /login todavía devuelven el 404 con la plantilla del tema, porque se ejecutan lo suficientemente tarde en la solicitud como para que sea seguro.
- Corregido: Ocultar wp-admin ya no devuelve 404 en las URL de la parte pública que simplemente contienen «wp-admin». La comprobación buscaba ese texto en cualquier parte de la solicitud, incluida la cadena de consulta, por lo que una entrada publicada en /wp-admin-tips/, un enlace como /?redirect_to=/wp-admin/ e incluso la propia pantalla de acceso oculta cuando su valor redirect_to no estaba codificado como URL se convertían todas en 404. Ahora solo se coincide con la ruta real de administración, y las exenciones de admin-ajax.php y admin-post.php también se coinciden en la ruta, por lo que una solicitud como /wp-admin/edit.php?x=admin-ajax.php ya no se cuela en el bloqueo. Los intentos de escáner en subdirectorios inexistentes como /blog/wp-admin/ se dejan al 404 propio de WordPress, por lo que ya no aparecen en el registro de actividad.
2.9.3
- Mejorado: Las listas blancas de direcciones IP y User-Agent del cortafuegos ahora también incluyen las protecciones a nivel de .htaccess (bloqueo de bots sospechosos, cadenas de consulta peligrosas, límites de métodos HTTP). Antes solo excluían el cortafuegos de PHP, por lo que un rastreador legítimo seguía recibiendo un error 403 directamente de Apache incluso después de haber sido incluido en la lista blanca. Las reglas se reescriben con condiciones de excepción cada vez que cambian las listas, respetando el ajuste de detección de la IP del visitante cuando el sitio declara una cabecera de proxy.
- Corrección: Ahora la función «Bloquear bots sospechosos» ya no devuelve un error 403 a los visitantes legítimos cuyo User-Agent contiene simplemente una palabra genérica breve. El token «rma» coincidía con el término «Performance», por lo que se bloqueaba la recuperación de páginas de WP Rocket («… for Performance Monitoring …») y Rocket Insights no podía añadir página s. Se han eliminado de la lista los términos rma, custo, disco, library, loader, extract, miner, scan y titan (los escáneres reales, como masscan, linkscan o sqlmap, siguen estando cubiertos por sus nombres completos), y el bloqueo del archivo .htaccess se actualiza automáticamente al actualizar el plugin.
- Corrección: El escáner de integridad de archivos ya no marca como sospechosos los archivos legítimos de plugins premium que leen un archivo local junto a la función unserialize(), como la importación/exportación de ajustes de SEOPress PRO o la caché de google/auth incluida con la pasarela de pago Redsys. Ahora, file_get_contents() solo se considera una señal de deserialización remota cuando hay un esquema de URL remota cerca de la llamada. Los paquetes descargados con wp_remote_get() o curl y posteriormente deserializados siguen detectándose.
- Corrección: La aprobación de un archivo de configuración crítico modificado (wp-config.php o .htaccess) ya no falla con un error genérico de AJAX a causa de cortafuegos de los alojamientos. Las reglas de los cortafuegos de aplicaciones web, como la OWASP CRS 930130, rechazan cualquier solicitud cuyo cuerpo contenga la cadena literal «wp-config.php», por lo que la solicitud de aprobación envía ahora una clave opaca que el servidor asocia con el archivo.
- Corrección: Los plugins premium que reutilizan un slug de carpeta abandonado en WordPress.org, como WPML (sitepress-multilingual-cms, que se cerró en wp.org cuando el plugin pasó a ser comercial), ya no se señalan como «cerrados» con una alerta crítica y un correo electrónico. Los slugs reutilizados conocidos y los plugins que declaran una URI de actualización externa se tratan como premium, al igual que cualquier otro plugin que nunca haya estado disponible en WordPress.org.
- Corrección: Cuando se utiliza una URL de inicio de sesión personalizada, al acceder a /login ya no se produce una redirección que revele la dirección oculta de acceso (WordPress convierte ese atajo en una redirección a la pantalla de inicio de sesión, ya reescrita con el slug secreto). Una solicitud POST anónima a /wp-admin provocaba una filtración de la misma forma a través de la redirección de identificación. Ahora, ambas devuelven el mismo error 404 que cualquier otro punto de entrada oculto.
- Corrección: La página 404 que se muestra al ocultar wp-login.php y la URL de inicio de sesión personalizada ahora utiliza la plantilla 404 del tema también en los temas de bloques. Los temas de bloques no tienen un archivo 404.php, por lo que esos sitios mostraban la página sencilla alternativa en lugar de la de su propio tema.
- Corrección: La función de corregir contenido mixto ahora también abarca los recursos externos en http://. La función de reescritura solo puede corregir las URL del mismo dominio, por lo que las imágenes, fuentes o scripts externos seguían provocando advertencias de contenido mixto. Ahora, la parte visible también envía la directiva Content-Security-Policy de solicitud de seguridad insegura, lo que hace que los navegadores carguen todas las peticiones adicionales con http:// a través de HTTPS, además de que la comprobación de seguridad reconoce dicha directiva en lugar de mostrar advertencias sobre referencias que el navegador ya actualiza.
2.9.2
- Mejorado: El aviso de detección de proxy/CDN ahora es descartable, y ya no se muestra en entornos de desarrollo local.
2.9.1
- Corrección: El escáner de integridad de archivos ya no genera falsas alertas de «código sospechoso» o «archivo inyectado» en temas y plugins legítimos (por ejemplo, el tema Astra). Ahora requiere que haya una llamada real a unserialize() junto a una solicitud remota antes de advertir sobre deserialización remota, en lugar de activarse cada vez que ambas simplemente aparezcan en algún lugar del mismo archivo, y compara los nombres de las funciones como tokens completos, por lo que los nombres seguros, como maybe_unserialize() y wpcom_vip_file_get_contents(), ya no se confunden con sus peligrosos homónimos.
- Corrección: Ya no se muestran falsas alertas de «archivo modificado» cuando un servidor o una herramienta de despliegue reescribe los finales de línea de un archivo (CRLF) o añade una marca de orden de bytes UTF-8 sin modificar el código. Ahora esos archivos se vuelven a comprobar con una copia normalizada antes de alertar, y los archivos ya publicados en WordPress.org se reconocen independientemente de las diferencias en los separadores de ruta.
2.9.0
- Nuevo: Vigilante ahora verifica cualquier plugin o tema comparándolo con los archivos oficiales de WordPress.org en el momento en que finaliza la actualización, en lugar de esperar a la siguiente comprobación programada. Si una actualización ha sido alterada, la discrepancia se detecta y se registra de inmediato.
- Mejorado: Las hojas de estilo (.css) quedan excluidas por defecto de la comprobación de integridad. Los temas y los plugins de optimización las reescriben constantemente, lo que solía provocar frecuentes alertas falsas de «archivo modificado» Los usuarios en modo estricto pueden volver a activar .css en los ajustes de exploración.
- Mejorado: El escáner detecta una técnica de ofuscación adicional utilizada por los plugins manipulados o «nulled», que consiste en descargar un payload remoto y deserializarlo.
- Corrección: La comprobación de integridad de archivos ya no muestra falsos positivos de archivos modificados o adicionales justo después de actualizar un plugin o un tema. Cuando WordPress.org publica varios checksums válidos para un archivo (algo habitual en versiones con etiquetas modificadas), ahora el archivo se compara con cada uno de ellos, y justo después de una actualización, Vigilante obtiene los checksums más recientes en lugar de reutilizar una copia almacenada en caché mientras WordPress.org aún estaba publicando la nueva versión. La verificación ahora también utiliza SHA-256 además de MD5.
Para entradas anteriores del registro de cambios revisa el archivo changelog.txt.
