Descripción
WordSec es un plugin de seguridad completo para WordPress. Ocho módulos cubren el cortafuegos, el escáner de malware, la seguridad de acceso, el tráfico en vivo, el bloqueo por IP y país, la inteligencia de cadena de suministro, el registro de auditoría y las alertas, para que puedas bloquear ataques y endurecer tu sitio desde un único escritorio en lugar de instalar ocho plugins.
Si tu sitio es hackeado, no solo pierdes el sitio. Pierdes la confianza de los clientes, tu posicionamiento en los buscadores y días de trabajo restaurando copias de seguridad. WordSec está diseñado para evitarlo antes de que ocurra y para ayudarte a recuperarte si ya ha ocurrido: el escáner encuentra el malware, la cuarentena lo aparta, y los archivos modificados del núcleo, los plugins y los temas se reparan a partir de sus copias originales.
Gratuito y sin necesidad de introducir clave de licencia. Las reglas del cortafuegos WAF, el escaneo de malware e integridad de archivos, la protección contra fuerza bruta, la autenticación de dos factores, el bloqueo por IP y país, el registro de auditoría y el endurecimiento con un clic se ejecutan localmente en tu propio servidor.
Cortafuegos de aplicaciones web (WAF)
- Constructor de reglas personalizadas con coincidencias regex y comodines
- Reglas integradas para inyección SQL, XSS, path traversal, inyección de PHP y comandos
- Modos de aprendizaje y activo, bloqueo de bots, cabeceras de seguridad, limitación de velocidad
- Más de 25 conmutadores de endurecimiento para el acceso a wp-config, enumeración de autores y API REST
- Protección extendida opcional: inspección de solicitudes antes de WordPress (opcional, totalmente reversible)
Escáner de malware y eliminación
- Reglas de detección de malware en archivos, la base de datos y tareas programadas
- Verificación de integridad de archivos del núcleo, plugins y temas a través de la API de WordPress.org
- Escaneos programados, cuarentena y restauración con un clic
- Eliminación de malware en un sitio hackeado: poner en cuarentena un hallazgo o reparar un archivo modificado del núcleo, plugin o tema a partir de su copia original
Seguridad de acceso, autenticación de dos factores (2FA) y protección contra fuerza bruta
- Autenticación de dos factores basada en perfiles (RFC 6238 TOTP)
- reCAPTCHA, hCaptcha y Cloudflare Turnstile, además de un CAPTCHA matemático integrado
- Protección contra fuerza bruta con bloqueo progresivo, honeypot y cambio de nombre de la URL de acceso
- Comprobación de contraseñas filtradas, gestión de sesiones, página de acceso personalizada
Tráfico en vivo
- Registro de solicitudes en tiempo real con detección de bots y exportación a CSV
- Filtrado de exclusión por perfil, IP, país o URI
Bloqueo por IP y país
- Listas de permitidos o de bloqueo de países y continentes
- Bloqueo de IP individuales y rangos CIDR, temporal o permanente, con soporte de lista de permitidos
Inteligencia de amenazas y cadena de suministro
- Puntuación de reputación y detección de plugins abandonados
- Alertas de vulnerabilidades conocidas para el núcleo, plugins, temas y PHP
- Verificación de integridad de actualizaciones con copias de seguridad y un inventario SBOM
Registro de auditoría
- Seguimiento completo de la actividad en 11 tipos de objetos y 14 acciones
Alarmas
- 36 tipos de eventos de alerta enviados por correo electrónico, Telegram o Slack
Todas las funciones se ejecutan localmente sin necesidad de clave de licencia. Opcionalmente, el servicio de WordSec en wordsec.net proporciona datos de inteligencia de amenazas que no se pueden generar localmente: conjuntos de reglas WAF gestionados, el feed de firmas de malware, listas de reputación de IP, la base de datos GeoIP y registros de vulnerabilidades. La conexión es opcional y cada servicio externo está documentado en «Servicios externos» más abajo.
Servicios externos
WordSec está diseñado para ejecutarse localmente y, sin clave de licencia, no realiza ninguna petición saliente al servicio de WordSec. El filtrado principal de peticiones y el análisis de archivos se ejecutan en tu servidor. Los servicios enumerados a continuación se contactan únicamente para las funciones específicas descritas, y la mayoría de ellos solo cuando activas explícitamente esa función (o, en el caso de la API de WordSec, solo después de que actives una clave de licencia). Esta sección documenta todos los servicios de terceros a los que el plugin puede conectarse y los datos que recibe cada uno.
API de WordSec (api.wordsec.net)
WordSec funciona de forma gratuita sin licencia, en cuyo caso no contacta en absoluto con este servicio. Hay una licencia gratuita disponible para todo el mundo; una vez que activas una clave, el plugin se comunica con el servicio de WordSec con dos propósitos distintos:
- Llamadas de servicio requeridas (solo mientras haya una clave de licencia activa): activación y validación de la licencia, y actualizaciones de datos de amenazas (reglas del firewall, firmas de malware, listas de reputación de IP, datos GeoIP, la lista de dominios de correo desechable y datos de vulnerabilidades conocidas). Estas habilitan las funciones respaldadas en la nube y no pueden realizarse localmente; sin clave, no se realiza ninguna de estas llamadas. El código local de aplicación de estas funciones (el motor del WAF, el escáner de malware, los filtros de bloqueo de IP y el filtro de restricción de registro) está siempre presente y activo; sin un feed actualizado, simplemente no tiene datos de inteligencia de amenazas con los que contrastar las peticiones.
* Cuándo: en la activación/validación y en las comprobaciones programadas de actualización de datos de amenazas.
* Datos enviados: la URL de tu sitio y la clave de licencia (utilizadas para autenticarte y vincular la licencia a este sitio) y, para las comprobaciones de actualización, las versiones actuales de los feeds de datos de amenazas que tengas instalados.
- Telemetría opcional de uso/entorno (OPT-IN, DESACTIVADA de forma predeterminada): una instantánea anónima una vez al día utilizada para mejorar WordSec. Solo se envía después de que actives explícitamente «Compartir datos de uso y del entorno» (al activar la licencia o en Ajustes Avanzado Datos de uso) y se puede volver a desactivar en cualquier momento.
* Cuándo: una vez al día, solo mientras la opción esté activada.
* Datos enviados: una instantánea no personal del entorno del sitio (versiones del servidor, WordPress, PHP y base de datos, la lista de plugins y temas activos) y estadísticas agregadas de uso de funciones y de seguridad de WordSec. Nunca se envían contraseñas, credenciales de la base de datos, claves secretas ni direcciones de correo electrónico.
- Términos del servicio: https://wordsec.net/terms
- Política de privacidad: https://wordsec.net/privacy
Have I Been Pwned (api.pwnedpasswords.com)
Utilizado por la comprobación opcional de contraseñas filtradas para detectar si una contraseña aparece en filtraciones de datos conocidas, mediante k-anonymity.
* Cuándo: cuando un usuario establece o envía una contraseña y la comprobación de contraseñas filtradas está activada.
* Datos enviados: solo los primeros 5 caracteres del hash SHA-1 de la contraseña. La contraseña en sí y su hash completo nunca salen de tu sitio.
* Términos & privacidad: https://haveibeenpwned.com/Privacy
API de WordPress.org (api.wordpress.org, downloads.wordpress.org, wordpress.org, core.svn.wordpress.org, plugins.svn.wordpress.org, themes.svn.wordpress.org)
Se utiliza para verificar la integridad de los archivos del núcleo, plugins y temas de WordPress, para consultar información pública de plugins/temas (plugins_api/themes_api) para las puntuaciones de reputación de la cadena de suministro y las comprobaciones de integridad de actualizaciones, para descargar el paquete de idioma de la propia traducción de WordSec desde translate.wordpress.org cuando eliges un idioma de la interfaz que aún no está instalado (el mismo mecanismo que usa el propio WordPress cuando cambia el idioma del sitio) y, solo cuando haces clic en «Reparar» en un hallazgo del escáner, para descargar la copia original de un archivo modificado del núcleo/plugin/tema y poder restaurarlo. Las descargas de reparación obtienen archivos originales individuales de plugins.svn.wordpress.org / themes.svn.wordpress.org / core.svn.wordpress.org, recurriendo como alternativa a los paquetes completos de downloads.wordpress.org (zips de plugins/temas) y wordpress.org (zips de versiones del núcleo).
* Cuándo: durante los análisis de malware/integridad y las comprobaciones de reputación de la cadena de suministro, en una acción de reparación explícita y cuando guardas un idioma de la interfaz cuya traducción aún no está instalada.
* Datos enviados: la versión del núcleo de WordPress, el idioma del sitio y los slugs/versiones de los plugins/temas comprobados; para una descarga de idioma, el slug/versión del plugin y el idioma elegido.
* Términos y privacidad: https://wordpress.org/about/privacy/
RDAP (rdap.org)
Utilizado por la herramienta de búsqueda WHOIS/RDAP de la página Herramientas para mostrar información de titularidad de una dirección IP o dominio que inspecciones.
* Cuándo: solo cuando ejecutas la herramienta de búsqueda WHOIS/RDAP.
* Datos enviados: la dirección IP o el dominio que hayas elegido consultar.
* Términos & privacidad: https://about.rdap.org/
ipify (api.ipify.org)
Utilizado por el comprobador de listas negras y la herramienta de información del servidor de la página Herramientas para determinar la dirección IP pública propia de tu servidor.
* Cuándo: solo cuando ejecutas la herramienta «Comprobación de listas negras» o «IP del servidor».
* Datos enviados: una solicitud simple desde tu servidor; no se incluye ningún dato del sitio (el servicio simplemente devuelve la IP que hace la solicitud).
* Términos y privacidad: https://www.ipify.org/
Proveedores de listas de bloqueo DNS (herramienta Comprobación de listas negras)
La «Comprobación de listas negras» de la página Herramientas consulta listas de bloqueo basadas en DNS (DNSBL) para indicarte si la dirección IPv4 pública de tu servidor está incluida. Cada proveedor recibe una consulta DNS estándar que contiene la dirección IP de tu servidor en forma invertida. Se consultan cinco proveedores:
* Spamhaus ZEN (zen.spamhaus.org): https://www.spamhaus.org/privacy-notice/
* SpamCop (bl.spamcop.net), operado por Cisco: https://www.cisco.com/c/en/us/about/legal/privacy-full.html
* Barracuda Reputation Block List (b.barracudacentral.org): https://www.barracuda.com/company/legal/privacy-policy
* UCEPROTECT Level 1 (dnsbl-1.uceprotect.net): https://www.uceprotect.net/en/index.php
* PSBL (psbl.surriel.com): https://psbl.org/
Detalles:
* Cuándo: solo cuando haces clic en «Comprobación de listas negras» en la página Herramientas.
* Datos enviados: la dirección IPv4 pública de tu servidor, incrustada en cada consulta a las listas de bloqueo DNS.
Telegram Bot API (api.telegram.org)
Canal opcional de envío de alarmas. Activo solo cuando configuras tu propio token de bot e ID de chat de Telegram.
* Cuándo: cuando se dispara una alarma de seguridad que has activado y el envío por Telegram está configurado.
* Datos enviados: el texto del mensaje de la alarma (tipo de evento, nombre del sitio, contexto relevante de IP/usuario) al bot/chat que hayas configurado.
* Términos del servicio: https://telegram.org/tos
* Política de privacidad: https://telegram.org/privacy
Webhooks entrantes de Slack (hooks.slack.com)
Canal opcional de envío de alarmas. Activo solo cuando configuras tu propia URL de webhook entrante de Slack.
* Cuándo: cuando se dispara una alarma de seguridad que has activado y el envío por Slack está configurado.
* Datos enviados: el texto del mensaje de la alarma (tipo de evento, nombre del sitio, contexto relevante de IP/usuario) al webhook que hayas configurado.
* Términos del servicio: https://slack.com/terms-of-service
* Política de privacidad: https://slack.com/privacy-policy
Google reCAPTCHA (www.google.com, www.gstatic.com)
CAPTCHA opcional de inicio de sesión/registro. Activo solo cuando seleccionas reCAPTCHA y proporcionas tus propias claves.
* Cuándo: en los formularios de inicio de sesión y registro mientras esté activado.
* Cargado de forma remota: reCAPTCHA requiere que su script de widget (www.google.com/recaptcha/api.js, servido con recursos desde www.gstatic.com) se cargue desde Google en el navegador del visitante; se encola únicamente en esos formularios y solo mientras reCAPTCHA sea el proveedor seleccionado. La verificación del token es una llamada del lado del servidor desde tu sitio a www.google.com.
* Datos enviados: el token de respuesta del CAPTCHA, tu clave pública del sitio y la dirección IP del visitante.
* Términos del servicio: https://policies.google.com/terms
* Política de privacidad: https://policies.google.com/privacy
hCaptcha (hcaptcha.com, js.hcaptcha.com)
CAPTCHA opcional de inicio de sesión/registro. Activo solo cuando seleccionas hCaptcha y proporcionas tus propias claves.
* Cuándo: en los formularios de inicio de sesión y registro mientras esté activado.
* Cargado de forma remota: hCaptcha requiere que su script de widget (js.hcaptcha.com/1/api.js) se cargue desde hCaptcha en el navegador del visitante; se encola únicamente en esos formularios y solo mientras hCaptcha sea el proveedor seleccionado. La verificación del token es una llamada del lado del servidor desde tu sitio a hcaptcha.com.
* Datos enviados: el token de respuesta del CAPTCHA, tu clave pública del sitio y la dirección IP del visitante.
* Términos del servicio: https://www.hcaptcha.com/terms
* Política de privacidad: https://www.hcaptcha.com/privacy
Cloudflare Turnstile (challenges.cloudflare.com)
CAPTCHA opcional de inicio de sesión/registro. Activo solo cuando seleccionas Turnstile y proporcionas tus propias claves.
* Cuándo: en los formularios de inicio de sesión y registro mientras esté activado.
* Cargado de forma remota: Turnstile requiere que su script de widget (challenges.cloudflare.com/turnstile/v0/api.js) se cargue desde Cloudflare en el navegador del visitante; se encola únicamente en esos formularios y solo mientras Turnstile sea el proveedor seleccionado. La verificación del token es una llamada del lado del servidor desde tu sitio a challenges.cloudflare.com.
* Datos enviados: el token de respuesta del CAPTCHA, tu clave pública del sitio y la dirección IP del visitante.
* Términos del servicio: https://www.cloudflare.com/website-terms/
* Política de privacidad: https://www.cloudflare.com/privacypolicy/
ipwhois.io (ipwho.is)
Servicio opcional de detalles de IP, desactivado por defecto. Todas las solicitudes se realizan a través de HTTPS con verificación de certificado, y no se realiza ninguna hasta que actives el «Servicio de búsqueda externa de IP» en los ajustes de WordSec (sección de gestión de IP del visitante). Se utiliza para una única cosa: la búsqueda de «detalles de IP» en el tráfico en vivo (país, región, ciudad, ISP, organización, ASN). El registro de tráfico nunca contacta con este servicio; la resolución de país durante el registro utiliza solo la base de datos GeoIP local.
* Cuándo: solo mientras la opción de servicio de búsqueda externa de IP está activada, y solo al hacer clic en la búsqueda de detalles de IP.
* Datos enviados: la dirección IP que has elegido inspeccionar.
* Términos de servicio: https://ipwhois.io/terms
* Política de privacidad: https://ipwhois.io/privacy
VirusTotal (virustotal.com)
No se contacta automáticamente. El escáner muestra un enlace «Comprobar en VirusTotal» en el que puedes hacer clic para abrir VirusTotal en tu navegador para un archivo determinado.
* Cuándo: solo cuando haces clic en el enlace.
* Datos enviados: el hash del archivo contenido en la URL del enlace.
* Términos y privacidad: https://docs.virustotal.com/docs/privacy-policy
Qualys SSL Labs (ssllabs.com)
No se contacta automáticamente. La prueba «Comprobar salud SSL» de la página Herramientas se ejecuta por completo en tu propio servidor (abre una conexión TLS con tu propio dominio y lee el certificado). Junto a ella, un enlace «Análisis profundo (SSL Labs)» abre la prueba de Qualys SSL Labs en una nueva pestaña del navegador; a continuación, SSL Labs conecta con tu sitio desde el exterior y califica su configuración TLS. El enlace lleva el indicador «hide results», por lo que el informe no se publica en el tablón público de SSL Labs.
* Cuándo: solo cuando haces clic en el enlace «Análisis profundo (SSL Labs)».
* Datos enviados: el nombre de dominio de tu sitio, contenido en la URL del enlace.
* Términos: https://www.ssllabs.com/about/terms.html
* Privacidad: https://www.qualys.com/company/privacy/
Créditos
WordSec incluye las bibliotecas de terceros que se enumeran a continuación. Todas las bibliotecas se distribuyen bajo una licencia compatible con la propia licencia «GPLv2 or later» de WordSec. Cada biblioteca incluida conserva su aviso de licencia dentro del archivo o su archivo de licencia original, y el código fuente original completo (sin minificar) de cada una está disponible en el proyecto y la versión enlazados.
Bibliotecas PHP (`vendor/`)
TCPDF 6.11.3
* Licencia: LGPL-3.0-or-later
* Copyright: Nicola Asuni, Tecnick.com LTD
* Fuente: https://github.com/tecnickcom/TCPDF
* Archivo de licencia: vendor/tecnickcom/tcpdf/LICENSE.TXT
* Utilizado para: generación de informes/exportaciones en PDF
SimpleXLSXGen 1.5.x
* Licencia: MIT
* Copyright: (c) 2020-2022 Sergey Shuchkin
* Fuente: https://github.com/shuchkin/simplexlsxgen
* Archivo de licencia: vendor/shuchkin/simplexlsxgen/LICENSE
* Utilizado para: exportación a XLSX (Excel)
Bibliotecas JavaScript / CSS (`assets/*/vendor/`)
Select2 4.1.0-rc.0
* Licencia: MIT
* Copyright: Kevin Brown, Igor Vaynberg y los colaboradores de Select2
* Fuente: https://github.com/select2/select2
* Texto de la licencia: https://github.com/select2/select2/blob/master/LICENSE.md
* Archivos incluidos: assets/js/vendor/select2.min.js, assets/css/vendor/select2.min.css
ApexCharts 5.16.0
* Licencia: MIT
* Copyright: (c) 2018-2026 ApexCharts
* Fuente: https://github.com/apexcharts/apexcharts.js
* Texto de la licencia: https://github.com/apexcharts/apexcharts.js/blob/main/LICENSE
* Archivos incluidos: assets/js/vendor/apexcharts.min.js
jsVectorMap 1.7.0
* Licencia: MIT
* Copyright: (c) Mustafa Omar y los colaboradores de jsVectorMap
* Fuente: https://github.com/themustafaomar/jsvectormap
* Texto de la licencia: https://github.com/themustafaomar/jsvectormap/blob/master/LICENSE
* Archivos incluidos: assets/js/vendor/jsvectormap.min.js, assets/css/vendor/jsvectormap.min.css
* Utilizado para: visualizaciones del mapa mundial (Tráfico en vivo / Bloqueo / Firewall)
Datos del mapa mundial (world_mill), registrados como el mapa «world» de jsVectorMap
* Licencia: MIT
* Copyright: colaboradores de jvectormap-content; geometría del mapa derivada de Natural Earth (public domain)
* Fuente: https://www.npmjs.com/package/jvectormap-content
* Archivos incluidos: assets/js/vendor/world.js
* Utilizado para: la geometría de países representada por las visualizaciones del mapa mundial anteriores
qrcode-generator 1.4.4
* Licencia: MIT
* Copyright: Kazuhiko Arase
* Fuente: https://github.com/kazuhikoarase/qrcode-generator
* Texto de la licencia: https://github.com/kazuhikoarase/qrcode-generator/blob/master/LICENSE
* Archivos incluidos: assets/js/vendor/qrcode.min.js
Iconos / recursos
flag-icons (SVG de banderas de países)
* Licencia: MIT (marcado SVG); los diseños de las banderas en sí son de public domain
* Copyright: (c) 2013 Panayiotis Lipiridis
* Fuente: https://github.com/lipis/flag-icons
* Texto de la licencia: https://github.com/lipis/flag-icons/blob/main/LICENSE
* Archivos incluidos: assets/images/flags/*.svg (banderas de países, 4×3 viewBox="0 0 640 480")
Capturas








Instalación
- Sube los archivos del plugin a
/wp-content/plugins/wordsec/, o instálalo desde la pantalla de Plugins de WordPress. - Activa el plugin desde la pantalla de Plugins de WordPress.
- Abre el menú WordSec para empezar a configurar.
La activación solo crea las tablas de base de datos del plugin, los ajustes predeterminados y su propio directorio de datos. WordSec nunca modifica .htaccess, .user.ini ni wp-config.php, ni cambia los permisos de los archivos, ni instala el bootstrap del WAF previo a WordPress sin una acción explícita y claramente identificada por tu parte, y la desactivación revierte todos esos cambios.
FAQ
-
¿WordSec ralentiza mi sitio?
-
No. WordSec se ha diseñado en torno a un número mínimo de consultas a la base de datos, el procesamiento por lotes y el almacenamiento en caché inteligente, de modo que la protección no se produce a costa del rendimiento.
-
¿Necesito una clave de licencia para usar WordSec?
-
No. WordSec se instala y funciona como un plugin gratuito totalmente funcional con protección local: el firewall de aplicaciones web (tus propias reglas personalizadas más las reglas predefinidas integradas), la protección contra brute-force y de inicio de sesión, la autenticación de dos factores, el reforzamiento, la configuración del bloqueo geográfico, el registro de auditoría y más funcionan sin ninguna clave.
-
¿Requiere algún servicio externo?
-
No, no para funcionar. La protección principal de WordSec se ejecuta localmente en tu servidor y, sin clave de licencia, no contacta en absoluto con ningún servicio externo de WordSec.
-
¿Puede WordSec ayudar a eliminar el malware en un sitio hackeado?
-
Sí. El escáner de seguridad examina tus archivos, la base de datos y las tareas programadas, y cada hallazgo se puede poner en cuarentena con un solo clic. Un archivo modificado del núcleo, plugin o tema de WordPress también se puede reparar directamente desde su copia original en WordPress.org, y el historial de escaneo mantiene un registro de todo lo que se encontró y se cambió.
-
¿Incluye WordSec protección contra ataques de fuerza bruta?
-
Sí. Los intentos de acceso fallidos tienen un límite de velocidad con bloqueo progresivo, de modo que cada nuevo intento desde la misma fuente espera más tiempo. También puedes añadir un campo honeypot, cambiar el nombre de la URL de acceso, exigir un CAPTCHA en el formulario de acceso y restringir los accesos por IP, país u hora del día.
-
¿Admite WordSec la autenticación de dos factores?
-
Sí. La autenticación de dos factores utiliza códigos TOTP RFC 6238 de cualquier aplicación de autenticación estándar, y tú eliges qué perfiles deben usarla. Para el caso de que se pierda un dispositivo y nadie pueda acceder, una constante WORDSEC_DISABLE_2FA en wp-config.php proporciona acceso de emergencia.
-
¿Qué bloquea realmente el cortafuegos de aplicaciones web?
-
Los conjuntos de reglas integrados cubren la inyección SQL, las secuencias de comandos en sitios cruzados (XSS), el path traversal y la inyección de PHP y comandos. Puedes añadir tus propias reglas con un constructor de condiciones múltiples, ejecutar el cortafuegos en modo de aprendizaje antes de aplicar nada y, opcionalmente, activar la protección extendida para que las solicitudes se inspeccionen antes de que se cargue WordPress.
-
¿Puedo ejecutar WordSec junto a otro plugin de seguridad?
-
Puedes hacerlo, pero no es recomendable. Dos cortafuegos inspeccionando la misma solicitud, o dos escáneres recorriendo los mismos archivos, afectan al rendimiento y generan alertas duplicadas. WordSec está diseñado para asumir la seguridad del sitio de principio a fin, por lo que lo habitual es desactivar primero los demás.
-
¿Cuáles son los requisitos mínimos?
-
WordPress 6.9+, PHP 7.4+ y MySQL 5.6+ / MariaDB 10.1+.
Reseñas
Colaboradores y desarrolladores
«WordSec – Malware Scanner & Removal, Web Application Firewall (WAF), and 2FA» es un software de código abierto. Las siguientes personas han colaborado con este plugin.
Colaboradores«WordSec – Malware Scanner & Removal, Web Application Firewall (WAF), and 2FA» está traducido en 7 idiomas. Gracias a los traductores por sus contribuciones.
Traduce «WordSec – Malware Scanner & Removal, Web Application Firewall (WAF), and 2FA» a tu idioma.
¿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
1.1.2
- Changed: Confirmed compatibility with WordPress 7.1.
1.1.1
- Security: REST API responses no longer honour the ?_jsonp= callback parameter, which let any other site read a response through a script tag. A «Disable JSONP Responses» toggle in Firewall Config covers it and ships on.
- Fixed: A number of bugs reported since 1.1.0. The login CAPTCHA logged a failed challenge and then let the login through, and its widget did not render for Turnstile and hCaptcha; the setup wizard applied your choices one step early and could lock itself out of the license step; removing an orphaned scheduled task did not always remove it, and tasks owned by an active plugin kept coming back as findings; a file with an ownership mismatch offered delete and quarantine as its only fix; and the «critical issues found» notice stayed on screen after the findings were repaired.
- Fixed: A site behind a same-server reverse proxy could ban itself, because every visitor arrived as 127.0.0.1. Loopback addresses are never blocked now, at any layer, and rows written before this fix are ignored.
- Changed: Request rate limiting now ships off by default. A blanket per-IP request cap also catches crawlers and shared office connections, so it is an opt-in like the other options that can turn visitors away.
1.1.0
- Corregido: desinstalar el plugin con una opción de eliminación de datos y luego reinstalarlo podía bloquear permanentemente a los usuarios de autenticación de dos factores el acceso, porque los secretos 2FA almacenados sobrevivían a la desinstalación mientras que su clave de cifrado no. Ahora la desinstalación elimina los datos por usuario del plugin junto con la clave, y la opción «conservar solo la clave de licencia» preserva el material de clave que necesita la licencia almacenada.
- Corregido: la desinstalación dejaba entradas en caché y las carpetas GeoIP/cuarentena; ahora se elimina todo lo que hay en uploads/wordsec a menos que se seleccione «conservar todo».
1.0.10
- Cambiado: ahora solo se contacta con el servicio opcional ipwhois.io cuando abres la ventana de «detalles de IP» en el tráfico en vivo. El registro de tráfico ya no lo llama nunca, por lo que las visitas en segundo plano ya no pueden gastar la cuota mensual de consultas y dejar la ventana de detalles de IP informando de «límite de velocidad superado».
- Cambiado: el registro de tráfico en vivo ya no almacena la ciudad por solicitud, y se ha eliminado la columna de ciudad de la base de datos que no se usaba. La ciudad sigue mostrándose en la ventana de detalles de IP.
- Corregido: la tabla de direcciones IP bloqueadas cargaba 25 filas después de actualizar la página, aunque estuviera seleccionado 10 por página. Ahora la elección de filas por página, el orden y la página actual se recuerdan como en las otras tablas de registro, y el botón de limpiar restablece el rango de tiempo a «Siempre».
- Corregido: al ordenar la tabla del registro de alarmas o del registro del cortafuegos, la flecha de la columna podía invertirse en sentido contrario al orden realmente aplicado.
1.0.9
- Corregido: en los sitios donde WordPress está instalado en un subdirectorio, el cambio de nombre de la URL de acceso no dejaba ninguna vía de entrada: la dirección de acceso personalizada devolvía un 404 mientras wp-login.php y wp-admin permanecían bloqueados. Ahora la dirección personalizada funciona, y también lo hacen los accesos directos /login, /admin y /dashboard.
- Corregido: «bloquear el acceso a archivos sensibles» bloqueaba las descargas legítimas de la biblioteca multimedia (.zip, .sql, .log y similares) en instalaciones en subdirectorios, porque la excepción para la carpeta uploads no coincidía. Ahora la excepción sigue la ubicación real de uploads.
- Corregido: la trampa Blackhole nunca se activaba en instalaciones en subdirectorios, y una solicitud con una cadena de consulta la sorteaba en todas partes.
- Corregido: la lista blanca de IP y país para el acceso no cubría una página de acceso renombrada en instalaciones en subdirectorios.
- Corregido: el bloqueo de enumeración de plugins y temas no se ejecutaba en instalaciones en subdirectorios cuando la solicitud llegaba a PHP.
- Corregido: los ejemplos de reglas para Nginx e IIS que se muestran para servidores que ignoran .htaccess ahora incluyen la ruta de instalación, para que coincidan en instalaciones en subdirectorios.
- Corregido: un slug de acceso personalizado no válido se reemplazaba silenciosamente en lugar de notificarse, y en un sitio que aún no tenía slug podía convertirse en un valor predeterminado predecible. Ahora el valor se rechaza con un mensaje y se conserva el slug anterior.
- Corregido: cuando un secreto de dos factores almacenado ya no podía descifrarse (por ejemplo, después de una rotación de la clave de seguridad), se denegaba el acceso incluso con la contraseña correcta y desactivar la autenticación de dos factores no ayudaba. Ahora el conmutador de 2FA desactiva completamente la comprobación, y una constante WORDSEC_DISABLE_2FA en wp-config.php proporciona acceso de emergencia.
- Corregido: «ocultar errores de acceso» ya no sustituye los mensajes de error de dos factores y de estado del sitio por el texto genérico «credenciales incorrectas»; solo se enmascaran los errores de credenciales.
- Mejorado: los secretos de dos factores almacenados en formatos de cifrado antiguos se vuelven a cifrar ahora al formato actual en segundo plano, de modo que una futura rotación de la clave de seguridad ya no pueda invalidarlos.
1.0.8
- Corregido: el endurecimiento de permisos de archivos podía dejar un sitio inaccesible. Establecía el .htaccess raíz en modo 0440, lo que quitaba el acceso de lectura al servidor web en los paneles de alojamiento donde el servidor web se ejecuta con un usuario diferente al propietario del archivo (Plesk, cPanel y similares). Apache respondía entonces a cada solicitud con 403 y registraba «AH00529 pcfg_openfile: unable to check htaccess file». Ahora el .htaccess raíz se establece en 0644 para que el servidor web pueda leerlo siempre, mientras que wp-config.php sigue siendo de solo lectura en 0440. Los sitios afectados se reparan automáticamente la próxima vez que se abra una página de administración con la opción activada.
- Corregido: el escáner de malware recomendaba el mismo modo 0440 para el .htaccess raíz, por lo que «corregir todo» (y los escaneos programados con corrección automática) podían volver a aplicarlo. Ahora el escáner espera 0644 y, en su lugar, informa de que un .htaccess que el servidor web no puede leer es un problema.
- Corregido: la comprobación de permisos de archivos en Herramientas mostraba 0440 como el modo recomendado para .htaccess y ahora recomienda 0644.
- Corregido: la puntuación de seguridad ya no espera que el archivo .htaccess sea ilegible por el servidor web; solo el acceso de escritura para el grupo o para otros cuenta en contra de la puntuación.
1.0.7
- Corregido: «evitar la enumeración de usuarios» ya no bloquea las páginas de autor normales. Solo se bloquean las sondas basadas en ID (como /?author=1, que WordPress resuelve en un nombre de usuario); un visitante que abra un archivo de autor conocido como /author/nombre/ recibe el contenido con normalidad. El endpoint de usuarios de REST y el mapa del sitio de usuarios permanecen cerrados como antes.
- Corregido: el cuadro de diálogo «Ver contenido coincidente» del escáner mostraba su recuadro de contenido en blanco mientras el modo oscuro estaba activo.
- Mejorado: la página de bloqueo que se muestra a los visitantes bloqueados lleva la marca de WordSec con una línea debajo que dice «Plugin de seguridad para WordPress».
- Mejorado: la pantalla de bloqueo que muestra la protección extendida (el cortafuegos anterior a WordPress) es ahora idéntica a la que sirve WordPress, en lugar de una copia casi exacta con un código de error adicional y una línea de referencia.
- Corregido: al desinstalar con «conservar solo la clave de licencia» ahora también se conserva el identificador de este sitio, de modo que al reinstalar se reutiliza la vinculación de licencia existente en lugar de registrar el sitio por segunda vez.
1.0.6
- Nuevo: el escáner ahora informa de archivos adicionales inesperados dentro de las carpetas de plugins y temas alojados en WordPress.org (archivos que no forman parte de la versión oficial). Estos archivos son un escondite habitual de cargas maliciosas que no coinciden con ninguna firma de malware. Los hallazgos admiten cuarentena y están cubiertos por Reparar todo.
- Mejorado: la reparación de archivos de plugins y temas ahora obtiene el archivo original individual directamente desde el SVN de WordPress.org (el mismo canal que ya usan las reparaciones del núcleo) en lugar de descargar y extraer el zip completo del plugin/tema; el paquete zip se mantiene como alternativa automática.
- Corregido: la reparación de plugins y temas podía indicar «puede que el plugin no esté alojado en WordPress.org» para plugins que SÍ están alojados allí, porque el paso de extracción del zip se ejecutaba sin un sistema de archivos de WordPress inicializado.
- Corregido: los temas predeterminados incluidos con WordPress (p. ej., Twenty Twenty-Five) ya no producen falsos hallazgos de «Archivo de tema modificado». WordPress distribuye sus propias compilaciones de estos temas, que pueden diferir byte a byte de la versión del mismo tema publicada en el directorio de temas; los archivos que coinciden con las sumas de comprobación oficiales del núcleo ahora se reconocen como genuinos.
- Mejorado: la tabla del historial de análisis muestra un desglose completo por gravedad (total, crítica, alta, media, baja, informativa) al pasar el cursor sobre la columna «Problemas encontrados».
1.0.5
- Corregido: el escáner de malware ya no marca los archivos no modificados del propio WordSec. Los archivos que coinciden byte a byte con las sumas de comprobación de la versión oficial de WordPress.org para la versión de WordSec instalada se excluyen de la comparación de firmas; un archivo modificado o desconocido sigue sin superar la suma de comprobación y se analiza con normalidad.
1.0.4
- Nuevo: asistente de configuración. La primera activación ahora abre una configuración guiada paso a paso: elige una configuración recomendada, estándar o totalmente personalizada para el firewall, la seguridad de inicio de sesión, el bloqueo y los ajustes; configura el CAPTCHA, la autenticación de dos factores, el renombrado de la URL de inicio de sesión y los canales de entrega de alarmas, y termina con el paso de la licencia. Cada cambio de uso compartido de datos o de archivos del servidor se comunica antes de aplicarse, y el asistente puede volver a ejecutarse en cualquier momento desde Ajustes.
- Nuevo: la elección de qué ocurre con tus datos al desinstalar (conservarlo todo, conservar solo la clave de licencia o borrarlo todo) ahora se ofrece también en un diálogo al desactivar el plugin, además del control ya existente en Ajustes.
- Mejorado: detección y rendimiento del escáner de malware.
- Mejorado: refinamientos visuales en toda la interfaz de administración.
- Corregido: problemas conocidos comunicados desde la versión 1.0.3.
1.0.3
- WordPress 6.9 es ahora la versión mínima compatible.
- El bootstrap del WAF previo a WordPress («Protección extendida») ya no se instala en la activación. Es una opción explícita en la página Firewall que enumera todos los cambios que realiza en el servidor, y desactivarla (o desactivar el plugin) los revierte todos.
- Las funciones de reforzamiento que escriben en .htaccess, .user.ini o wp-config.php, cambian permisos de archivo o eliminan archivos ahora están desactivadas de forma predeterminada, y la descripción de cada conmutador indica exactamente qué escribe.
- La desactivación ahora restaura las constantes de depuración originales de wp-config.php y los permisos de archivo originales, y elimina todos los archivos y directivas que el plugin añadió; la desinstalación vuelve a ejecutar esta limpieza como medida de seguridad.
- La geolocalización de IP de reserva y la búsqueda de detalles de IP de Tráfico en vivo han cambiado de ip-api.com a ipwhois.io, siempre por HTTPS con verificación de certificado, y ahora cada solicitud está condicionada a una nueva opción «Servicio externo de búsqueda de IP» desactivada de forma predeterminada (Ajustes Gestión de IP de visitantes).
- Las puntuaciones de reputación de la cadena de suministro ahora funcionan por completo sin clave de licencia: los datos públicos de plugins/temas de wordpress.org se obtienen directamente cuando el mirror del servicio no está disponible.
- El cuadro de diálogo de detalles de IP de Tráfico en vivo muestra las estadísticas locales de peticiones (totales, número de bloqueadas, nivel de amenaza) incluso mientras las búsquedas externas están desactivadas.
- Página de Ajustes reorganizada: Datos de uso se ha movido a la parte superior, las opciones de idioma e interfaz se han unificado en una única tarjeta Interfaz de administración, y la sección IP de visitantes se ha renombrado a Gestión de IP de visitantes.
- Las descripciones de la página Herramientas ahora nombran los servicios externos que contacta cada herramienta (api.ipify.org, rdap.org y los proveedores de listas de bloqueo DNS).
- Documentación de servicios externos ampliada: ahora se enumeran los proveedores de listas de bloqueo DNS, todos los hosts de descarga de wordpress.org y el servicio ipwhois.io.
- Se han corregido algunos errores conocidos.
- Se han realizado mejoras visuales.
1.0.2
- Todas las funciones ahora son totalmente funcionales de forma local, sin restricciones de licencia.
- Se ha corregido un error en el escáner de malware.
- Los datos de ejecución (reglas WAF, listas de bloqueo, GeoIP, cuarentena) ahora residen en la carpeta uploads (uploads/wordsec).
- Correcciones adicionales de ubicación de archivos/directorios y de cumplimiento de las directrices de wp.org.
1.0.1
- Scripts/estilos en línea trasladados a la API de encolado de WordPress.
- Saneamiento de entradas más estricto en todo el manejo de peticiones.
- Bibliotecas incluidas actualizadas: ApexCharts 5.16.0, TCPDF 6.11.3.
- La base de datos GeoIP ahora se almacena en wp-content/wordsec-data/ en lugar de en la carpeta del plugin.
- Se ha ampliado la documentación de Servicios externos de este readme.
1.0.0
- Lanzamiento público inicial.
