<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cisilino Site Defense Network - Matteo Cisilino</title>
	<atom:link href="https://www.cisilino.com/es/tag/cisilino-site-defense-network-es/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.cisilino.com/es/</link>
	<description>Guide su WordPress, server e sicurezza</description>
	<lastBuildDate>Fri, 30 Oct 2026 16:08:43 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>Desinstalar el plugin CSDN: qué queda y datos personales</title>
		<link>https://www.cisilino.com/es/2026/10/30/desinstalar-plugin-csdn-que-queda-datos-personales/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/desinstalar-plugin-csdn-que-queda-datos-personales/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:06:04 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[privacidad]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1203</guid>

					<description><![CDATA[<p>Qué pasa cuando desactivas o eliminas Cisilino Site Defense Network, qué datos quedan y cómo citarlos en el aviso de privacidad.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/desinstalar-plugin-csdn-que-queda-datos-personales/">Desinstalar el plugin CSDN: qué queda y datos personales</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Antes de desinstalar el plugin CSDN conviene saber la diferencia entre desactivarlo y borrarlo, porque las consecuencias son distintas. La desactivación apaga las reglas y conserva los datos. La desinstalación borra los datos del plugin de tu sitio. Al final encuentras también el listado de los datos personales tratados, para citar en el aviso de privacidad.</p>
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-disattivazione-disinstallazione.webp" alt="Esquema de Plugins instalados en WordPress para desinstalar el plugin CSDN con Desactivar y Eliminar" width="1200" height="630"/></figure>
<h2>Dónde se encuentra</h2>
<p>Abre la opción <strong>Plugins &gt; Plugins instalados</strong> (punto 1 de la imagen). En la fila de <strong>Cisilino Site Defense Network</strong> (punto 3) encuentras el enlace <strong>Desactivar</strong>. Tras la desactivación (punto 4) la misma fila muestra <strong>Activar</strong> y <strong>Eliminar</strong>.</p>
<h2>Qué pasa al desactivarlo</h2>
<p>Desactivar el plugin lo detiene sin tocar los datos. Al desactivarse, el plugin hace cuatro cosas.</p>
<ol>
<li>registra el evento «Plugin desactivado en este sitio» e intenta entregarlo al panel, si está configurado.</li>
<li>cancela las tres tareas programadas.</li>
<li>vacía los dos bloques de <code>.htaccess</code>, el de las IP bloqueadas y el del hardening.</li>
<li>actualiza las reglas de reescritura de WordPress.</li>
</ol>
<p><strong>Atención:</strong> desde que está desactivado no queda ninguna regla en vigor. Las IP bloqueadas vuelven a poder acceder y el hardening ya no se aplica. El plugin ni siquiera está cargado, así que no actúan las demás protecciones. También se detienen las cabeceras de seguridad, pero un navegador que ya recibió HSTS lo recuerda durante el tiempo configurado.</p>
<p>La base de datos permanece intacta. Si reactivas el plugin, los bloques de <code>.htaccess</code> se reconstruyen y encuentras los ajustes como los dejaste.</p>
<h2>Cómo desinstalar el plugin</h2>
<p>Para desinstalar el plugin debes pulsar <strong>Eliminar</strong> en <strong>Plugins instalados</strong>, después de haberlo desactivado. Antes de hacerlo, sigue estos pasos.</p>
<ol>
<li>En la pestaña <strong>Registro de actividad</strong> comprueba que la fila «pendientes de enviar al panel» esté en cero, si usas el panel.</li>
<li>En la pestaña <strong>Registro de depuración</strong>, descarga los archivos que necesites. Luego, si quieres, pulsa <strong>Eliminar todos los archivos</strong>.</li>
<li>Haz una copia de seguridad, si todavía no la tienes.</li>
<li>Desactiva el plugin y pulsa <strong>Eliminar</strong>.</li>
</ol>
<h2>Qué se elimina y qué queda</h2>
<p>Cuando decides desinstalar el plugin, al principio registra «Plugin desinstalado de este sitio: datos locales eliminados» e intenta entregarlo al panel. Luego borra, sea cual sea el resultado de la entrega.</p>
<p>Se elimina lo siguiente.</p>
<ul>
<li>las cuatro tablas <code>csdn_events</code>, <code>csdn_overrides</code>, <code>csdn_rate_hits</code> y <code>csdn_activity</code>.</li>
<li>casi todas las opciones cuyo nombre empieza por <code>csdn_</code>, incluidas las credenciales del panel, la whitelist y los ajustes de las pestañas. Quedan tres, enumeradas más abajo.</li>
<li>el dato de suspensión del rate limiting en todos los usuarios.</li>
<li>los datos temporales del plugin.</li>
<li>las reglas de los dos bloques del plugin en <code>.htaccess</code> y las reglas de reescritura. Los marcadores <code># BEGIN</code> y <code># END</code> se quedan en el archivo, vacíos.</li>
</ul>
<p>Queda, en cambio, lo siguiente.</p>
<ul>
<li>los archivos del registro de depuración en la carpeta <code>csdn-debug-*</code> dentro de <code>uploads</code>, porque son datos tuyos: elimínalos a mano o con el botón <strong>Eliminar todos los archivos</strong> antes de desinstalar.</li>
<li>el histórico ya entregado al panel, que está en el panel y no en tu sitio.</li>
<li>las líneas de <code>.htaccess</code> que quedan fuera de los marcadores del plugin.</li>
<li>tres opciones menores: <code>csdn_registration_lock</code> (la política de Registro de usuarios), <code>csdn_remote_ban_reasons</code> (motivos de los bloqueos recibidos) y <code>csdn_trigger_token</code> (token recibido del panel). Quedan también el dato de usuario <code>csdn_registration_blocked_at</code>, si está presente, y los datos temporales <code>csdn_rl_block_*</code>, que vencen solos. Se pueden quitar a mano de la base de datos.</li>
</ul>
<p><strong>Atención:</strong> desinstalar el plugin borra también el registro de actividad local. Las filas no entregadas todavía al panel, si el panel no responde, se pierden.</p>
<h2>Datos personales tratados por el plugin</h2>
<p>El plugin guarda los datos en tu sitio, en la base de datos. Nunca la contraseña. Esto es lo que trata.</p>
<ul>
<li><strong>Inicios de sesión fallidos</strong>: dirección IP, nombre de usuario probado, número de intentos, primera y última aparición, estado de bloqueo. No hay un borrado automático: se quedan en la base de datos hasta que desinstalas el plugin.</li>
<li><strong>Registro de actividad</strong>: fecha y hora, usuario de WordPress (id, login, rol), IP, tipo de acción, objeto implicado (para los contenidos, el título) y una breve descripción. En algunos casos añade detalles: para un nuevo usuario el correo y los roles, para un cambio de perfil el valor anterior y el nuevo de correo, login, nombre visible y sitio web. No guarda el contenido de artículos, comentarios o archivos. Para los ajustes con nombre sospechoso, como claves o tokens, registra solo que han cambiado.</li>
<li><strong>Rate limiting</strong>: IP y tipo de envío de los invitados, conservados un día. Las suspensiones de los autores están en los datos del usuario.</li>
<li><strong>Anulaciones de IP, whitelist y lista negra recibida</strong>.</li>
<li><strong>Registro de depuración</strong>, si lo activas: archivos que pueden contener rutas y fragmentos de datos.</li>
</ul>
<p>El registro local conserva por defecto 30 días y como máximo 500 filas. Puedes cambiar ambos valores en la pestaña <strong>Registro de actividad</strong>.</p>
<h3>Qué sale del sitio</h3>
<p>Solo si conectas el panel. Cada 15 minutos el plugin envía los inicios de sesión fallidos: IP, nombre de usuario, resultado «failed» y fecha. Envía hasta 200 por vez. Añade el customer code y la URL del sitio. Recibe las IP bloqueadas. El registro de actividad, con los detalles de arriba, se envía normalmente al momento, al final de la petición. Lo que queda en cola sale con el ciclo de los 15 minutos. Solo se envía si están activos tanto el registro como la opción «Enviar las actividades al panel». Las anulaciones manuales nunca se envían.</p>
<h3>Qué escribir en el aviso de privacidad</h3>
<p>Mientras no decidas desinstalar el plugin, en el aviso de privacidad del sitio indica al menos estos puntos.</p>
<ul>
<li>que el sitio registra IP y nombre de usuario de los intentos de acceso fallidos, por razones de seguridad.</li>
<li>que mantiene un registro de las acciones de los usuarios, con IP, y durante cuántos días lo conserva.</li>
<li>que, si has conectado el panel, algunos de estos datos se envían al servicio externo.</li>
<li>quién es el responsable y cómo pueden los usuarios ejercer sus derechos.</li>
</ul>
<p>Adapta el texto a tu situación, con tu asesor si tienes uno: el manual no sustituye un dictamen legal. Para las bases sobre los plugins, la <a href="https://wordpress.org/documentation/article/manage-plugins/" target="_blank" rel="noopener">guía oficial de WordPress</a> explica también la diferencia entre desactivar y eliminar.</p>
<h2>Si algo no funciona</h2>
<p>Si tras la desactivación el sitio da error, revisa <code>.htaccess</code> por FTP y mira el capítulo <a href="https://www.cisilino.com/es/?p=986">Resolución de problemas y preguntas frecuentes</a>. Si decidiste desinstalar el plugin por error, los datos locales no vuelven: hace falta una copia de seguridad del sitio.</p>
<p>Capítulo anterior: <a href="https://www.cisilino.com/es/?p=986">Resolución de problemas y preguntas frecuentes</a>. Vuelve al índice con la <a href="https://www.cisilino.com/es/?p=972">introducción al manual CSDN</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/desinstalar-plugin-csdn-que-queda-datos-personales/">Desinstalar el plugin CSDN: qué queda y datos personales</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/desinstalar-plugin-csdn-que-queda-datos-personales/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Resolución de problemas y preguntas frecuentes</title>
		<link>https://www.cisilino.com/es/2026/10/30/resolucion-problemas-preguntas-frecuentes/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/resolucion-problemas-preguntas-frecuentes/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:06:02 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[preguntas frecuentes]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1202</guid>

					<description><![CDATA[<p>Las soluciones a los problemas típicos de Cisilino Site Defense Network: bloqueos, errores 500, suspensiones, panel y registros.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/resolucion-problemas-preguntas-frecuentes/">Resolución de problemas y preguntas frecuentes</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Esta página de resolución de problemas reúne las situaciones en las que Cisilino Site Defense Network puede ponerte en dificultades, con la solución para cada una. Te sirve si te has bloqueado tú solo, si el sitio responde con un error 500 o si un usuario ya no puede publicar. Las respuestas están organizadas como preguntas frecuentes.</p>
<figure class="wp-block-image size-large"><img decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-risoluzione-problemi.webp" alt="Lista de comprobación para la resolución de problemas del plugin CSDN con los pasos a seguir" width="1200" height="630"/></figure>
<h2>Resolución de problemas: por dónde empezar</h2>
<p>Antes de buscar la respuesta exacta, repasa esta lista de comprobación.</p>
<ol>
<li>¿Todavía puedes abrir <code>wp-admin</code>? Si es así, casi todo se resuelve desde la página Ajustes del plugin.</li>
<li>Lee los avisos de arriba. El plugin explica el resultado de las acciones con mensajes en recuadros coloreados.</li>
<li>Recuerda lo último que cambiaste: una regla de hardening, una política, un límite.</li>
<li>Si existe un botón <strong>Verificar ahora</strong>, úsalo antes de intentar adivinar.</li>
<li>Si ya no entras en el sitio, prepara el acceso FTP o el gestor de archivos del hosting.</li>
</ol>
<h2>Accesos y bloqueos</h2>
<h3>Me he bloqueado yo solo: ¿qué hago?</h3>
<p>Si todavía tienes acceso a WordPress, por ejemplo desde el teléfono con datos móviles, abre la pestaña <strong>IP bloqueadas</strong>. Busca tu IP y pulsa <strong>Desbloquear</strong>. Si tu IP no está en la lista pero estás bloqueado (puede venir de la lista de seguridad opcional), ve a la pestaña <strong>General</strong>, sección «Anulaciones locales de IP»: escribe la IP, elige «Desbloquear siempre (unban)» y pulsa <strong>Guardar anulación</strong>. Luego, en la pestaña <strong>General</strong>, pulsa <strong>Añadir a la whitelist</strong>.</p>
<p>Si también estás bloqueado desde el sitio, y ves un error 403, entra por FTP y abre <code>.htaccess</code>. Quita la línea con tu IP, o todo el bloque entre <code># BEGIN Cisilino Site Defense Network</code> y <code># END Cisilino Site Defense Network</code>.</p>
<p><strong>Atención:</strong> la modificación a mano es temporal. El bloqueo se vuelve a escribir desde la misma fuente en el siguiente evento: un inicio de sesión fallido, una sincronización o el ciclo cada 15 minutos. En cuanto estés dentro, usa <strong>Desbloquear</strong> y la whitelist.</p>
<h3>¿Por qué la whitelist no me ha desbloqueado?</h3>
<p>La whitelist solo evita que los inicios de sesión fallidos se cuenten. No quita los bloqueos ya presentes. Para quitar un bloqueo hace falta <strong>Desbloquear</strong>, que crea una anulación permanente de desbloqueo en este sitio.</p>
<h3>Un usuario legítimo ha sido bloqueado</h3>
<p>El contador de intentos es acumulativo por IP y no se reinicia solo. Incluso errores dispersos en semanas pueden llegar al umbral, que por defecto es 10. Desbloquea la IP y ponla en la whitelist, o sube el umbral en <strong>Ajustes remotos</strong>, donde el campo es «Umbral de bloqueo local (intentos fallidos)».</p>
<h3>El bloqueo de una IP no termina nunca</h3>
<p>Un bloqueo local no vence. Un bloqueo manual vence con la duración elegida, de 1 hora a 7 días. Si elegiste «Permanente (hasta que lo quites)», no vence. Un bloqueo recibido del panel desaparece cuando el panel lo quita de la lista. Un desbloqueo con tiempo, al vencer, hace volver el bloqueo si la fuente original todavía está ahí. Para un desbloqueo definitivo usa <strong>Desbloquear</strong>, que es permanente.</p>
<h3>Detrás de un proxy o una CDN los bloqueos son extraños</h3>
<p>El plugin lee la IP solo desde <code>REMOTE_ADDR</code> e ignora la cabecera <code>X-Forwarded-For</code>, porque se puede falsificar. Mira la frase «Tu IP actual es …» bajo el campo <strong>Dirección IP</strong> de la pestaña <strong>General</strong>. Si no es tu IP pública, el plugin está viendo la dirección del proxy. En ese caso evita bloquear o poner en whitelist esa dirección, hasta que hayas aclarado la situación con quien gestiona el proxy.</p>
<h2>Errores tras las reglas en .htaccess</h2>
<p>Esta parte de la resolución de problemas trata las reglas escritas en el archivo del servidor.</p>
<h3>El sitio da error 500 tras guardar el hardening</h3>
<p>El plugin no crea una copia de <code>.htaccess</code> y no comprueba la sintaxis después de escribir. Un error, o una regla que el servidor no acepta, se ve de inmediato como error 500.</p>
<ol>
<li>Entra por FTP o desde el gestor de archivos.</li>
<li>Haz una copia de <code>.htaccess</code>.</li>
<li>Elimina el bloque entre <code># BEGIN Cisilino Site Defense Network - Hardening</code> y <code># END Cisilino Site Defense Network - Hardening</code>.</li>
<li>Recarga el sitio, luego corrige los ajustes en la pestaña <strong>Hardening / IDS</strong>.</li>
</ol>
<p>El bloque del hardening solo se reescribe cuando guardas la pestaña o reactivas el plugin, no en el ciclo cada 15 minutos. Tu modificación a mano, por tanto, se queda.</p>
<h3>Escribí una ruta personalizada y todo el sitio da 403</h3>
<p>En la casilla de rutas personalizadas cada línea es texto literal, sin comodines. La regla bloquea cada dirección que contenga esa cadena. Escribir <code>/</code> o <code>wp</code> bloquea todo, incluido <code>wp-admin</code>. Quita por FTP el bloque del hardening, como arriba. Luego, en la pestaña <strong>Hardening / IDS</strong>, corrige o vacía la casilla «Rutas personalizadas para bloquear» y guarda. Si no la corriges, un nuevo guardado o una reactivación del plugin reescribe la regla y el sitio vuelve a dar 403.</p>
<h3>Aparece «Ajustes guardados, pero la escritura en .htaccess ha fallado»</h3>
<p>El archivo <code>.htaccess</code> no se puede escribir: revisa los permisos. Las reglas de ese bloque no están activas. Siguen activos, en cambio, los dos interruptores que actúan en PHP, es decir XML-RPC y <code>?author=N</code>.</p>
<h3>La prueba dice que el bloqueo de PHP en uploads no funciona</h3>
<p>En la pestaña <strong>Test</strong>, el recuadro «Verificar bloqueo de ejecución PHP en uploads» señala si el archivo de prueba se ha ejecutado. Comprueba que el hosting permita <code>.htaccess</code> en esa carpeta y que no exista un bloqueo <code>&lt;Directory&gt;</code> más específico. En nginx las reglas no tienen efecto. La regla cubre solo la carpeta <code>uploads</code> estándar.</p>
<h3>Un plugin o el tema han dejado de funcionar</h3>
<p>Apaga la última regla que activaste y guarda. Los casos más comunes: el bloqueo del PHP en <code>uploads</code> rompe los plugins que escriben archivos PHP ahí; la desactivación de XML-RPC detiene apps y funciones remotas; el bloqueo de subidas ejecutables rechaza también archivos como <code>.svg</code>.</p>
<h2>Usuarios, autores y visitantes</h2>
<h3>Un autor ya no puede publicar: «tu cuenta está suspendida»</h3>
<p>El rate limiting ha visto demasiado contenido creado en poco tiempo. Por defecto el límite es 150 contenidos en 300 segundos, con suspensión de 3600 segundos. Desde la pestaña <strong>Rate limiting</strong>, en la tabla de usuarios suspendidos, pulsa <strong>Revocar suspensión</strong>. O espera al vencimiento.</p>
<p>Apagar «Rate limit activo» no quita una suspensión ya en curso. Antes de una importación grande sube el límite N o desactiva el límite.</p>
<h3>Un visitante ve «Demasiados envíos»</h3>
<p>Un invitado ha enviado demasiados comentarios o formularios en poco tiempo: por defecto más de 2 en 60 segundos, y el bloqueo dura 3600 segundos. El bloqueo es por IP, así que puede afectar a varias personas en la misma oficina. Sube el valor N de la sección de visitantes. No existe una lista de excepciones.</p>
<h3>No consigo crear un usuario editor o administrador</h3>
<p>Es intencionado. La política predeterminada de <strong>Registro de usuarios</strong> es «Solo roles de bajo privilegio» y no hace excepciones, ni siquiera para ti. Pasa de forma temporal a «Sin restricción», crea el usuario, luego vuelve atrás. Con «Ningún registro (exclusivo)» nadie puede crear usuarios. Revisa también el rol predeterminado en Ajustes &gt; Generales de WordPress: si es un rol prohibido, los registros se rechazan.</p>
<h2>Conexión al panel</h2>
<h3>La conexión al panel no aparece</h3>
<p>El estado está en el recuadro «Estado de la conexión al panel:» en lo alto de la pestaña <strong>Ajustes remotos</strong>. Si el recuadro falta, los campos estaban incompletos: hacen falta Customer code, Clave API y URL del panel. Tras «Guardar y verificar conexión» no aparece un aviso aparte.</p>
<ul>
<li>«URL del panel insegura: se necesita https …»: la dirección debe empezar por <code>https</code>. El plugin rechaza también guardar una URL http.</li>
<li>«Autenticación rechazada por el panel: customer_code o clave API incorrectos.»: revisa los dos valores.</li>
<li>«No se puede alcanzar el panel: …»: problema de red, DNS o certificado.</li>
<li>«Respuesta del panel no válida (no es JSON).»: la dirección no apunta al panel correcto.</li>
</ul>
<p>Si el panel no responde, la protección local sigue funcionando y los datos en cola se envían en el siguiente ciclo. El plugin funciona también sin panel.</p>
<h3>Las actividades no llegan al panel</h3>
<p>En la pestaña <strong>Registro de actividad</strong> mira la tabla de diagnóstico y la fila «pendientes de enviar al panel». Pulsa <strong>Probar a enviar ahora</strong>: el resultado aparece en el diagnóstico. El tope de filas, por defecto 500, borra las más antiguas aunque no se hayan entregado.</p>
<h2>Registro de depuración, integridad y cabeceras</h2>
<h3>El registro de depuración no se enciende</h3>
<p>Hay dos mensajes posibles. «la carpeta de las subidas no se puede escribir»: arregla los permisos de <code>uploads</code>. «los archivos de su carpeta resultan accesibles desde internet»: probable servidor sin <code>.htaccess</code>, como nginx. Bloquea el acceso a la carpeta <code>csdn-debug-*</code> en la configuración del servidor y vuelve a intentarlo. Si se ha detenido por el tope de 200 MB, descarga o elimina los archivos y vuelve a encenderlo.</p>
<h3>La integridad señala «los archivos del plugin no coinciden»</h3>
<p>Si has modificado a mano un archivo del plugin, es normal. En caso contrario, trata el sitio como potencialmente comprometido: reinstala el plugin desde una copia fiable y revisa el resto. Si el mensaje dice que no hay ninguna referencia, reactiva el plugin para que tome una nueva fotografía.</p>
<h3>HSTS no se activa, o no se apaga</h3>
<p>Para activarlo hay que abrir los ajustes del plugin en https, de lo contrario aparece «HSTS NO se ha activado». Guarda siempre desde una página https. Apagar la casilla detiene el envío de la cabecera, pero los navegadores que ya la recibieron la recuerdan durante mucho tiempo.</p>
<h2>Si no encuentras la respuesta</h2>
<p>Si la resolución de problemas no basta, enciende el registro de depuración, reproduce el problema y lee la entrada. Luego abre una conversación en el <a href="https://wordpress.org/support/plugin/cisilino-site-defense-network/" target="_blank" rel="noopener">foro de soporte del plugin</a>: es el lugar para recibir ayuda y ver los problemas ya señalados. No pegues rutas del servidor ni datos sensibles.</p>
<p>Capítulo anterior: <a href="https://www.cisilino.com/es/?p=985">Registro de depuración: los errores PHP en un archivo propio</a>. Capítulo siguiente: <a href="https://www.cisilino.com/es/?p=987">Desactivación, desinstalación y datos personales</a>. Para el índice: <a href="https://www.cisilino.com/es/?p=972">manual CSDN</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/resolucion-problemas-preguntas-frecuentes/">Resolución de problemas y preguntas frecuentes</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/resolucion-problemas-preguntas-frecuentes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Registro de depuración WordPress: errores PHP</title>
		<link>https://www.cisilino.com/es/2026/10/30/registro-depuracion-wordpress-errores-php/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/registro-depuracion-wordpress-errores-php/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:59 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[depuración]]></category>
		<category><![CDATA[errores PHP]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1201</guid>

					<description><![CDATA[<p>Cómo activar el Registro de depuración del plugin CSDN desde la versión 1.0.15: duración, tamaño de los archivos, rotación, descarga y límites.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/registro-depuracion-wordpress-errores-php/">Registro de depuración WordPress: errores PHP</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>El registro de depuración WordPress es una novedad del plugin CSDN desde la versión 1.0.15. Registra los errores PHP del sitio en un archivo propio, sin tocar <code>wp-config.php</code>. Lo activas desde el backend y se apaga solo.</p>
<figure class="wp-block-image size-large"><img decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-log-di-debug.webp" alt="Esquema de WordPress con la pestaña Registro de depuración WordPress del plugin CSDN resaltada" width="1200" height="630"/></figure>
<h2>Dónde se encuentra</h2>
<p>Ve a Ajustes &gt; Cisilino Site Defense Network (punto 1 de la imagen) y abre la pestaña <strong>Registro de depuración</strong> (punto 2). Las secciones son tres:</p>
<ul>
<li>punto 3: «Registro de depuración del sitio», con estado y activación.</li>
<li>punto 4: «Archivos recogidos».</li>
<li>punto 5: «Últimas entradas».</li>
</ul>
<h2>Para qué sirve el registro de depuración WordPress</h2>
<p>Te resulta útil cuando el sitio muestra una página blanca o un error crítico, cuando algo se rompe tras una actualización, o cuando tu hosting no te deja modificar <code>wp-config.php</code> ni leer los logs. Las constantes <code>WP_DEBUG</code> y <code>WP_DEBUG_LOG</code> se definen antes de cargar los plugins, así que un plugin no puede activarlas. Este registro usa un gestor de errores PHP conectado a la carga del plugin.</p>
<p>Este registro se añade, no sustituye nada. Los errores siguen llegando también donde llegaban antes, es decir en <code>debug.log</code> y en el log del servidor. No envía nada al panel.</p>
<h2>Cómo se usa</h2>
<ol>
<li>Abre la pestaña <strong>Registro de depuración</strong>.</li>
<li>Elige <strong>Sigue encendido durante</strong>: <strong>1 hora</strong>, <strong>24 horas</strong> (predeterminado) o <strong>7 días</strong>.</li>
<li>Elige <strong>Tamaño máximo por archivo</strong>.</li>
<li>Pulsa <strong>Encender el registro de depuración</strong>. Lee «Registro de depuración encendido. Se apaga solo al vencer el tiempo elegido; los archivos se quedan.».</li>
<li>Reproduce el problema en el sitio.</li>
<li>Vuelve a la pestaña. Lee «Últimas entradas» o descarga el archivo desde la sección «Archivos recogidos».</li>
<li>Cuando termines pulsa <strong>Apagar el registro de depuración</strong>, o espera al vencimiento. Verás «Registro de depuración apagado. Los archivos recogidos siguen aquí abajo.».</li>
</ol>
<p>El «Estado:» te dice si el registro está «encendido, se apaga el dd/mm/aaaa hh:mm», «apagado (venció el …)» o «apagado». Con el registro encendido puedes cambiar el tamaño con <strong>Guardar tamaño</strong>.</p>
<h3>Archivos recogidos</h3>
<p>La tabla enumera nombre, tamaño y los botones <strong>Descargar</strong> y <strong>Eliminar</strong>. Debajo encuentras <strong>Eliminar todos los archivos</strong>. Antes de borrar el plugin pide confirmación: «¿Eliminar este archivo? La operación no se puede anular.». Para <strong>Eliminar todos los archivos</strong> el texto es «¿Eliminar todos los archivos del registro de depuración? La operación no se puede anular.». Si no hay nada lees «Ningún archivo: el registro nunca se ha encendido o todavía no ha registrado nada.».</p>
<h3>Últimas entradas</h3>
<p>El recuadro muestra las 200 entradas más recientes, de la más nueva a la más vieja. El menú <strong>Todos los niveles</strong> te permite filtrar por Fatal error, Parse error, Recoverable error, Warning, Notice o Deprecated. Luego pulsa <strong>Filtrar</strong>. Para todo lo demás descarga los archivos. Si el filtro no encuentra nada lees «Ninguna entrada con este filtro.».</p>
<p>Una entrada tiene esta forma:</p>
<p><code>[2026-10-29 10:15:03 UTC] Warning: mensaje en /ruta/archivo.php:12 | GET /pagina</code></p>
<ul>
<li>La hora está en UTC, distinta de la hora del sitio que ves en el <a href="https://www.cisilino.com/es/?p=984">Registro de actividad</a>.</li>
<li>Tras la barra vertical encuentras el método y la ruta de la petición, sin cadena de consulta. Desde la línea de comandos o el cron ves «cli/cron».</li>
<li>Un mensaje de varias líneas, como una traza de pila, sigue siendo una sola entrada, con las líneas siguientes sangradas.</li>
<li>Las líneas «Info: registro de depuración activado (usuario N)» e «Info: registro de depuración desactivado (usuario N)» no tienen nivel: con un filtro no aparecen.</li>
</ul>
<h2>Valores predeterminados y límites</h2>
<ul>
<li>Duración del registro de depuración WordPress: 1 hora, 24 horas o 7 días. Otro valor se convierte en 24 horas.</li>
<li>Tamaño por archivo: 1, 5, 10, 25 o 50 MB. El predeterminado es 5 MB. El tamaño elegido se guarda al pulsar <strong>Encender el registro de depuración</strong> o <strong>Guardar tamaño</strong>. Atención: <strong>Apagar el registro de depuración</strong> devuelve el tamaño a 5 MB, porque ese módulo no contiene el menú del tamaño.</li>
<li>Tope total: 200 MB, sumando archivos <code>.log</code> y <code>.zip</code>.</li>
<li>Cada mensaje se trunca a 4000 caracteres.</li>
<li>Registra solo errores PHP: no consultas lentas, errores de JavaScript ni peticiones HTTP.</li>
</ul>
<h2>Ejemplos</h2>
<ul>
<li>Error crítico tras la actualización de un plugin: enciéndelo durante 1 hora, recarga la página, filtra «Fatal error». La entrada indica el archivo y la línea, por ejemplo <code>/…/plugins/xyz/archivo.php:210 | GET /tienda/</code>.</li>
<li>Avisos esporádicos: 24 horas, filtro Warning o Deprecated. Si el archivo se ha rotado, descarga el zip.</li>
<li>Sitio lento sin una causa clara: 7 días con archivos de 25 MB, luego busca Notice y Warning que se repiten.</li>
</ul>
<p>Mantén encendido lo mínimo necesario: a menudo basta 1 hora.</p>
<p><strong>Atención:</strong> los archivos del registro de depuración contienen rutas del servidor y fragmentos de datos. No los compartas en público. Se quedan en el disco también después de apagarlo y después de desinstalar el plugin, que borra las opciones pero no los archivos. Elimínalos tú cuando termines. El tope total es de 200 MB.</p>
<p><strong>Atención:</strong> en servidores nginx el encendido puede rechazarse mientras el servidor no bloquee la carpeta <code>csdn-debug-*</code>. El mensaje es «Registro de depuración no encendido: los archivos de su carpeta resultan accesibles desde internet (probable servidor sin soporte de .htaccess, como nginx). Los registros pueden contener rutas y datos: bloquea el acceso a la carpeta csdn-debug-* en la configuración del servidor y vuelve a intentarlo.». Si no gestionas el servidor, pregunta a quien lo gestione.</p>
<p><strong>Atención:</strong> el registro no ve los errores silenciados con <code>@</code> ni los generados antes de cargar el plugin. Por ejemplo no ve los errores de <code>wp-config.php</code>. El registro de depuración WordPress del plugin no sustituye los logs del servidor.</p>
<h2>Qué pasa entre bastidores</h2>
<p>El registro de depuración WordPress guarda los archivos en una carpeta <code>wp-content/uploads/csdn-debug-</code> seguida de 16 caracteres aleatorios. Dentro hay un <code>index.php</code>, un <code>.htaccess</code> que niega el acceso y el archivo en uso <code>csdn-debug.log</code>. Al encenderse, el plugin escribe un archivo de prueba e intenta leerlo por HTTP. Si responde, se niega a encender el registro.</p>
<p>Cuando el archivo en uso supera el tamaño elegido se cierra, se comprime en <code>.zip</code> y arranca uno nuevo. No se pierde ninguna entrada. El <code>.log</code> original se borra solo después de comprobar el zip. Si la compresión falla, el <code>.log</code> se queda. Las entradas de «Últimas entradas» se leen solo del archivo en uso, así que tras una rotación las antiguas están en los zips.</p>
<p>Antes de rotar, el plugin comprueba el tope de 200 MB. Si se alcanza, el registro se detiene para no sobrescribir nada. Aparece el aviso amarillo: «El registro se ha detenido porque los archivos han alcanzado el tope de espacio (200 MB): para no sobrescribir los datos, deja de escribir. Descarga o elimina los archivos, luego vuelve a encenderlo.». Para reanudar, elimina los archivos y vuelve a encenderlo.</p>
<p>Al vencer, el registro se apaga solo, pero los archivos se quedan. El plugin no los trunca ni los borra nunca: lo haces solo tú con <strong>Eliminar</strong> o <strong>Eliminar todos los archivos</strong>. Para los errores fatales, la entrada se escribe al final de la petición.</p>
<h2>Si el registro de depuración WordPress no funciona</h2>
<ul>
<li>«Registro de depuración no encendido: la carpeta de las subidas no se puede escribir.»: revisa los permisos de la carpeta <code>wp-content/uploads</code>.</li>
<li>El registro no escribe: si la escritura falla, el plugin lo señala con una entrada «Registro de depuración del sitio: …» en los «Últimos intentos» de la pestaña <a href="https://www.cisilino.com/es/?p=984">Registro de actividad</a>.</li>
<li>El registro está detenido por el tope: descarga lo que necesites, elimina los archivos y vuelve a encenderlo.</li>
</ul>
<p>La <a href="https://www.cisilino.com/es/?p=972">guía general del manual</a> explica dónde se ubica esta pestaña. Para entender mejor las constantes de WordPress mira la <a href="https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/" target="_blank" rel="noopener">guía oficial de depuración de WordPress</a>: explica <code>WP_DEBUG</code> y <code>WP_DEBUG_LOG</code>, que este plugin no puede sustituir.</p>
<p>Capítulo anterior: <a href="https://www.cisilino.com/es/?p=984">Registro de actividad</a>. Capítulo siguiente: <a href="https://www.cisilino.com/es/?p=986">Resolución de problemas y preguntas frecuentes</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/registro-depuracion-wordpress-errores-php/">Registro de depuración WordPress: errores PHP</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/registro-depuracion-wordpress-errores-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Registro de actividad WordPress: guía de la pestaña</title>
		<link>https://www.cisilino.com/es/2026/10/30/registro-actividad-wordpress-guia-pestana/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/registro-actividad-wordpress-guia-pestana/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:53 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[audit log]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[registro de actividad]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1200</guid>

					<description><![CDATA[<p>Cómo usar la pestaña Registro de actividad del plugin CSDN: grupos de eventos, filtros, retención, tope de filas, envío al panel y vaciado.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/registro-actividad-wordpress-guia-pestana/">Registro de actividad WordPress: guía de la pestaña</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>El registro de actividad WordPress del plugin CSDN es un diario local de quién hizo qué y cuándo en tu sitio. Registra accesos, usuarios, contenidos, plugins, temas y más. Sirve para reconstruir lo que ha pasado.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-registro-attivita.webp" alt="Esquema de WordPress con la pestaña Registro de actividad WordPress del plugin CSDN resaltada" width="1200" height="630"/></figure>
<h2>Dónde se encuentra</h2>
<p>En el backend ve a Ajustes &gt; Cisilino Site Defense Network (punto 1 de la imagen). Abre la pestaña <strong>Registro de actividad</strong> (punto 2). De arriba abajo encuentras estas secciones:</p>
<ul>
<li>punto 3: «Ajustes del registro de actividad».</li>
<li>punto 4: la fila de estado sobre el formulario, con los contadores de filas.</li>
<li>punto 5: «Diagnóstico del envío al panel».</li>
<li>punto 6: «Actividades registradas», la tabla con los filtros.</li>
<li>punto 7: «Vacía el registro local».</li>
</ul>
<h2>Para qué sirve el registro de actividad WordPress</h2>
<p>Te ayuda a responder preguntas como «¿quién desactivó ese plugin?» o «¿desde qué IP entró ese usuario?». Cada evento es una fila en la tabla de la base de datos del sitio.</p>
<p>No lo confundas con el contador de inicios de sesión fallidos por IP, que sirve para decidir los bloqueos. Son dos datos separados, con reglas de conservación distintas. El intento de inicio de sesión fallido, sin embargo, también aparece aquí, una fila por intento.</p>
<p>Para el histórico largo y las búsquedas serias conviene el panel. El registro local funciona también sin panel. La conexión se configura en <a href="https://www.cisilino.com/es/?p=974">Ajustes remotos</a>.</p>
<h2>Cómo se usa</h2>
<ol>
<li>Abre la pestaña y mira la fila «Filas en el registro local: N — pendientes de enviar al panel: M».</li>
<li>En el formulario elige los ajustes descritos abajo.</li>
<li>Pulsa <strong>Guardar ajustes del registro</strong>. Aparece «Ajustes del registro de actividad guardados.».</li>
<li>Para leer los eventos ve a «Actividades registradas». Elige un grupo en el menú <strong>Todos los grupos</strong>, o escribe en el campo <strong>Usuario, objeto o IP</strong>, y luego pulsa <strong>Filtrar</strong>.</li>
</ol>
<h3>Los ajustes del formulario</h3>
<ul>
<li>«Registra las actividades en este sitio»: si lo apagas, no se escriben filas nuevas. Las antiguas se quedan.</li>
<li>«Retención local (días)»: de 0 a 3650. Con 0 no se borra nunca por antigüedad.</li>
<li>«Tope de filas conservadas»: de 0 a 1.000.000. Con 0 no hay tope.</li>
<li>«Envía las actividades al panel»: requiere la conexión en Ajustes remotos.</li>
<li>«Entrega inmediata»: el envío arranca al final de la petición, sin hacer esperar al visitante. Si lo apagas, el envío solo ocurre con la sincronización cada 15 minutos.</li>
<li>«Qué registrar»: una casilla para cada uno de los 18 grupos de eventos.</li>
</ul>
<h3>Los grupos de eventos</h3>
<p>Los grupos tienen estas etiquetas, idénticas en las casillas de «Qué registrar» y en el menú <strong>Todos los grupos</strong>. Son: Accesos (inicio de sesión, cierre de sesión, intentos fallidos). Usuarios (creación, modificación de perfil, roles, eliminación). Contenidos (artículos, páginas, tipos de contenido personalizados). Categorías y etiquetas. Comentarios. Medios (adjuntos). Plugins (activación, desactivación, instalación, actualización). Temas (cambio de tema, actualización, personalización). Actualizaciones de WordPress. Ajustes de WordPress. Menús de navegación. Widgets. Editor de archivos de temas y plugins desde wp-admin. Exportación de contenidos. Subidas de archivos (incluidas las que no pasan por la biblioteca de medios). Integridad de los archivos del plugin. Ajustes de los plugins (incluidos los de este plugin). Ciclo de vida del plugin (desactivación, desinstalación, vaciado del registro).</p>
<p>Para los ajustes de WordPress se registra solo una selección de opciones principales: <code>blogname</code>, <code>siteurl</code>, <code>admin_email</code>, <code>default_role</code> y <code>active_plugins</code>. Para los demás plugins se ven solo los ajustes declarados con <code>register_setting()</code> o guardados por <code>options.php</code>. El editor de archivos registra el intento, no el resultado.</p>
<h3>Cómo leer la tabla</h3>
<p>Las columnas son Cuándo, Usuario, IP, Grupo, Acción, Detalle y Enviado. Las filas son 50 por página, las más recientes primero. Usa <strong>Anteriores</strong> y <strong>Siguientes</strong> para moverte. Si no hay nada lees «Ninguna actividad registrada (con estos filtros).».</p>
<p>Grupo y Acción aparecen con el nombre en bruto, por ejemplo <code>plugins</code> y <code>deactivated</code>. Quien no está autenticado aparece como «(no autenticado)». En la columna Enviado encuentras la fecha de confirmación del panel, o «—» si la fila sigue en cola. El campo de detalles técnicos no es visible aquí: se lee en el panel.</p>
<p>Un ejemplo de fila: 12/10/2026 09:14:02, usuario mario (administrator), IP <code>203.0.113.5</code>, grupo <code>plugins</code>, acción <code>deactivated</code>.</p>
<h3>Ejemplos de lectura</h3>
<ul>
<li>Grupo «Accesos (inicio de sesión, cierre de sesión, intentos fallidos)» y una IP sospechosa: una serie de <code>failed</code> seguida de un <code>success</code> puede significar que alguien ha adivinado la contraseña.</li>
<li>Una fila <code>users</code> con acción <code>role_changed</code> y un usuario inesperado: comprueba si es una escalada de privilegios.</li>
<li>Una fila del grupo Subidas con un aviso de bloqueo: alguien ha intentado subir un archivo peligroso.</li>
</ul>
<h2>Valores predeterminados del registro de actividad WordPress</h2>
<ul>
<li>Registro encendido, envío al panel encendido, entrega inmediata encendida, todos los grupos activos.</li>
<li>Retención: 30 días. El borrado por antigüedad se hace una vez al día.</li>
<li>Tope de filas: 500. El control se activa cada 100 inserciones, así que la tabla puede superarlo en unas 100 filas.</li>
<li>Si guardas sin marcar ningún grupo, el registro sigue encendido pero no escribe nada.</li>
<li>No registra las visitas normales y no exporta los datos.</li>
</ul>
<p><strong>Atención:</strong> un inicio de sesión fallido guarda el nombre de usuario escrito. Si alguien escribe la contraseña en el campo de usuario, ese texto queda en el registro, que puede ir al panel. El plugin no lo filtra. Tenlo en cuenta cuando compartes o consultas el registro.</p>
<p><strong>Atención:</strong> el tope de filas (por defecto 500) borra las filas más antiguas aunque no se hayan enviado al panel todavía. El tope tiene prioridad sobre la garantía de entrega. En sitios con mucho tráfico no autenticado, 500 filas pueden agotarse pronto. Si necesitas el histórico completo, sube el tope. Ten en cuenta que con 0 quitas el límite de espacio en disco.</p>
<p><strong>Atención:</strong> «Vaciar registro de actividad» es irreversible en local. Primero pide confirmación: «¿Vaciar todo el registro de actividad local? La operación no es reversible.».</p>
<h2>Qué no se guarda</h2>
<p>Las contraseñas en claro nunca se registran. Al modificar un perfil solo se guarda la indicación de que la contraseña cambió. El campo «Clave API» del plugin se muestra como <code>***</code>. Los ajustes de otros plugins cuyo nombre contenga palabras como key, secret, token, password, auth, salt, nonce, license o credential tienen el valor sustituido por «*** (valor no registrado)». Los valores de los ajustes se truncan a 200 caracteres.</p>
<h2>Diagnóstico del envío al panel</h2>
<p>La sección del punto 5 sirve cuando las actividades no llegan al panel. Un envío que falla no da errores visibles: las filas quedan en cola y se reintentan. El único síntoma es el contador «pendientes» que no baja.</p>
<p>La tabla muestra, entre otros valores, «Conexión al panel», «Registro de actividad», «Envío al panel» y «Entrega inmediata». Muestra también «Filas en cola», «Destino de error_log()» y «Último intento de envío». Los valores problemáticos están en rojo. Si el último intento muestra menos filas aceptadas que enviadas, aparece «Filas descartadas por el panel»: esas filas no se reintentan.</p>
<p>Los botones son tres:</p>
<ul>
<li><strong>Probar a enviar ahora</strong>: hace un envío de prueba al instante. El resultado está en la tabla.</li>
<li><strong>Activar registro detallado</strong> (luego <strong>Desactivar registro detallado</strong>): registra también los envíos correctos.</li>
<li><strong>Vaciar registro de diagnóstico</strong>: borra solo el listado «Últimos intentos», que conserva como máximo 25 entradas. Aparece solo si hay entradas.</li>
</ul>
<h2>Qué pasa entre bastidores</h2>
<p>Al final de la petición el plugin cierra la respuesta al visitante, cuando el servidor lo permite. Luego envía las filas al panel en lotes de máximo 200, desde las más antiguas. Una fila se cuenta como entregada solo cuando el panel confirma su recepción. Una sincronización cada 15 minutos hace de red de seguridad.</p>
<p>La retención por antigüedad borra las filas viejas una vez al día. Si el envío está encendido y el panel configurado, borra solo las ya confirmadas. En caso contrario borra solo por antigüedad.</p>
<p>El vaciado intenta primero enviar lo atrasado, luego borra todo. Registra el evento de vaciado, que se convierte en la primera fila del registro nuevo. No envía ninguna orden de borrado al panel: el histórico ya enviado se queda ahí. Tras el vaciado lees «Registro de actividad local vaciado. El histórico ya enviado al panel no se ha tocado.». Si había filas nunca entregadas, un aviso en negrita te dice cuántas se perdieron.</p>
<h2>Si el registro de actividad WordPress no envía</h2>
<ul>
<li>El contador «pendientes» no baja: abre el diagnóstico, mira el último intento y el código HTTP, luego pulsa «Probar a enviar ahora».</li>
<li>Recuadro amarillo con el panel que no confirma: el panel podría no estar actualizado. Las filas quedan en cola y no se pierde nada.</li>
<li>Conexión «NO configurada»: sin customer code, clave API y URL no se envía nada. Vuelve a <a href="https://www.cisilino.com/es/?p=974">Ajustes remotos</a>.</li>
</ul>
<p>Para una guía más amplia sobre las buenas prácticas de registro, lee la <a href="https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html" target="_blank" rel="noopener">guía de OWASP sobre logging</a>: explica qué conviene registrar y qué evitar.</p>
<p>Vuelve al <a href="https://www.cisilino.com/es/?p=972">capítulo 1, el índice del manual</a>. Capítulo anterior: <a href="https://www.cisilino.com/es/?p=983">Rate limiting</a>. Capítulo siguiente: <a href="https://www.cisilino.com/es/?p=985">Registro de depuración</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/registro-actividad-wordpress-guia-pestana/">Registro de actividad WordPress: guía de la pestaña</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/registro-actividad-wordpress-guia-pestana/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Rate limiting WordPress: límites de autores y visitantes</title>
		<link>https://www.cisilino.com/es/2026/10/30/rate-limiting-wordpress-limites-autores-visitantes/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/rate-limiting-wordpress-limites-autores-visitantes/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:51 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[rate limiting]]></category>
		<category><![CDATA[suspensión de usuarios]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1199</guid>

					<description><![CDATA[<p>Cómo usar la pestaña Rate limiting del plugin CSDN: límites para autores y visitantes, valores predeterminados, suspensiones y revocación.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/rate-limiting-wordpress-limites-autores-visitantes/">Rate limiting WordPress: límites de autores y visitantes</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>El rate limiting WordPress que ofrece CSDN pone límites a los abusos de escritura. Por un lado están los autores que publican demasiado contenido en poco tiempo, por ejemplo con una cuenta comprometida. Por otro están los visitantes que envían demasiados comentarios o formularios de contacto. Cada límite se activa y se ajusta por separado.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-rate-limiting.webp" alt="Esquema de WordPress con la pestaña Rate limiting WordPress del plugin CSDN resaltada" width="1200" height="630"/></figure>
<h2>Dónde se encuentra</h2>
<p>Ve a <strong>Ajustes</strong> y elige <strong>Cisilino Site Defense Network</strong> (punto 1 de la imagen). Abre la pestaña «Rate limiting» (punto 2). Para guardar hace falta el permiso <code>manage_options</code>; en multisitio hace falta <code>manage_network_options</code>.</p>
<p>Las secciones son cuatro. El punto 3 es «Cómo funciona, en concreto: qué se cuenta». El punto 4 es «1. Autores: publicaciones demasiado frecuentes». El punto 5 es «2. Visitantes: comentarios y formularios de contacto». El punto 6 es «Usuarios actualmente suspendidos». Los valores de tiempo están todos en segundos.</p>
<h2>Para qué sirve</h2>
<p>El límite sobre los autores detiene a una cuenta que publica a ráfagas, antes de que llene el sitio de contenido. El límite sobre los visitantes frena a quien inunda comentarios y formularios. El código conoce también un tercer límite, el correo obligatorio. Lo encuentras en la pestaña «Registro de usuarios», descrita en el <a href="https://www.cisilino.com/es/?p=982">capítulo anterior</a>.</p>
<h2>Cómo se usa</h2>
<p>Así se configura el rate limiting WordPress, sección por sección.</p>
<h3>Qué se cuenta (punto 3)</h3>
<p>El recuadro informativo explica las reglas. Para los autores, el control se activa cuando WordPress guarda un artículo o una página. El plugin cuenta cuántos artículos y páginas de ese autor tienen fecha de creación o publicación en los últimos T segundos. Si son más de N, el autor se suspende. El guardado que supera el límite se completa: la suspensión bloquea los siguientes.</p>
<p>No cuentan los plugins y los temas, los inicios de sesión, los cambios en contenidos más antiguos que la ventana, los borradores automáticos, las revisiones, la papelera, los medios, los comentarios y los demás tipos de contenido. Los entornos temporales, como el de prueba del Plugin Check, se ignoran.</p>
<p><strong>Atención:</strong> el ejemplo escrito en ese recuadro todavía cita N=3. Es un texto antiguo. El valor predeterminado real es 150 contenidos en 5 minutos, desde la versión 1.0.13.</p>
<h3>Autores (punto 4)</h3>
<ol>
<li>Marca «Rate limit activo» para limitar las publicaciones de los autores.</li>
<li>Decide si quieres mantener «Alert via email»: recibes un correo cuando se suspende un autor.</li>
<li>Define «N: contenidos permitidos», de 1 a 1000. Predeterminado 150.</li>
<li>Define «T: ventana (segundos)», de 10 a 86400. Predeterminado 300, es decir 5 minutos.</li>
<li>Define «S: suspensión (segundos)», de 60 a 2592000. Predeterminado 3600, es decir 1 hora.</li>
<li>Pulsa <strong>Guardar ajustes de rate limiting</strong>.</li>
</ol>
<p>El correo va a la dirección de administrador de Ajustes &gt; Generales. Contiene el usuario, los contenidos en la ventana, el vencimiento y el listado de hasta 20 contenidos recientes para revisar. La suspensión no modifica esos contenidos.</p>
<h3>Visitantes (punto 5)</h3>
<ol>
<li>Marca «Rate limit activo» para limitar los envíos de los invitados.</li>
<li>El «Alert via email» está desactivado por defecto. En un sitio expuesto puede generar muchos correos. Llega a la misma dirección de administrador de Ajustes &gt; Generales, una vez por cada bloqueo.</li>
<li>«N: envíos permitidos», de 1 a 100. Predeterminado 2.</li>
<li>«T: ventana (segundos)», de 5 a 3600. Predeterminado 60.</li>
<li>«S: bloqueo de IP (segundos)», de 60 a 2592000. Predeterminado 3600.</li>
</ol>
<p>El límite afecta solo a quien no ha iniciado sesión. Cuenta los envíos por IP y por tipo, comentarios o formularios. Un bloqueo en los comentarios no bloquea los formularios. Los formularios de contacto cubiertos son los de Contact Form 7. El comentario rechazado muestra «Demasiados envíos» con error 429.</p>
<p>Si un valor queda fuera de los límites, el plugin lo lleva al más cercano permitido. El guardado muestra «Ajustes del rate limiting guardados. Los valores fuera de los límites permitidos se han llevado al más cercano permitido.»</p>
<h2>Rate limiting WordPress: suspensiones y bloqueos</h2>
<p>Un autor suspendido mantiene su rol y puede usar el resto del panel. Pierde, sin embargo, los permisos de crear y publicar artículos y páginas. Desaparecen «Añadir artículo» y las opciones de las páginas, y si abre esas pantallas recibe «permiso denegado». En el escritorio aparece un aviso que no se puede cerrar.</p>
<p><strong>Atención:</strong> la suspensión de autores afecta también a los administradores. Un administrador suspendido pierde la creación y la publicación, pero puede seguir abriendo los Ajustes y revocar la suspensión él mismo. No existe una lista de excepciones para usuarios, roles o IP: la whitelist de IP de la pestaña General no exime del rate limiting.</p>
<p><strong>Atención:</strong> el bloqueo de los visitantes es por IP. Varias personas detrás de la misma IP, como una oficina, pueden quedar bloqueadas juntas. En ese caso sube N. El plugin lee solo la dirección de conexión (<code>REMOTE_ADDR</code>) y no las cabeceras de proxy o CDN: detrás de un proxy inverso o una CDN todos los visitantes pueden aparecer con la misma IP y bloquearse entre ellos.</p>
<h3>Cómo revocar una suspensión</h3>
<p>Tienes dos opciones.</p>
<ol>
<li>Espera. La suspensión termina sola tras S segundos.</li>
<li>En la sección del punto 6, «Usuarios actualmente suspendidos», pulsa <strong>Revocar suspensión</strong> en la fila del usuario. Verás «Suspensión revocada: el usuario puede volver a crear y publicar contenido.» Si la tabla está vacía lees «Ningún usuario suspendido.»</li>
</ol>
<p>La tabla muestra como máximo 100 usuarios. Los avisos del escritorio tienen los enlaces «Revoca la suspensión» y «Revisa y revoca», que llevan a la misma pestaña.</p>
<p>Apagar «Rate limit activo» no quita una suspensión ya en curso. Para quitarla debes revocarla o esperar el vencimiento.</p>
<h2>Qué pasa entre bastidores</h2>
<p>La suspensión es un dato guardado en el usuario, con la fecha de vencimiento. Para los invitados, cada envío se registra durante 24 horas en una tabla del plugin y luego se cuenta dentro de la ventana. Si llegan dos peticiones juntas, alguna de más puede pasar. Las suspensiones y los bloqueos llegan al Registro de actividad, si está activo y si los grupos Usuarios y Comentarios están habilitados.</p>
<p><strong>Atención:</strong> una importación legítima de muchos contenidos puede activar el límite de los autores. Antes de una migración desactiva el límite o sube N.</p>
<h2>Ejemplos de rate limiting WordPress</h2>
<ul>
<li>Blog con un solo autor: puedes bajar N a 10 o 20 con T=300. Detectas antes una cuenta comprometida. Son valores de prueba, no una regla del plugin.</li>
<li>Redacción que duplica o importa páginas: mantén 150/300 o más.</li>
<li>Oficinas con IP compartida: sube los envíos permitidos de los visitantes a 3 o 5.</li>
</ul>
<p>Conversiones útiles: 300 segundos son 5 minutos, 3600 son 1 hora, 86400 son 1 día. Para profundizar en el tema general, lee la guía de OWASP <a href="https://owasp.org/www-community/controls/Blocking_Brute_Force_Attacks" target="_blank" rel="noopener">Blocking Brute Force Attacks</a>, que explica por qué limitar los intentos repetidos.</p>
<p>Anterior: <a href="https://www.cisilino.com/es/?p=982">Registro de usuarios: quién puede crear cuentas</a>. Siguiente: <a href="https://www.cisilino.com/es/?p=984">Registro de actividad: qué ha pasado en el sitio</a>. Para el índice general ve al <a href="https://www.cisilino.com/es/?p=972">capítulo 1 del manual</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/rate-limiting-wordpress-limites-autores-visitantes/">Rate limiting WordPress: límites de autores y visitantes</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/rate-limiting-wordpress-limites-autores-visitantes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Registro de usuarios WordPress: quién puede crear cuentas</title>
		<link>https://www.cisilino.com/es/2026/10/30/registro-usuarios-wordpress-quien-puede-crear-cuentas/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/registro-usuarios-wordpress-quien-puede-crear-cuentas/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:49 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[registro de usuarios]]></category>
		<category><![CDATA[roles de WordPress]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1198</guid>

					<description><![CDATA[<p>Cómo usar la pestaña Registro de usuarios del plugin CSDN: política, roles permitidos, correo obligatorio y los límites de la protección.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/registro-usuarios-wordpress-quien-puede-crear-cuentas/">Registro de usuarios WordPress: quién puede crear cuentas</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>La pestaña «Registro de usuarios» decide quién puede crear nuevas cuentas en tu sitio y con qué rol. Es la defensa contra los administradores ocultos, es decir cuentas creadas a escondidas para volver al sitio después de un ataque. El registro de usuarios WordPress se gestiona desde aquí. En este capítulo ves la política de registro, los roles permitidos y el correo obligatorio.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-registrazione-utenti.webp" alt="Esquema de WordPress con la pestaña Registro de usuarios WordPress del plugin CSDN resaltada" width="1200" height="630"/></figure>
<h2>Dónde se encuentra</h2>
<p>En el menú de WordPress abre <strong>Ajustes</strong> y luego <strong>Cisilino Site Defense Network</strong> (punto 1 de la imagen). Elige la pestaña «Registro de usuarios» (punto 2). Para guardar hace falta el permiso <code>manage_options</code>; en multisitio hace falta <code>manage_network_options</code>.</p>
<p>Las secciones son tres. El punto 3 es «Política de registro». El punto 4 es «Roles permitidos (solo nivel \»roles de bajo privilegio\»)». El punto 5 es «Correo obligatorio».</p>
<h2>Para qué sirve</h2>
<p>La política del registro de usuarios WordPress vale para toda vía de creación: el panel wp-admin, la REST API, XML-RPC, WP-CLI y cualquier plugin o tema que use las funciones de WordPress para crear usuarios. El control se hace en PHP, sin tocar el archivo <code>.htaccess</code>.</p>
<h2>Cómo se usa</h2>
<h3>Política de registro (punto 3)</h3>
<p>Elige un solo nivel entre tres. No se suman.</p>
<ul>
<li>«Sin restricción (desactivado)»: el módulo está apagado y WordPress se comporta como siempre.</li>
<li>«Solo roles de bajo privilegio (nunca administrador/editor/autor)»: es el nivel predeterminado. Valen los roles permitidos del punto 4.</li>
<li>«Ningún registro (exclusivo)»: no se puede crear ningún usuario nuevo.</li>
</ul>
<h3>Roles permitidos (punto 4)</h3>
<p>Vale solo para el nivel de roles de bajo privilegio. Puedes marcar <code>subscriber</code> (marcado por defecto), <code>contributor</code> y <code>customer</code> (útil con WooCommerce). Las casillas <code>administrator</code>, <code>editor</code>, <code>author</code> y <code>shop_manager</code> están siempre desactivadas, con el texto «nunca permitido».</p>
<h3>Correo obligatorio (punto 5)</h3>
<p>La casilla «No crear usuarios sin una dirección de correo válida» está activa por defecto. Impide la creación de usuarios sin un correo válido, desde cualquier vía. No afecta a los usuarios que ya existen. Este ajuste se guarda junto con los del rate limiting, pero se gestiona aquí.</p>
<p>Al final pulsa <strong>Guardar política de registro</strong>. Verás «Política de registro de usuarios guardada.» El guardado llega al Registro de actividad, con la etiqueta «Registro de usuarios».</p>
<h2>Registro de usuarios WordPress: valores predeterminados y límites</h2>
<ul>
<li>La política predeterminada es «Solo roles de bajo privilegio», activa incluso si nunca has guardado nada.</li>
<li>El rol permitido de partida es solo <code>subscriber</code>.</li>
<li>Los roles prohibidos se descartan siempre, incluso si alguien intenta enviarlos a mano.</li>
<li>El listado de roles es fijo: no muestra los roles personalizados de tu sitio.</li>
<li>No existen listas de dominios de correo, captcha ni controles antispam en los registros.</li>
</ul>
<p><strong>Atención:</strong> con «Ningún registro (exclusivo)» nadie puede crear usuarios, ni siquiera el administrador. La opción «Añadir nuevo usuario» desaparece del menú y abrir <code>user-new.php</code> a mano da un error 403. Si en el nivel de roles de bajo privilegio quitas la marca a todos los roles, la lista queda vacía y no se permite ningún usuario. Aquí, sin embargo, la opción de menú y la página siguen visibles: el error 403 llega solo al intentar crear el usuario.</p>
<p>Con el nivel predeterminado no puedes crear un editor o un autor ni siquiera como administrador. El plugin no prevé excepciones para quien ya está conectado. Para crear un usuario con un rol alto, pasa de forma temporal a «Sin restricción», crea el usuario y luego vuelve atrás.</p>
<p>Revisa también el «Rol predeterminado para los nuevos usuarios» en Ajustes &gt; Generales de WordPress. Si es un rol prohibido, como Editor, cada registro sin rol explícito se rechaza.</p>
<h2>Qué pasa entre bastidores</h2>
<p>El control principal actúa sobre el filtro <code>pre_insert_user_data</code>, solo al crear un usuario. Los cambios en usuarios existentes siempre pasan. Un intento rechazado muestra el título «Registro no permitido» con error 403. En la REST API recibes un error JSON 403 en lugar de la página.</p>
<p>Con cualquier política activa, el plugin quita el método XML-RPC <code>wp.newUser</code>. Con la política exclusiva fuerza también a falso la opción «Cualquiera puede registrarse» de WordPress. Con el nivel de roles bajos, esa opción queda como tú la elegiste.</p>
<p>Hay también una red de seguridad después de la creación. Si una cuenta nace de todos modos y viola la política, el plugin le quita de inmediato el rol y escribe un evento en el Registro de actividad. La cuenta no se borra, para que puedas examinarla.</p>
<p><strong>Atención:</strong> un plugin o un tema comprometido que escriba directamente en la tabla de usuarios con un INSERT en la base de datos no pasa por ningún filtro. Ningún plugin PHP puede detenerlo. El registro de usuarios WordPress protegido por esta pestaña es una barrera fuerte, pero no es absoluta.</p>
<h2>Ejemplos</h2>
<ul>
<li>Sitio escaparate sin usuarios públicos: elige «Ningún registro (exclusivo)».</li>
<li>Sitio con suscriptores o comentarios: deja el nivel predeterminado con <code>subscriber</code>.</li>
<li>Tienda con WooCommerce: añade <code>customer</code>.</li>
<li>Necesitas añadir un colaborador con un rol alto: usa «Sin restricción» solo el tiempo necesario.</li>
</ul>
<h2>Si algo no funciona</h2>
<p>Si un registro se rechaza con el mensaje sobre el rol no permitido, revisa el rol predeterminado de WordPress y los roles marcados en el punto 4. El Registro de actividad te dice si una cuenta ha perdido el rol por la red de seguridad. Para entender mejor los roles, lee la página <a href="https://wordpress.org/documentation/article/roles-and-capabilities/" target="_blank" rel="noopener">roles y capacidades en la documentación de WordPress</a>. Enumera qué puede hacer cada rol.</p>
<p>Anterior: <a href="https://www.cisilino.com/es/?p=981">Paranoic Hardening: cabeceras de seguridad y sesión administrativa</a>. Siguiente: <a href="https://www.cisilino.com/es/?p=983">Rate limiting: límites para autores y visitantes</a>. Para el índice general ve al <a href="https://www.cisilino.com/es/?p=972">capítulo 1 del manual</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/registro-usuarios-wordpress-quien-puede-crear-cuentas/">Registro de usuarios WordPress: quién puede crear cuentas</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/registro-usuarios-wordpress-quien-puede-crear-cuentas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Paranoic Hardening: cabeceras y HSTS</title>
		<link>https://www.cisilino.com/es/2026/10/30/paranoic-hardening-cabeceras-hsts/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/paranoic-hardening-cabeceras-hsts/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:46 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[cabeceras de seguridad]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[HSTS]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1197</guid>

					<description><![CDATA[<p>Cómo usar la pestaña Paranoic Hardening del plugin CSDN: cabeceras HTTP, HSTS, verificación y autologout, con el orden de activación y los riesgos.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/paranoic-hardening-cabeceras-hsts/">Paranoic Hardening: cabeceras y HSTS</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>La pestaña «<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Paranoic Hardening» del plugin CSDN reúne las opciones más delicadas: las cabeceras de seguridad HTTP, HSTS y el cierre de sesión automático de los administradores inactivos. Aquí cambias el comportamiento del navegador de quien visita el sitio, no solo el del servidor. Por eso está todo desactivado por defecto.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-paranoic-hardening.webp" alt="Esquema de WordPress con la pestaña Paranoic Hardening del plugin CSDN resaltada" width="1200" height="630"/></figure>
<h2>Dónde se encuentra</h2>
<p>En el menú lateral de WordPress ve a <strong>Ajustes</strong> y elige <strong>Cisilino Site Defense Network</strong> (punto 1 de la imagen). Abre la pestaña «<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Paranoic Hardening» (punto 2). Para guardar hace falta el permiso <code>manage_options</code>; en multisitio hace falta <code>manage_network_options</code>.</p>
<p>La pestaña tiene cuatro secciones. En el punto 3 encuentras «Paranoic Hardening — Cabeceras de seguridad HTTP». En el punto 4 está «HTTP Strict Transport Security (HSTS)». El punto 5 es «Verificación de cabeceras de seguridad». El punto 6 es «Autologout de administradores por inactividad».</p>
<h2>Para qué sirve</h2>
<p>Las cabeceras son instrucciones que el sitio envía al navegador junto con cada página. El plugin las envía con el hook <code>send_headers</code> de WordPress, sin tocar el archivo <code>.htaccess</code>. Por eso no arriesgas un error 500 y funcionan también sin <code>mod_headers</code>.</p>
<p>Las cabeceras afectan solo al sitio público. Nunca se envían en el área de administración. El plugin no ofrece una Content-Security-Policy y no envía X-XSS-Protection.</p>
<h2>Cómo se usa el Paranoic Hardening</h2>
<h3>Cabeceras de seguridad HTTP (punto 3)</h3>
<ul>
<li><strong>X-Content-Type-Options</strong> envía <code>nosniff</code>. El navegador ya no «adivina» el tipo de los archivos. El riesgo es prácticamente nulo.</li>
<li><strong>X-Frame-Options</strong> envía <code>SAMEORIGIN</code>. El sitio ya no puede incorporarse en un <code>&lt;iframe&gt;</code> de otro dominio. Si un sitio aliado muestra tus páginas, dejará de hacerlo.</li>
<li><strong>Referrer-Policy</strong> envía <code>strict-origin-when-cross-origin</code>. Hacia otros dominios viaja solo el dominio, no la ruta. Las estadísticas de terceros que quieran el referente completo no lo recibirán.</li>
</ul>
<p>Marca las casillas que necesites y pulsa <strong>Guardar Paranoic Hardening</strong>. Verás el aviso «Ajustes de Paranoic Hardening guardados y aplicados.» Las casillas que no marcas se guardan como desactivadas.</p>
<h3>HSTS (punto 4)</h3>
<p>HSTS le dice al navegador que use siempre https con tu dominio. Hay tres casillas: «Activar HSTS», «includeSubDomains» y «Preload». La cabecera enviada tiene <code>max-age=31536000</code>, es decir un año. El valor es fijo y no se cambia.</p>
<p>El plugin rechaza la activación si la página no se abrió en https. En ese caso guarda el resto y muestra un aviso rojo: «Ajustes guardados, pero HSTS NO se ha activado: esta petición no llegó en https. Abre el panel en https y vuelve a intentarlo.» Si la página está en http, las tres casillas también están desactivadas.</p>
<p>Si apagas «Activar HSTS», al guardar también se vacían «includeSubDomains» y «Preload». Si reactivas HSTS, debes volver a marcarlas.</p>
<h3>Verificación de cabeceras de seguridad (punto 5)</h3>
<p>Pulsa <strong>Verificar ahora</strong>. El plugin hace una petición real a la portada del sitio y comprueba qué cabeceras llegan de verdad. El resultado aparece en el recuadro, con la fecha de la última prueba.</p>
<ul>
<li>Verde: «Todas las cabeceras esperadas están presentes en la respuesta real del sitio.»</li>
<li>Rojo: las cabeceras activas que no llegaron. Puede ser un proxy, una CDN u otro plugin que las quita. HSTS aparece como ausente también si la dirección de la portada es http y no lleva a https, porque el plugin la envía solo en peticiones https.</li>
<li>Azul: «Ninguna cabecera activa para verificar: activa al menos una opción aquí arriba y guarda.»</li>
<li>Rojo con «La petición de verificación ha fallado»: la petición no se completó.</li>
</ul>
<p>La prueba comprueba la presencia de la cabecera, no su valor. No se ejecuta sola: tienes que pulsarla tú.</p>
<h3>Autologout de administradores (punto 6)</h3>
<p>Esta sección del Paranoic Hardening tiene su propio botón, <strong>Guardar autologout de administradores</strong>. Marca «Activar» para desconectar a los administradores inactivos. Luego define el «Tiempo de inactividad (segundos)». Si el navegador bloquea el <code>localStorage</code> (por ejemplo en navegación privada), el control nunca se activa y no te desconectas.</p>
<p>El valor predeterminado es 900, es decir 15 minutos. El mínimo es 60 y el máximo es 86400. Si escribes un número fuera de los límites, el plugin lo lleva al valor permitido más cercano. Por ejemplo 30 se convierte en 60. El aviso sigue en verde, así que vuelve a leer el número en el campo tras guardar.</p>
<p>Se desconecta solo a los usuarios con el permiso <code>manage_options</code>. El editor y el autor no se ven afectados. La inactividad se mide en el navegador: cuentan el ratón, el teclado, el scroll y el tacto. La sesión se cierra como con «Salir», y los cambios no guardados en un formulario abierto se pierden.</p>
<h2>Orden recomendado de activación</h2>
<ol>
<li>Abre el panel en https.</li>
<li>Activa X-Content-Type-Options, guarda y pulsa «Verificar ahora».</li>
<li>Activa Referrer-Policy, guarda y verifica.</li>
<li>Comprueba que ningún sitio incorpore el tuyo, luego activa X-Frame-Options, guarda y verifica.</li>
<li>Activa el autologout con un tiempo generoso, por ejemplo 1800. Redúcelo solo después de unos días.</li>
<li>Por último, valora HSTS, sin includeSubDomains y sin Preload.</li>
</ol>
<p>Activa una opción cada vez. Si algo se rompe, sabrás de inmediato cuál fue.</p>
<h2>El riesgo de HSTS, includeSubDomains y Preload</h2>
<p><strong>Atención:</strong> HSTS no se deshace desde el sitio. Si quitas la marca, el plugin deja de enviar la cabecera, pero los navegadores que ya la recibieron la recuerdan hasta que vence. El plugin nunca envía <code>max-age=0</code>, así que no tiene un «anular». Lo dice también el aviso de la pestaña: los efectos pueden seguir visibles durante semanas o meses.</p>
<p>Con HSTS activo el navegador rechaza toda conexión no https al dominio. Si el certificado vence o se rompe, el navegador ya no muestra ni siquiera la pantalla de «continuar de todos modos». El sitio queda inalcanzable desde ese navegador.</p>
<ul>
<li><strong>includeSubDomains</strong> extiende la regla a todos los subdominios. Un solo subdominio sin https válido, incluso de prueba o futuro, se vuelve inalcanzable para quien ya visitó el sitio. Actívalo solo si todos los subdominios son y seguirán siendo https.</li>
<li><strong>Preload</strong> añade solo la bandera <code>preload</code> a la cabecera. Por sí sola no inscribe el sitio: el envío a la lista de los navegadores se hace a mano en hstspreload.org. La lista está dentro de los navegadores, y salir de ella lleva semanas. Considera Preload una decisión definitiva.</li>
</ul>
<p>Guarda siempre desde la versión https del panel. Las casillas desactivadas no las envía el navegador: si guardas desde una página http, HSTS y sus subopciones se apagan.</p>
<h2>Qué pasa entre bastidores</h2>
<p>Los ajustes del Paranoic Hardening son opciones de WordPress, no reglas del servidor. El autologout imprime un script solo en las páginas de administración. El script registra la última actividad en el <code>localStorage</code> del navegador y cada 5 segundos comprueba el tiempo. Al vencer, pide a <code>admin-ajax.php</code> que ejecute el cierre de sesión y te lleva a la página de inicio de sesión. El guardado llega al Registro de actividad solo si has cambiado algo.</p>
<h2>Si algo no funciona</h2>
<ul>
<li>El recuadro está rojo tras «Verificar ahora»: un proxy, una CDN u otro plugin está quitando las cabeceras. Revisa su configuración.</li>
<li>Un sitio aliado ya no muestra tus páginas: quita la marca a X-Frame-Options y guarda.</li>
<li>No consigues activar HSTS: vuelve a abrir el panel con la dirección https.</li>
<li>Para comprobar las cabeceras a mano puedes usar las herramientas de desarrollador del navegador o <code>curl -I</code> sobre la dirección https del sitio.</li>
</ul>
<p>Para entender mejor cómo funciona HSTS, lee la página <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security" target="_blank" rel="noopener">Strict-Transport-Security en MDN</a>. Explica max-age, includeSubDomains y preload con precisión.</p>
<p>Anterior: <a href="https://www.cisilino.com/es/?p=980">Pestaña Test: comprobar que las protecciones funcionan</a>. Siguiente: <a href="https://www.cisilino.com/es/?p=982">Registro de usuarios: quién puede crear cuentas</a>. Para el índice general ve al <a href="https://www.cisilino.com/es/?p=972">capítulo 1 del manual</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/paranoic-hardening-cabeceras-hsts/">Paranoic Hardening: cabeceras y HSTS</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/paranoic-hardening-cabeceras-hsts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Prueba de seguridad WordPress: pestaña Test</title>
		<link>https://www.cisilino.com/es/2026/10/30/prueba-seguridad-wordpress-pestana-test/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/prueba-seguridad-wordpress-pestana-test/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:44 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[verificación de bloqueo PHP]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1196</guid>

					<description><![CDATA[<p>La pestaña Test del plugin CSDN comprueba en vivo el bloqueo del PHP en uploads y la integridad de los archivos del plugin. Así se usa y se lee el resultado.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/prueba-seguridad-wordpress-pestana-test/">Prueba de seguridad WordPress: pestaña Test</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Una <strong>prueba de seguridad WordPress</strong> sirve para una sola cosa: saber si la protección funciona de verdad, no solo si está encendida. La pestaña «Test» del plugin CSDN hace dos comprobaciones en vivo. No cambia ningún ajuste. Comprueba el sitio ahora mismo.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-test.webp" alt="Esquema de WordPress con la pestaña Test del plugin CSDN para la prueba de seguridad WordPress" width="1200" height="630"/></figure>
<h2>Dónde se encuentra la prueba de seguridad WordPress</h2>
<p>Abre <strong>Ajustes &gt; Cisilino Site Defense Network</strong> (punto 1 de la imagen). Haz clic en la pestaña <strong>Test</strong> (punto 2). Encuentras dos recuadros:</p>
<ul>
<li>punto 3: «Verificar bloqueo de ejecución PHP en uploads».</li>
<li>punto 4: «Integridad de los archivos del plugin».</li>
</ul>
<p>Tras cada botón el sitio te devuelve a la pestaña General, con un aviso arriba. El resultado, sin embargo, se escribe en la pestaña Test. Vuelve a abrirla para leerlo.</p>
<h2>Verificar bloqueo de ejecución PHP en uploads</h2>
<p>Este recuadro prueba la regla «Bloquea ejecución PHP en wp-content/uploads» de la pestaña Hardening / IDS, descrita en el capítulo <a href="https://www.cisilino.com/es/?p=978">Hardening / IDS</a>. El texto explica que es la única forma de saber si la regla es de verdad eficaz en este sitio. Un <code>AllowOverride</code> desactivado o un bloqueo más específico en el servidor podrían dejarla inútil sin avisarlo.</p>
<h3>Cómo se usa</h3>
<ol>
<li>En la pestaña Hardening / IDS activa la regla y haz clic en «Guardar reglas de hardening».</li>
<li>Abre la pestaña Test.</li>
<li>En el recuadro «Verificar bloqueo de ejecución PHP en uploads» haz clic en «Verificar ahora».</li>
<li>Vuelve a la pestaña Test y lee el resultado, con la fila «Última prueba:» y la fecha.</li>
</ol>
<p>Si la regla no está activa y guardada, el botón está desactivado. El recuadro muestra: «Activa y guarda la regla \»Bloquea ejecución PHP en wp-content/uploads\» en la pestaña Hardening / IDS antes de poder ejecutar la prueba.».</p>
<h3>Qué hace la prueba</h3>
<p>El plugin escribe en uploads un pequeño archivo <code>.php</code> de prueba. Lo solicita por HTTP, con un límite de 10 segundos. Luego lo borra enseguida, en cualquier caso. El archivo contiene solo una impresión de control.</p>
<h3>Cómo se lee el resultado</h3>
<ul>
<li>Verde: «Bloqueo eficaz: la petición al archivo de prueba recibió N.». El número es 403 o 404.</li>
<li>Rojo: «ATENCIÓN: el archivo PHP de prueba se ha EJECUTADO (respuesta N).» La regla no bloquea nada. El mensaje sugiere comprobar que <code>AllowOverride</code> permita <code>.htaccess</code> en esa carpeta y que no exista un bloqueo <code>&lt;Directory&gt;</code> más específico.</li>
<li>Amarillo: «Resultado poco claro (respuesta N, cuerpo no reconocido): verifica a mano con una petición directa al sitio.».</li>
<li>Azul: «Regla desactivada: actívala y guárdala antes de ejecutar la prueba.».</li>
<li>Rojo, por errores: «No se puede determinar la carpeta uploads.», «No se puede escribir el archivo de prueba en uploads (¿permisos?): prueba no ejecutada.» o «La petición de verificación ha fallado», con el motivo.</li>
</ul>
<p><strong>Atención:</strong> si el sitio no logra llamarse a sí mismo, por ejemplo por un firewall, una contraseña HTTP o un DNS local, la prueba da error o resultado poco claro. Un 404 se cuenta como bloqueo, pero podría depender de otra cosa. La prueba solo comprueba la carpeta uploads estándar. Durante unos segundos existe un archivo <code>.php</code> en uploads: si el bloqueo no funciona puede ejecutarse, pero contiene solo una impresión.</p>
<h2>Integridad de los archivos del plugin</h2>
<p>Es la segunda parte de la prueba de seguridad WordPress. El segundo recuadro compara los hashes MD5 de los archivos <code>.php</code> del plugin con los esperados. Busca archivos modificados, faltantes o añadidos. El control arranca solo una vez al día. El botón «Verificar ahora» lo ejecuta de inmediato.</p>
<p>El recuadro señala un límite fijo: quien ya tiene escritura sobre los archivos puede también reescribir los hashes o apagar el control. Es un detector de manipulaciones, no una barrera.</p>
<h3>Cómo se usa</h3>
<ol>
<li>Abre la pestaña Test.</li>
<li>En el recuadro «Integridad de los archivos del plugin» haz clic en «Verificar ahora».</li>
<li>Lee el aviso: «Verificación de integridad ejecutada: el resultado está en el recuadro \»Integridad de los archivos del plugin\».».</li>
<li>Vuelve a abrir la pestaña Test y lee el recuadro.</li>
</ol>
<h3>Cómo se lee el resultado</h3>
<p>Verde: «Todos los N archivos verificados coinciden. Último control: fecha.». Si la referencia es una fotografía, el recuadro añade que detecta los cambios posteriores, no un plugin ya comprometido al instalarse. Rojo: «ATENCIÓN: los archivos del plugin no coinciden con los esperados.», con las listas «Modificados», «Faltantes» y «No previstos». Amarillo: «Ninguna referencia disponible». En ese caso reactiva el plugin.</p>
<p>El botón manual no escribe en el registro de actividad. Solo lo hace el control programado, y solo si encuentra un problema o si los archivos vuelven a la normalidad tras una alarma. Para los detalles lee el capítulo <a href="https://www.cisilino.com/es/?p=979">Vigilancia de subidas y control de integridad</a>.</p>
<p><strong>Atención:</strong> si has modificado a mano un archivo del plugin, la alarma roja es normal. Si no lo has hecho, trata el sitio como potencialmente comprometido: reinstala el plugin desde una copia fiable y revisa el resto de la instalación.</p>
<h2>Si algo no funciona</h2>
<p>Repite la prueba de seguridad WordPress después de cada corrección. Si la prueba del PHP da rojo, la regla no protege. Pregunta a tu hosting si <code>.htaccess</code> está habilitado. Si el servidor no lee <code>.htaccess</code>, por ejemplo con nginx, la regla no tiene efecto. Repite la prueba después de cada corrección. Un 403 es la respuesta que quieres ver: la página sobre el <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/403" target="_blank" rel="noopener">código de estado 403</a> de MDN explica qué significa.</p>
<p>Capítulo anterior: <a href="https://www.cisilino.com/es/?p=979">Vigilancia de subidas y control de integridad</a>. Capítulo siguiente: <a href="https://www.cisilino.com/es/?p=981">Paranoic Hardening: cabeceras de seguridad y sesión administrativa</a>. Para el listado de capítulos vuelve a la <a href="https://www.cisilino.com/es/?p=972">introducción del manual</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/prueba-seguridad-wordpress-pestana-test/">Prueba de seguridad WordPress: pestaña Test</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/prueba-seguridad-wordpress-pestana-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vigilancia de subidas y control de integridad</title>
		<link>https://www.cisilino.com/es/2026/10/30/vigilancia-subidas-control-integridad/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/vigilancia-subidas-control-integridad/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:41 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[integridad de archivos]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[subidas]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1195</guid>

					<description><![CDATA[<p>Dónde está el formulario de vigilancia de subidas, qué bloquea realmente y cómo leer el resultado del control de integridad de los archivos del plugin.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/vigilancia-subidas-control-integridad/">Vigilancia de subidas y control de integridad</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>La <strong>vigilancia de subidas</strong> de archivos del plugin CSDN anota quién sube archivos a tu sitio, incluso fuera de la biblioteca de medios. El control de integridad, en cambio, comprueba que los archivos del plugin no se hayan tocado. Son dos defensas distintas, pero ambas buscan el mismo escenario: un archivo malicioso que entra donde no debería.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-caricamenti-integrita.webp" alt="Esquema de WordPress con la pestaña General del plugin CSDN y la sección de vigilancia de subidas de archivos" width="1200" height="630"/></figure>
<h2>Dónde se encuentra</h2>
<p>Atención al lugar: el formulario no está en la pestaña «Hardening / IDS». Abre <strong>Ajustes &gt; Cisilino Site Defense Network</strong> (punto 1), quédate en la pestaña <strong>General</strong> (punto 2) y baja hasta el final. Tras la whitelist encuentras la sección «Vigilancia de subidas de archivos» (punto 3). El control de integridad se lee en cambio en la pestaña Test, explicada en el capítulo <a href="https://www.cisilino.com/es/?p=980">Pestaña Test</a>.</p>
<h2>Para qué sirve la vigilancia de subidas de archivos</h2>
<p>La sección dice: «Registra los archivos subidos al sitio, incluidos los que no pasan por la biblioteca de medios: formularios de plugins, endpoints admin-ajax, subidas arbitrarias de un tema.» Por ahí entra la mayoría de las webshells. Un registro que solo mire la biblioteca de medios no las ve.</p>
<h2>Cómo se usa</h2>
<ol>
<li>Abre la pestaña General y baja hasta «Vigilancia de subidas de archivos».</li>
<li>Marca la fila «Vigilancia»: «Registra las subidas de archivos».</li>
<li>Marca la fila «Bloqueo de archivos ejecutables»: «Rechaza las subidas con extensión ejecutable (.php, .phtml, .phar, .sh, .htaccess&#8230;)».</li>
<li>Haz clic en «Guardar vigilancia de subidas».</li>
<li>Lee el aviso: «Ajustes de la vigilancia de subidas guardados.».</li>
</ol>
<h2>Registra las subidas de archivos</h2>
<p>Esta opción está <strong>activa</strong> por defecto. Los eventos van al grupo «Subidas de archivos» del registro de actividad. En una petición sin archivo el coste es nulo. El plugin anota cada petición que contiene un archivo, con el campo y la dirección que lo recibió. Las acciones que verás en el registro son:</p>
<ul>
<li>«Archivo recibido en una petición POST».</li>
<li>«Archivo subido».</li>
<li>«ATENCIÓN: subido archivo potencialmente ejecutable».</li>
<li>«Subida BLOQUEADA».</li>
</ul>
<p>El registro local conserva como máximo 500 filas, si no cambias el tope en los ajustes del registro de actividad. Cómo leerlo se explica en el capítulo <a href="https://www.cisilino.com/es/?p=984">Registro de actividad</a>.</p>
<h2>Bloqueo de archivos ejecutables</h2>
<p>Esta opción está <strong>desactivada</strong> por defecto. Funciona solo si también está activa «Registra las subidas de archivos»: con la vigilancia apagada el bloqueo no hace nada, aunque la casilla esté marcada. Si la activas, WordPress rechaza el archivo con el mensaje: «Tipo de archivo no permitido en este sitio (Cisilino Site Defense Network: subida de archivos ejecutables bloqueada).» El control reconoce también las dobles extensiones, como <code>imagen.php.jpg</code>.</p>
<p>Las extensiones consideradas peligrosas son: <code>php</code>, <code>php3</code>, <code>php4</code>, <code>php5</code>, <code>php7</code>, <code>php8</code>, <code>phtml</code>, <code>phps</code>, <code>phar</code>, <code>pht</code>, <code>shtml</code>, <code>cgi</code>, <code>pl</code>, <code>py</code>, <code>rb</code>, <code>sh</code>, <code>bash</code>, <code>htaccess</code>, <code>htpasswd</code>, <code>jsp</code>, <code>asp</code>, <code>aspx</code>, <code>exe</code>, <code>so</code>, <code>dll</code>, <code>ini</code>, <code>svg</code> y <code>svgz</code>.</p>
<p><strong>Atención:</strong> la lista bloquea también <code>.svg</code>, así que los logos en SVG ya no se pueden subir. Bloquea también <code>.ini</code>, <code>.py</code>, <code>.exe</code> y <code>.dll</code>, que aparecen en adjuntos y paquetes. El plugin mira todas las partes después del primer punto. Un nombre como <code>archivo.pl.zip</code> se rechaza por tanto. El bloqueo vale solo para las subidas gestionadas por WordPress (filtro wp_handle_upload_prefilter). Un plugin que guarda el archivo por su cuenta queda registrado («Archivo recibido en una petición POST») pero no se detiene. Quien escribe directamente en disco, sin una petición con archivo, no deja rastro en este registro.</p>
<h2>El control de integridad</h2>
<p>A diferencia de la vigilancia de subidas de archivos, aquí no se miran las nuevas subidas sino los archivos ya presentes. El plugin compara los hashes MD5 de sus archivos <code>.php</code> con los esperados. Busca archivos modificados, faltantes o añadidos. Excluye las carpetas <code>tests</code> y <code>dist</code>. Los archivos que no son PHP no se comprueban.</p>
<p>El control se ejecuta una vez al día, mediante el sistema de programación de WordPress. Si el sitio tiene pocas visitas, puede retrasarse. La referencia es el archivo <code>checksums.json</code> en la carpeta del plugin, si está presente. En caso contrario el plugin usa una fotografía de los archivos tomada al activarse y en cada cambio de versión.</p>
<h3>Cómo se lee el resultado</h3>
<p>Lo encuentras en la pestaña Test, en el recuadro «Integridad de los archivos del plugin», donde también está el botón «Verificar ahora» para lanzar el control de inmediato. Hay cuatro casos:</p>
<ul>
<li>«Ninguna verificación ejecutada todavía.», si nunca se ha ejecutado.</li>
<li>Recuadro verde: «Todos los N archivos verificados coinciden. Último control: fecha.».</li>
<li>Recuadro amarillo: «Ninguna referencia disponible: no se puede verificar. Reactiva el plugin para capturar una nueva fotografía de los archivos.».</li>
<li>Recuadro rojo: «ATENCIÓN: los archivos del plugin no coinciden con los esperados.», con tres listas: «Modificados», «Faltantes», «No previstos».</li>
</ul>
<p>En la lista aparecen como máximo 15 nombres. Si ves el rojo y no has tocado los archivos a mano, el plugin te dice que trates el sitio como potencialmente comprometido. Reinstala el plugin desde una copia fiable y revisa el resto de la instalación.</p>
<p>Si la referencia es la fotografía, el recuadro verde lo indica. Esa comparación encuentra los cambios posteriores, no un plugin ya comprometido en el momento de la instalación.</p>
<p><strong>Atención:</strong> la integridad es un detector, no una barrera. Quien ya ha escrito en los archivos puede también reescribir los hashes o apagar el control. Cambios hechos a mano o una subida a medias producen una alarma roja.</p>
<h2>Qué pasa entre bastidores</h2>
<p>La vigilancia de subidas de archivos y la integridad usan el mismo registro. El control diario escribe en el registro de actividad solo en dos casos: cuando encuentra un problema y cuando, tras un problema, todo vuelve a la normalidad. Cuando todo va bien no escribe nada. El registro se envía luego al panel, así una copia de la alarma queda fuera de tu servidor.</p>
<h2>Si algo no funciona</h2>
<p>La vigilancia de subidas de archivos sigue siendo útil incluso con el bloqueo apagado. Si un plugin legítimo deja de subir archivos, apaga «Bloqueo de archivos ejecutables» y vuelve a probar. Para entender qué subidas llegan al sitio, deja activa la vigilancia y consulta el registro. Para las reglas sobre archivos en uploads mira también el capítulo <a href="https://www.cisilino.com/es/?p=978">Hardening / IDS</a>.</p>
<p>El riesgo que aquí se intenta reducir lo describe OWASP: lee la página sobre <a href="https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload" target="_blank" rel="noopener">la subida de archivos sin restricciones</a>, útil para entender por qué las subidas son un punto débil.</p>
<p>Capítulo anterior: <a href="https://www.cisilino.com/es/?p=978">Hardening / IDS: las reglas para .htaccess</a>. Capítulo siguiente: <a href="https://www.cisilino.com/es/?p=980">Pestaña Test: comprobar que las protecciones funcionan</a>. Índice: <a href="https://www.cisilino.com/es/?p=972">introducción del manual</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/vigilancia-subidas-control-integridad/">Vigilancia de subidas y control de integridad</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/vigilancia-subidas-control-integridad/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hardening WordPress: las reglas para .htaccess</title>
		<link>https://www.cisilino.com/es/2026/10/30/hardening-wordpress-reglas-htaccess/</link>
					<comments>https://www.cisilino.com/es/2026/10/30/hardening-wordpress-reglas-htaccess/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:39 +0000</pubDate>
				<category><![CDATA[Manual CSDN]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manual CSDN]]></category>
		<category><![CDATA[XML-RPC]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=1194</guid>

					<description><![CDATA[<p>La pestaña Hardening / IDS del plugin CSDN, regla por regla: qué bloquea, qué puede romper y por qué las rutas personalizadas deben escribirse con cuidado.</p>
<p>The post <a href="https://www.cisilino.com/es/2026/10/30/hardening-wordpress-reglas-htaccess/">Hardening WordPress: las reglas para .htaccess</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>El <strong>hardening WordPress</strong> del plugin CSDN está todo en una pestaña: «Hardening / IDS». Son cinco interruptores y un campo de texto. Sirven para cerrar puertas que casi ningún sitio usa de verdad. Están todos desactivados, y los activas uno a uno.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/manuale-csdn-hardening-ids.webp" alt="Esquema de WordPress con la pestaña Hardening / IDS del plugin CSDN: hardening WordPress" width="1200" height="630"/></figure>
<h2>Dónde encuentras el hardening WordPress</h2>
<p>Abre <strong>Ajustes &gt; Cisilino Site Defense Network</strong> (punto 1 de la imagen). Luego haz clic en la pestaña <strong>Hardening / IDS</strong> (punto 2). En la pestaña encuentras tres secciones, en este orden:</p>
<ul>
<li>punto 3: bajo el título «Hardening / control de accesos (IDS)», la fila «Reglas .htaccess».</li>
<li>punto 4: «WordPress».</li>
<li>punto 5: «Rutas personalizadas para bloquear».</li>
</ul>
<p>Arriba la pestaña dice: «Reglas opcionales aplicadas a nivel de servidor (.htaccess) o de WordPress. Todas desactivadas por defecto: actívalas solo si sabes que no chocan con temas o plugins del sitio.» Al final hay un solo botón: «Guardar reglas de hardening».</p>
<h2>Para qué sirve</h2>
<p>Las reglas reducen la superficie de ataque. Tres interruptores escriben en el archivo <code>.htaccess</code>, como también el campo de rutas personalizadas. Dos interruptores son filtros de WordPress. No es un firewall y no analiza las peticiones: aquí «IDS» significa reglas de acceso a archivos y carpetas.</p>
<h2>Las reglas .htaccess (punto 3)</h2>
<h3>Bloquea la ejecución de PHP en wp-content/uploads</h3>
<p>La etiqueta completa es «Bloquea ejecución PHP en wp-content/uploads (protección contra shells subidas como \»imagen\»)». El plugin responde 403 a cada petición de un archivo con extensión <code>php</code>, <code>php3</code>, <code>php4</code>, <code>php5</code>, <code>php7</code>, <code>php8</code>, <code>php9</code>, <code>phtml</code>, <code>phps</code>, <code>phar</code> o <code>pht</code> cuya dirección contenga <code>/wp-content/uploads/</code>. Las mayúsculas no cuentan.</p>
<p>Funciona solo con Apache 2.4 (hace falta el módulo mod_authz_core: sin él, la regla no hace nada y no lo avisa). En nginx el archivo <code>.htaccess</code> se ignora y ninguna regla de esta pestaña tiene efecto, salvo los filtros de WordPress. Cubre la carpeta uploads estándar, no una carpeta personalizada. Puede romper plugins que sirven de verdad archivos PHP desde esa carpeta. Para saber si funciona en tu sitio usa la prueba del capítulo <a href="https://www.cisilino.com/es/?p=980">Pestaña Test</a>.</p>
<h3>Desactiva el listado de archivos en carpetas sin index</h3>
<p>Escribe una sola línea: <code>Options -Indexes</code>. Al abrir una carpeta sin página índice verás un error 403 en lugar del listado de archivos. Si usas una carpeta como listado público de descargas, ese listado desaparece.</p>
<h3>Bloquea el acceso directo a wp-config.php, .htaccess, readme.html, debug.log</h3>
<p>El plugin escribe una regla para cada nombre y responde 403. El control se hace sobre el nombre del archivo, no sobre la ruta. Vale por tanto para cada archivo con ese nombre en cualquier carpeta del sitio, incluso dentro de otros plugins. Un plugin que publique su propio <code>readme.html</code> o <code>debug.log</code> quedará bloqueado.</p>
<h2>Las reglas de WordPress (punto 4)</h2>
<p>Estas dos reglas del hardening WordPress son filtros PHP. No tocan <code>.htaccess</code>.</p>
<h3>Desactiva XML-RPC</h3>
<p>La etiqueta es «Desactiva XML-RPC (bruteforce/pingback, casi nunca necesario en los sitios modernos)». El archivo <code>xmlrpc.php</code> sigue en su sitio, pero WordPress rechaza los métodos XML-RPC que requieren inicio de sesión. <strong>Atención:</strong> se detienen la app móvil de WordPress, parte de las funciones de Jetpack y la publicación desde clientes externos. El método <code>pingback.ping</code> no requiere inicio de sesión y el filtro no lo detiene: no cuentes con esta regla para cerrar los pingbacks. Los trackbacks no usan XML-RPC y no se ven afectados. La conexión del plugin al panel no usa XML-RPC, así que no se ve afectada.</p>
<h3>Bloquea la enumeración de usuarios vía ?author=N</h3>
<p>Si la petición contiene el parámetro <code>author</code> con un valor (distinto de vacío y de <code>0</code>), en el sitio público aparece «No encontrado.» con respuesta 404. <strong>Atención:</strong> esta regla no protege la REST API. El listado de usuarios en <code>/wp-json/wp/v2/users</code> sigue siendo accesible. Algunos temas y plugins usan <code>?author=</code> para filtrar los archivos, y quedarán bloqueados.</p>
<h2>Rutas personalizadas para bloquear (punto 5)</h2>
<p>El campo de texto es para quien quiere cerrar una carpeta concreta, por ejemplo <code>/wp-content/uploads/backup-viejo/</code>. Escribe una ruta por línea. Las líneas vacías se ignoran.</p>
<p>Cada línea es <strong>texto literal</strong>. Las mayúsculas cuentan y la parte después del <code>?</code> de la dirección no se compara. La ayuda bajo el campo habla de «patrones», pero aquí no existen. No hay comodines: <code>*</code>, <code>^</code> y <code>$</code> valen como simples caracteres. El plugin bloquea con 403 cada dirección que <strong>contenga</strong> esa cadena, en cualquier punto. Por eso la ruta <code>/wp-content/uploads/backup-viejo/</code> bloquea también <code>/blog/wp-content/uploads/backup-viejo/x</code>.</p>
<p>Este campo no tiene interruptor. La regla está activa en cuanto el campo no está vacío y guardas.</p>
<p><strong>Atención:</strong> si escribes <code>/</code> o <code>wp</code> bloqueas todo el sitio, área de administración incluida. Para volver atrás tendrías que corregir <code>.htaccess</code> por FTP. Incluso una cadena como <code>/uploads/</code> bloquea todas las imágenes. Evita el carácter <code>%</code> en las rutas.</p>
<h2>Valores predeterminados</h2>
<p>Cinco interruptores desactivados y campo vacío. Los ajustes están en la opción <code>csdn_hardening</code>.</p>
<h2>Cómo se usa</h2>
<p>Procede con calma: el hardening WordPress se hace una regla cada vez.</p>
<ol>
<li>Haz una copia de <code>.htaccess</code> antes de empezar.</li>
<li>Marca una sola regla.</li>
<li>Haz clic en «Guardar reglas de hardening».</li>
<li>Comprueba que el sitio se abre y que el panel de administración funciona.</li>
<li>Pasa a la regla siguiente.</li>
</ol>
<p>Tras guardar vuelves a la pestaña General, no a aquella en la que guardaste. Arriba encuentras el aviso. Si hay éxito dice «Reglas de hardening guardadas y aplicadas.». Si hay error dice «Ajustes guardados, pero la escritura en .htaccess ha fallado (¿permisos?). Las reglas no están activas.». Con el error, los dos filtros de WordPress siguen activos igualmente.</p>
<p><strong>Atención:</strong> el plugin no crea ninguna copia de seguridad de <code>.htaccess</code>. Tampoco comprueba la sintaxis antes de escribir. Una regla incompatible con tu servidor puede dar error 500 en todo el sitio. En una red multisitio el archivo es el de la red: el error afecta a todos los sitios.</p>
<h2>Qué pasa entre bastidores</h2>
<p>El plugin escribe entre dos marcadores: <code># BEGIN Cisilino Site Defense Network - Hardening</code> y su <code># END</code> correspondiente. El resto del archivo no se toca. Un segundo bloque, separado, contiene las IP bloqueadas. Si desactivas el plugin, los dos bloques se vacían. Si apagas todo y guardas, el bloque de hardening queda vacío.</p>
<h2>Si algo no funciona</h2>
<p>Si tras el hardening WordPress el sitio muestra error 500, abre <code>.htaccess</code> por FTP. Borra las líneas entre los dos marcadores de hardening. Luego prueba con menos reglas. Si no se escribe en el archivo, comprueba los permisos de <code>.htaccess</code>.</p>
<p>Para una visión más amplia de las buenas prácticas, lee la guía oficial de <a href="https://developer.wordpress.org/advanced-administration/security/hardening/" target="_blank" rel="noopener">hardening de WordPress</a>: explica otras medidas que quedan fuera del plugin.</p>
<p>Capítulo anterior: <a href="https://www.cisilino.com/es/?p=977">Pestaña IP bloqueadas: leer la lista negra</a>. Capítulo siguiente: <a href="https://www.cisilino.com/es/?p=979">Vigilancia de subidas y control de integridad</a>. Para el índice completo de capítulos vuelve a la <a href="https://www.cisilino.com/es/?p=972">introducción del manual</a>.</p><p>The post <a href="https://www.cisilino.com/es/2026/10/30/hardening-wordpress-reglas-htaccess/">Hardening WordPress: las reglas para .htaccess</a> first appeared on <a href="https://www.cisilino.com/es/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/es/2026/10/30/hardening-wordpress-reglas-htaccess/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
