<?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>manuale CSDN - Matteo Cisilino</title>
	<atom:link href="https://www.cisilino.com/tag/manuale-csdn/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.cisilino.com</link>
	<description>Guide su WordPress, server e sicurezza</description>
	<lastBuildDate>Fri, 30 Oct 2026 16:06:04 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>Disattivazione, disinstallazione e dati personali</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-disattivazione-disinstallazione/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-disattivazione-disinstallazione/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:06:04 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<category><![CDATA[privacy]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=987</guid>

					<description><![CDATA[<p>Cosa accade quando disattivi o elimini Cisilino Site Defense Network, quali dati restano e come citarli nell'informativa privacy.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-disattivazione-disinstallazione/">Disattivazione, disinstallazione e dati personali</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Prima di disinstallare il plugin CSDN conviene sapere la differenza tra disattivarlo e cancellarlo, perché le conseguenze sono diverse. La disattivazione spegne le regole e conserva i dati. La disinstallazione cancella i dati del plugin dal tuo sito. In fondo trovi anche l&#8217;elenco dei dati personali trattati, da citare nell&#8217;informativa privacy.</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="Schema del menu Plugin installati di WordPress per disinstallare il plugin CSDN con Disattiva ed Elimina" width="1200" height="630"/></figure>
<h2>Dove si trova</h2>
<p>Apri la voce <strong>Plugin &gt; Plugin installati</strong> (punto 1 dell&#8217;immagine). Nella riga di <strong>Cisilino Site Defense Network</strong> (punto 3) trovi il link <strong>Disattiva</strong>. Dopo la disattivazione (punto 4) la stessa riga mostra <strong>Attiva</strong> ed <strong>Elimina</strong>.</p>
<h2>Cosa succede alla disattivazione</h2>
<p>Disattivare il plugin lo ferma senza toccare i dati. Alla disattivazione il plugin fa quattro cose.</p>
<ol>
<li>registra l&#8217;evento “Plugin disattivato su questo sito” e prova a consegnarlo al pannello, se è configurato.</li>
<li>cancella le tre attività pianificate.</li>
<li>svuota entrambi i blocchi di <code>.htaccess</code>, quello degli IP bloccati e quello dell&#8217;hardening.</li>
<li>aggiorna le regole di riscrittura di WordPress.</li>
</ol>
<p><strong>Attenzione:</strong> da disattivato non resta in vigore nessuna regola. Gli IP bloccati tornano a poter accedere e l&#8217;hardening non è più applicato. Il plugin non è nemmeno caricato, quindi non agiscono le altre protezioni. Smettono anche gli header di sicurezza, ma un browser che ha già ricevuto HSTS lo ricorda per il tempo impostato.</p>
<p>Il database resta intatto. Se riattivi il plugin, i blocchi di <code>.htaccess</code> vengono ricostruiti e trovi le impostazioni come le avevi lasciate.</p>
<h2>Come disinstallare il plugin</h2>
<p>Per disinstallare il plugin devi premere <strong>Elimina</strong> in <strong>Plugin installati</strong>, dopo averlo disattivato. Prima di farlo, segui questi passi.</p>
<ol>
<li>Nella scheda <strong>Registro attività</strong> controlla che la riga “in attesa di invio al pannello” sia a zero, se usi il pannello.</li>
<li>Nella scheda <strong>Log di debug</strong>, scarica i file che ti servono. Poi, se vuoi, premi <strong>Elimina tutti i file</strong>.</li>
<li>Fai una copia di sicurezza, se non l&#8217;hai già fatta.</li>
<li>Disattiva il plugin e premi <strong>Elimina</strong>.</li>
</ol>
<h2>Cosa viene rimosso e cosa resta</h2>
<p>Quando scegli di disinstallare il plugin, all&#8217;inizio lui registra “Plugin disinstallato da questo sito: dati locali rimossi” e prova a consegnarlo al pannello. Poi cancella, comunque sia andata la consegna.</p>
<p>Viene rimosso quanto segue.</p>
<ul>
<li>le quattro tabelle <code>csdn_events</code>, <code>csdn_overrides</code>, <code>csdn_rate_hits</code> e <code>csdn_activity</code>.</li>
<li>quasi tutte le opzioni il cui nome inizia per <code>csdn_</code>, comprese le credenziali del pannello, la whitelist e le impostazioni delle schede. Ne restano tre, elencate più sotto.</li>
<li>il dato di sospensione del rate limiting su tutti gli utenti.</li>
<li>i dati temporanei del plugin.</li>
<li>le regole dei due blocchi del plugin in <code>.htaccess</code> e le regole di riscrittura. I marcatori <code># BEGIN</code> e <code># END</code> restano nel file, vuoti.</li>
</ul>
<p>Resta invece quanto segue.</p>
<ul>
<li>i file del log di debug nella cartella <code>csdn-debug-*</code> dentro <code>uploads</code>, perché sono dati tuoi: cancellali a mano oppure con il pulsante <strong>Elimina tutti i file</strong> prima di disinstallare.</li>
<li>lo storico già consegnato al pannello, che si trova sul pannello e non sul tuo sito.</li>
<li>le righe di <code>.htaccess</code> che stanno fuori dai marcatori del plugin.</li>
<li>tre opzioni minori: <code>csdn_registration_lock</code> (la policy di Registrazione utenti), <code>csdn_remote_ban_reasons</code> (motivi dei blocchi ricevuti) e <code>csdn_trigger_token</code> (token ricevuto dal pannello). Restano anche il dato utente <code>csdn_registration_blocked_at</code>, se presente, e i dati temporanei <code>csdn_rl_block_*</code>, che scadono da soli. Si possono togliere a mano dal database.</li>
</ul>
<p><strong>Attenzione:</strong> disinstallare il plugin cancella anche il registro attività locale. Le righe non ancora consegnate al pannello, se il pannello non risponde, si perdono.</p>
<h2>Dati personali trattati dal plugin</h2>
<p>Il plugin tiene i dati sul tuo sito, nel database. Mai la password. Ecco cosa tratta.</p>
<ul>
<li><strong>Login falliti</strong>: indirizzo IP, nome utente provato, numero di tentativi, prima e ultima occorrenza, stato di blocco. Non c&#8217;è una cancellazione automatica: restano nel database finché non disinstalli il plugin.</li>
<li><strong>Registro attività</strong>: data e ora, utente WordPress (id, login, ruolo), IP, tipo di azione, oggetto coinvolto (per i contenuti, il titolo) e una breve descrizione. In alcuni casi aggiunge dettagli: per un nuovo utente l&#8217;email e i ruoli, per una modifica di profilo il valore precedente e quello nuovo di email, login, nome visualizzato e sito web. Non salva il contenuto di articoli, commenti o file. Per le opzioni con nome sospetto, come chiavi o token, registra solo che sono cambiate.</li>
<li><strong>Rate limiting</strong>: IP e tipo di invio degli ospiti, conservati un giorno. Le sospensioni degli autori stanno nei dati dell&#8217;utente.</li>
<li><strong>Override IP, whitelist e blacklist ricevuta</strong>.</li>
<li><strong>Log di debug</strong>, se lo accendi: file che possono contenere percorsi e frammenti di dati.</li>
</ul>
<p>Il registro locale tiene di default 30 giorni e al massimo 500 righe. Puoi cambiare entrambi i valori nella scheda <strong>Registro attività</strong>.</p>
<h3>Cosa esce dal sito</h3>
<p>Solo se colleghi il pannello. Ogni 15 minuti il plugin invia i login falliti: IP, nome utente, esito “failed” e data. Ne manda fino a 200 per volta. Aggiunge il customer code e l&#8217;URL del sito. Riceve gli IP bloccati. Il registro attività, con i dettagli sopra, viene inviato di norma subito, a fine richiesta, e ciò che resta in coda parte col giro dei 15 minuti. Parte solo se sono attivi sia il registro sia l&#8217;opzione “Invia le attività al pannello”. Gli override manuali non vengono mai inviati.</p>
<h3>Cosa scrivere nell&#8217;informativa privacy</h3>
<p>Finché non decidi di disinstallare il plugin, nell&#8217;informativa del sito indica almeno questi punti.</p>
<ul>
<li>che il sito registra IP e nome utente dei tentativi di accesso falliti, per ragioni di sicurezza.</li>
<li>che tiene un registro delle azioni degli utenti, con IP, e per quanti giorni lo conserva.</li>
<li>che, se hai collegato il pannello, alcuni di questi dati vengono inviati al servizio esterno.</li>
<li>chi è il titolare e come gli utenti possono esercitare i loro diritti.</li>
</ul>
<p>Adatta il testo alla tua situazione, con il tuo consulente se ne hai uno: il manuale non sostituisce un parere legale. Per le basi sui plugin la <a href="https://wordpress.org/documentation/article/manage-plugins/" target="_blank" rel="noopener">guida ufficiale di WordPress</a> spiega anche la differenza tra disattivare ed eliminare.</p>
<h2>Se qualcosa non va</h2>
<p>Se dopo la disattivazione il sito dà errore, controlla <code>.htaccess</code> via FTP e guarda il capitolo <a href="https://www.cisilino.com/?p=986">Risoluzione dei problemi e domande frequenti</a>. Se hai deciso di disinstallare il plugin per errore, i dati locali non tornano: serve una copia di sicurezza del sito.</p>
<p>Capitolo precedente: <a href="https://www.cisilino.com/?p=986">Risoluzione dei problemi e domande frequenti</a>. Torna all&#8217;indice con l&#8217;<a href="https://www.cisilino.com/?p=972">introduzione al manuale CSDN</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-disattivazione-disinstallazione/">Disattivazione, disinstallazione e dati personali</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-disattivazione-disinstallazione/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Risoluzione dei problemi e domande frequenti</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-risoluzione-problemi/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-risoluzione-problemi/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:06:02 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[domande frequenti]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=986</guid>

					<description><![CDATA[<p>Le soluzioni ai problemi tipici di Cisilino Site Defense Network: blocchi, errori 500, sospensioni, pannello e log.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-risoluzione-problemi/">Risoluzione dei problemi e domande frequenti</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Questa pagina di risoluzione problemi raccoglie le situazioni in cui Cisilino Site Defense Network può metterti in difficoltà, con la soluzione per ciascuna. Ti serve se ti sei bloccato da solo, se il sito risponde con un errore 500 o se un utente non riesce più a pubblicare. Le risposte sono organizzate come domande frequenti.</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="Elenco di controllo per la risoluzione problemi del plugin CSDN, con i passi da seguire" width="1200" height="630"/></figure>
<h2>Risoluzione problemi: da dove cominciare</h2>
<p>Prima di cercare la risposta esatta, passa in rassegna questo elenco di controllo.</p>
<ol>
<li>Riesci ancora ad aprire <code>wp-admin</code>? Se sì, quasi tutto si risolve dalla pagina Impostazioni del plugin.</li>
<li>Leggi gli avvisi in alto. Il plugin spiega l&#8217;esito delle azioni con messaggi in riquadri colorati.</li>
<li>Ricorda l&#8217;ultima cosa che hai cambiato: una regola di hardening, una policy, un limite.</li>
<li>Se esiste un pulsante <strong>Verifica ora</strong> o <strong>Verifica adesso</strong>, usalo prima di tirare a indovinare.</li>
<li>Se non entri più nel sito, prepara l&#8217;accesso FTP o il file manager dell&#8217;hosting.</li>
</ol>
<h2>Accessi e blocchi</h2>
<h3>Mi sono bloccato da solo: che cosa faccio?</h3>
<p>Se hai ancora accesso a WordPress, per esempio dal telefono con la rete mobile, apri la scheda <strong>IP bloccati</strong>. Cerca il tuo IP e premi <strong>Sblocca</strong>. Se il tuo IP non è in elenco ma sei bloccato (può venire dalla lista di sicurezza opzionale), vai nella scheda <strong>Generale</strong>, sezione “Override locali IP”: inserisci l&#8217;IP, scegli “Sblocca sempre (unban)” e premi <strong>Salva override</strong>. Poi, nella scheda <strong>Generale</strong>, premi <strong>Aggiungi alla whitelist</strong>.</p>
<p>Se sei bloccato anche dal sito, e vedi un errore 403, entra via FTP e apri <code>.htaccess</code>. Togli la riga con il tuo IP, oppure l&#8217;intero blocco tra <code># BEGIN Cisilino Site Defense Network</code> e <code># END Cisilino Site Defense Network</code>.</p>
<p><strong>Attenzione:</strong> la modifica a mano è temporanea. Il blocco viene riscritto dalla stessa fonte al prossimo evento: un login fallito, una sincronizzazione o il giro ogni 15 minuti. Appena sei dentro, usa <strong>Sblocca</strong> e la whitelist.</p>
<h3>Perché la whitelist non mi ha sbloccato?</h3>
<p>La whitelist evita solo che i login falliti vengano contati. Non toglie i blocchi già presenti. Per togliere un blocco serve <strong>Sblocca</strong>, che crea un override permanente di sblocco su questo sito.</p>
<h3>Un utente legittimo è stato bloccato</h3>
<p>Il contatore dei tentativi è cumulativo per IP e non si azzera da solo. Anche errori sparsi in settimane possono arrivare alla soglia, che di default è 10. Sblocca l&#8217;IP e mettilo in whitelist, oppure alza la soglia in <strong>Impostazioni remote</strong>, dove il campo è “Soglia blocco locale (tentativi falliti)”.</p>
<h3>Il blocco di un IP non finisce mai</h3>
<p>Un blocco locale non scade. Un blocco manuale scade con la durata scelta, da 1 ora a 7 giorni. Se hai scelto “Permanente (finché non lo rimuovi)”, non scade. Un blocco ricevuto dal pannello sparisce quando il pannello lo toglie dalla lista. Uno sblocco a tempo, scadendo, fa tornare il blocco se la fonte originale è ancora lì. Per uno sblocco definitivo usa <strong>Sblocca</strong>, che è permanente.</p>
<h3>Dietro un proxy o una CDN i blocchi sono strani</h3>
<p>Il plugin legge l&#8217;IP solo da <code>REMOTE_ADDR</code> e ignora l&#8217;header <code>X-Forwarded-For</code>, perché si può falsificare. Guarda la frase “Il tuo IP attuale è …” sotto il campo <strong>Indirizzo IP</strong> della scheda <strong>Generale</strong>. Se non è il tuo IP pubblico, il plugin sta vedendo l&#8217;indirizzo del proxy. In quel caso evita di bloccare o mettere in whitelist quell&#8217;indirizzo, finché non hai chiarito la situazione con chi gestisce il proxy.</p>
<h2>Errori dopo le regole in .htaccess</h2>
<p>Questa parte della risoluzione problemi riguarda le regole scritte nel file del server.</p>
<h3>Il sito dà errore 500 dopo aver salvato l&#8217;hardening</h3>
<p>Il plugin non crea una copia di <code>.htaccess</code> e non controlla la sintassi dopo la scrittura. Un errore, o una regola che il server non accetta, si vede subito come errore 500.</p>
<ol>
<li>Entra via FTP o dal file manager.</li>
<li>Fai una copia di <code>.htaccess</code>.</li>
<li>Elimina il blocco tra <code># BEGIN Cisilino Site Defense Network - Hardening</code> e <code># END Cisilino Site Defense Network - Hardening</code>.</li>
<li>Ricarica il sito, poi correggi le impostazioni nella scheda <strong>Hardening / IDS</strong>.</li>
</ol>
<p>Il blocco dell&#8217;hardening viene riscritto solo quando salvi la scheda o riattivi il plugin, non dal giro ogni 15 minuti. La tua modifica a mano quindi resta.</p>
<h3>Ho scritto un percorso personalizzato e tutto il sito dà 403</h3>
<p>Nella casella dei percorsi personalizzati ogni riga è testo letterale, senza jolly. La regola blocca ogni indirizzo che contiene quella stringa. Scrivere <code>/</code> o <code>wp</code> blocca tutto, compreso <code>wp-admin</code>. Togli via FTP il blocco dell&#8217;hardening, come sopra. Poi, nella scheda <strong>Hardening / IDS</strong>, correggi o svuota la casella “Percorsi personalizzati da bloccare” e salva. Se non la correggi, un nuovo salvataggio o una riattivazione del plugin riscrive la regola e il sito torna a dare 403.</p>
<h3>Compare “Impostazioni salvate, ma la scrittura in .htaccess è fallita”</h3>
<p>Il file <code>.htaccess</code> non è scrivibile: controlla i permessi. Le regole di quel blocco non sono attive. Restano invece attivi i due interruttori che agiscono in PHP, cioè XML-RPC e <code>?author=N</code>.</p>
<h3>Il test dice che il blocco PHP in uploads non funziona</h3>
<p>Nella scheda <strong>Test</strong>, il riquadro “Verifica blocco esecuzione PHP in uploads” segnala se il file di prova è stato eseguito. Controlla che l&#8217;hosting permetta <code>.htaccess</code> in quella cartella e che non esista un blocco <code>&lt;Directory&gt;</code> più specifico. Su nginx le regole non hanno effetto. La regola copre solo la cartella <code>uploads</code> standard.</p>
<h3>Un plugin o il tema hanno smesso di funzionare</h3>
<p>Spegni l&#8217;ultima regola che hai attivato e salva. I casi più comuni: il blocco del PHP in <code>uploads</code> rompe i plugin che ci scrivono file PHP; la disabilitazione di XML-RPC ferma app e funzioni remote; il blocco dei caricamenti eseguibili rifiuta anche file come <code>.svg</code>.</p>
<h2>Utenti, autori e visitatori</h2>
<h3>Un autore non può più pubblicare: “il tuo account è sospeso”</h3>
<p>Il rate limiting ha visto troppi contenuti creati in poco tempo. Di default il limite è 150 contenuti in 300 secondi, con sospensione di 3600 secondi. Dalla scheda <strong>Rate limiting</strong>, nella tabella degli utenti sospesi, premi <strong>Revoca sospensione</strong>. Altrimenti aspetta la scadenza.</p>
<p>Spegnere “Rate limit attivo” non toglie una sospensione già in corso. Prima di un&#8217;importazione grande alza il limite N o disattiva il paletto.</p>
<h3>Un visitatore vede “Troppi invii”</h3>
<p>Un ospite ha inviato troppi commenti o moduli in poco tempo: di default più di 2 in 60 secondi, e il blocco dura 3600 secondi. Il blocco è per IP, quindi può colpire più persone nello stesso ufficio. Alza il valore N della sezione visitatori. Non esiste un elenco di eccezioni.</p>
<h3>Non riesco a creare un utente editor o amministratore</h3>
<p>È voluto. La policy predefinita di <strong>Registrazione utenti</strong> è “Solo ruoli a basso privilegio” e non fa eccezioni, nemmeno per te. Passa temporaneamente a “Nessuna restrizione”, crea l&#8217;utente, poi torna indietro. Con “Nessuna registrazione (esclusiva)” nessuno può creare utenti. Controlla anche il ruolo predefinito in Impostazioni &gt; Generali di WordPress: se è un ruolo vietato, le registrazioni vengono respinte.</p>
<h2>Collegamento al pannello</h2>
<h3>Il collegamento al pannello non risulta</h3>
<p>Lo stato è nel riquadro “Stato collegamento al pannello:” in cima alla scheda <strong>Impostazioni remote</strong>. Se il riquadro manca, i campi erano incompleti: servono Customer code, Chiave API e URL del pannello. Dopo “Salva e verifica collegamento” non compare un banner a parte.</p>
<ul>
<li>“URL del pannello non sicuro: serve https …”: l&#8217;indirizzo deve iniziare con <code>https</code>. Il plugin rifiuta anche di salvare un URL http.</li>
<li>“Autenticazione rifiutata dal pannello: customer_code o chiave API errati.”: ricontrolla i due valori.</li>
<li>“Impossibile raggiungere il pannello: …”: problema di rete, DNS o certificato.</li>
<li>“Risposta del pannello non valida (non è JSON).”: l&#8217;indirizzo non punta al pannello giusto.</li>
</ul>
<p>Se il pannello non risponde, la protezione locale continua e i dati in coda vengono inviati al giro dopo. Il plugin funziona anche senza pannello.</p>
<h3>Le attività non arrivano al pannello</h3>
<p>Nella scheda <strong>Registro attività</strong> guarda la tabella di diagnostica e la riga “in attesa di invio al pannello”. Premi <strong>Prova a inviare adesso</strong>: l&#8217;esito compare nella diagnostica. Il tetto di righe, di default 500, cancella le più vecchie anche se non sono state consegnate.</p>
<h2>Log di debug, integrità e header</h2>
<h3>Il log di debug non si accende</h3>
<p>Hai due messaggi possibili. “la cartella dei caricamenti non è scrivibile”: sistema i permessi di <code>uploads</code>. “i file della sua cartella risultano raggiungibili da internet”: probabile server senza <code>.htaccess</code>, come nginx. Blocca l&#8217;accesso alla cartella <code>csdn-debug-*</code> nella configurazione del server e riprova. Se il log si è fermato per il tetto di 200 MB, scarica o elimina i file e riaccendilo.</p>
<h3>L&#8217;integrità segna “i file del plugin non corrispondono”</h3>
<p>Se hai modificato a mano un file del plugin, è normale. Altrimenti tratta il sito come potenzialmente compromesso: reinstalla il plugin da una copia attendibile e controlla il resto. Se il messaggio dice che non c&#8217;è alcun riferimento, riattiva il plugin per scattare una nuova fotografia.</p>
<h3>HSTS non si attiva, o non si spegne</h3>
<p>Per attivarlo devi aprire le impostazioni del plugin in https, altrimenti compare “HSTS NON è stato attivato”. Salva sempre da una pagina https. Spegnere la casella ferma l&#8217;invio dell&#8217;header, ma i browser che l&#8217;hanno già ricevuto lo ricordano a lungo.</p>
<h2>Se non trovi la risposta</h2>
<p>Se la risoluzione problemi non basta, accendi il log di debug, riproduci il problema e leggi la voce. Poi apri una discussione sul <a href="https://wordpress.org/support/plugin/cisilino-site-defense-network/" target="_blank" rel="noopener">forum di supporto del plugin</a>: è il posto dove ricevere aiuto e vedere i problemi già segnalati. Non incollare percorsi del server o dati sensibili.</p>
<p>Capitolo precedente: <a href="https://www.cisilino.com/?p=985">Log di debug: gli errori PHP in un file proprio</a>. Capitolo successivo: <a href="https://www.cisilino.com/?p=987">Disattivazione, disinstallazione e dati personali</a>. Per l&#8217;indice: <a href="https://www.cisilino.com/?p=972">manuale CSDN</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-risoluzione-problemi/">Risoluzione dei problemi e domande frequenti</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-risoluzione-problemi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Log di debug: gli errori PHP in un file proprio</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-log-di-debug/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-log-di-debug/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:59 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[errori PHP]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=985</guid>

					<description><![CDATA[<p>Come accendere il Log di debug del plugin CSDN dalla versione 1.0.15: durata, dimensione dei file, rotazione, download e limiti.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-log-di-debug/">Log di debug: gli errori PHP in un file proprio</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Il log di debug WordPress è una novità del plugin CSDN dalla versione 1.0.15. Registra gli errori PHP del sito in un file proprio, senza toccare <code>wp-config.php</code>. Lo accendi dal backend e si spegne da 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="Schema di WordPress con la scheda Log di debug WordPress del plugin CSDN evidenziata" width="1200" height="630"/></figure>
<h2>Dove si trova</h2>
<p>Vai su Impostazioni &gt; Cisilino Site Defense Network (punto 1 dell&#8217;immagine) e apri la scheda <strong>Log di debug</strong> (punto 2). Le sezioni sono tre:</p>
<ul>
<li>punto 3: “Log di debug del sito”, con stato e accensione.</li>
<li>punto 4: “File raccolti”.</li>
<li>punto 5: “Ultime voci”.</li>
</ul>
<h2>A cosa serve il log di debug WordPress</h2>
<p>Ti torna utile quando il sito mostra una pagina bianca o un errore critico, quando qualcosa si rompe dopo un aggiornamento, o quando il tuo hosting non ti lascia modificare <code>wp-config.php</code> né leggere i log. Le costanti <code>WP_DEBUG</code> e <code>WP_DEBUG_LOG</code> si definiscono prima del caricamento dei plugin, quindi un plugin non può accenderle. Questo log usa un gestore di errori PHP agganciato al caricamento del plugin.</p>
<p>Questo log si aggiunge, non sostituisce niente. Gli errori continuano ad arrivare anche dove arrivavano prima, cioè in <code>debug.log</code> e nel log del server. Non invia nulla al pannello.</p>
<h2>Come si usa</h2>
<ol>
<li>Apri la scheda <strong>Log di debug</strong>.</li>
<li>Scegli <strong>Resta acceso per</strong>: <strong>1 ora</strong>, <strong>24 ore</strong> (predefinito) o <strong>7 giorni</strong>.</li>
<li>Scegli <strong>Dimensione massima per file</strong>.</li>
<li>Premi <strong>Accendi il log di debug</strong>. Leggi “Log di debug acceso. Si spegne da solo allo scadere del tempo scelto; i file restano.”.</li>
<li>Riproduci il problema sul sito.</li>
<li>Torna alla scheda. Leggi “Ultime voci” oppure scarica il file dalla sezione “File raccolti”.</li>
<li>Quando hai finito premi <strong>Spegni il log di debug</strong>, oppure aspetta la scadenza. Vedrai “Log di debug spento. I file raccolti sono ancora qui sotto.”.</li>
</ol>
<p>Lo “Stato:” ti dice se il log è “acceso, si spegne il gg/mm/aaaa hh:mm”, “spento (scaduto il …)” oppure “spento”. A log acceso puoi cambiare la dimensione con <strong>Salva dimensione</strong>.</p>
<h3>File raccolti</h3>
<p>La tabella elenca nome, dimensione e i pulsanti <strong>Scarica</strong> ed <strong>Elimina</strong>. Sotto trovi <strong>Elimina tutti i file</strong>. Prima di cancellare il plugin chiede conferma: “Eliminare questo file? L&#8217;operazione non si può annullare.”. Per <strong>Elimina tutti i file</strong> il testo è “Eliminare tutti i file del log di debug? L&#8217;operazione non si può annullare.”. Se non c&#8217;è nulla leggi “Nessun file: il log non è mai stato acceso o non ha ancora registrato nulla.”.</p>
<h3>Ultime voci</h3>
<p>Il riquadro mostra le 200 voci più recenti, dalla più nuova. Il menu <strong>Tutti i livelli</strong> ti permette di filtrare per Fatal error, Parse error, Recoverable error, Warning, Notice o Deprecated. Poi premi <strong>Filtra</strong>. Per tutto il resto scarica i file. Se il filtro non trova nulla leggi “Nessuna voce con questo filtro.”.</p>
<p>Una voce ha questa forma:</p>
<p><code>[2026-10-29 10:15:03 UTC] Warning: messaggio in /percorso/file.php:12 | GET /pagina</code></p>
<ul>
<li>L&#8217;orario è in UTC, diverso dall&#8217;ora del sito che vedi nel <a href="https://www.cisilino.com/?p=984">Registro attività</a>.</li>
<li>Dopo la barra verticale trovi metodo e percorso della richiesta, senza query string. Da riga di comando o cron vedi “cli/cron”.</li>
<li>Un messaggio su più righe, come uno stack trace, resta una sola voce con le righe successive rientrate.</li>
<li>Le righe “Info: log di debug attivato (utente N)” e “Info: log di debug disattivato (utente N)” non hanno un livello: con un filtro non compaiono.</li>
</ul>
<h2>Valori predefiniti e limiti</h2>
<ul>
<li>Durata del log di debug WordPress: 1 ora, 24 ore o 7 giorni. Un altro valore diventa 24 ore.</li>
<li>Dimensione per file: 1, 5, 10, 25 o 50 MB. Il predefinito è 5 MB. La dimensione scelta si salva quando premi <strong>Accendi il log di debug</strong> o <strong>Salva dimensione</strong>. Attenzione: <strong>Spegni il log di debug</strong> riporta la dimensione a 5 MB, perché quel modulo non contiene il menu della dimensione.</li>
<li>Tetto complessivo: 200 MB, sommando file <code>.log</code> e <code>.zip</code>.</li>
<li>Ogni messaggio è troncato a 4000 caratteri.</li>
<li>Registra solo errori PHP: non query lente, errori JavaScript o richieste HTTP.</li>
</ul>
<h2>Esempi</h2>
<ul>
<li>Errore critico dopo l&#8217;aggiornamento di un plugin: accendi per 1 ora, ricarica la pagina, filtra “Fatal error”. La voce indica file e riga, per esempio <code>/…/plugins/xyz/file.php:210 | GET /negozio/</code>.</li>
<li>Avvisi sporadici: 24 ore, filtro Warning o Deprecated. Se il file è stato ruotato, scarica lo zip.</li>
<li>Sito lento senza una causa chiara: 7 giorni con file da 25 MB, poi cerca Notice e Warning che si ripetono.</li>
</ul>
<p>Tieni acceso il minimo necessario: spesso basta 1 ora.</p>
<p><strong>Attenzione:</strong> i file del log di debug contengono percorsi del server e frammenti di dati. Non condividerli in pubblico. Restano sul disco anche dopo lo spegnimento e dopo la disinstallazione del plugin, che cancella le opzioni ma non i file. Eliminali tu quando hai finito. Il tetto complessivo è di 200 MB.</p>
<p><strong>Attenzione:</strong> su server nginx l&#8217;accensione può essere rifiutata finché il server non blocca la cartella <code>csdn-debug-*</code>. Il messaggio è “Log di debug non acceso: i file della sua cartella risultano raggiungibili da internet (probabile server senza supporto a .htaccess, come nginx). I log possono contenere percorsi e dati: blocca l&#8217;accesso alla cartella csdn-debug-* nella configurazione del server e riprova.”. Se non gestisci il server, chiedi a chi lo gestisce.</p>
<p><strong>Attenzione:</strong> il log non vede gli errori soppressi con <code>@</code> né quelli generati prima del caricamento del plugin. Per esempio non vede gli errori di <code>wp-config.php</code>. Il log di debug WordPress del plugin non sostituisce i log del server.</p>
<h2>Cosa succede dietro le quinte</h2>
<p>Il log di debug WordPress salva i file in una cartella <code>wp-content/uploads/csdn-debug-</code> seguita da 16 caratteri casuali. Dentro ci sono un <code>index.php</code>, un <code>.htaccess</code> che nega l&#8217;accesso e il file in uso <code>csdn-debug.log</code>. All&#8217;accensione il plugin scrive un file di prova e prova a leggerlo via HTTP. Se risponde, rifiuta di accendere il log.</p>
<p>Quando il file in uso supera la dimensione scelta viene chiuso, compresso in <code>.zip</code> e ne parte uno nuovo. Nessuna voce va persa. Il <code>.log</code> originale si cancella solo dopo aver verificato lo zip. Se la compressione non riesce, il <code>.log</code> resta. Le voci di “Ultime voci” vengono lette solo dal file in uso, quindi dopo una rotazione quelle vecchie sono negli zip.</p>
<p>Prima di ruotare il plugin controlla il tetto di 200 MB. Se è raggiunto, il log si ferma per non sovrascrivere nulla. Compare l&#8217;avviso giallo: “Il log si è fermato perché i file hanno raggiunto il tetto di spazio (200 MB): per non sovrascrivere i dati non scrive più. Scarica o elimina i file, poi riaccendilo.”. Per ripartire elimina i file e riaccendi.</p>
<p>Alla scadenza il log si spegne da solo, ma i file restano. Il plugin non li tronca e non li cancella mai: lo fai solo tu con <strong>Elimina</strong> o <strong>Elimina tutti i file</strong>. Per gli errori fatali la voce viene scritta a fine richiesta.</p>
<h2>Se il log di debug WordPress non funziona</h2>
<ul>
<li>“Log di debug non acceso: la cartella dei caricamenti non è scrivibile.”: controlla i permessi della cartella <code>wp-content/uploads</code>.</li>
<li>Il log non scrive: se la scrittura fallisce, il plugin lo segnala con una voce “Log di debug del sito: …” negli “Ultimi tentativi” della scheda <a href="https://www.cisilino.com/?p=984">Registro attività</a>.</li>
<li>Il log è fermo per il tetto: scarica ciò che ti serve, elimina i file e riaccendi.</li>
</ul>
<p>La <a href="https://www.cisilino.com/?p=972">guida generale al manuale</a> spiega dove si colloca questa scheda. Per capire meglio le costanti di WordPress guarda la <a href="https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/" target="_blank" rel="noopener">guida ufficiale al debug di WordPress</a>: spiega <code>WP_DEBUG</code> e <code>WP_DEBUG_LOG</code>, che questo plugin non può sostituire.</p>
<p>Capitolo precedente: <a href="https://www.cisilino.com/?p=984">Registro attività</a>. Capitolo successivo: <a href="https://www.cisilino.com/?p=986">Risoluzione dei problemi e domande frequenti</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-log-di-debug/">Log di debug: gli errori PHP in un file proprio</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-log-di-debug/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Registro attività: cosa è successo sul sito</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-registro-attivita/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-registro-attivita/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:53 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[audit log]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<category><![CDATA[registro attività]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=984</guid>

					<description><![CDATA[<p>Come usare la scheda Registro attività del plugin CSDN: gruppi di eventi, filtri, retention, tetto righe, invio al pannello e svuotamento.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-registro-attivita/">Registro attività: cosa è successo sul sito</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Il registro attività WordPress del plugin CSDN è un diario locale di chi ha fatto cosa e quando sul tuo sito. Registra accessi, utenti, contenuti, plugin, temi e altro. Serve a ricostruire che cosa è successo.</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="Schema di WordPress con la scheda Registro attività WordPress del plugin CSDN evidenziata" width="1200" height="630"/></figure>
<h2>Dove si trova</h2>
<p>Nel backend vai su Impostazioni &gt; Cisilino Site Defense Network (punto 1 dell&#8217;immagine). Apri la scheda <strong>Registro attività</strong> (punto 2). Dall&#8217;alto in basso trovi queste sezioni:</p>
<ul>
<li>punto 3: “Impostazioni del registro attività”.</li>
<li>punto 4: la riga di stato sopra il modulo, con i contatori delle righe.</li>
<li>punto 5: “Diagnostica invio al pannello”.</li>
<li>punto 6: “Attività registrate”, la tabella con i filtri.</li>
<li>punto 7: “Svuota il registro locale”.</li>
</ul>
<h2>A cosa serve il registro attività WordPress</h2>
<p>Ti aiuta a rispondere a domande come “chi ha disattivato quel plugin?” oppure “da che IP è entrato quell&#8217;utente?”. Ogni evento è una riga nella tabella del database del sito.</p>
<p>Non confonderlo con il contatore dei login falliti per IP, che serve a decidere i blocchi. Sono due dati separati, con regole di conservazione diverse. Il tentativo di login fallito però compare anche qui, una riga per tentativo.</p>
<p>Per lo storico lungo e per le ricerche serie conviene il pannello. Il registro locale funziona anche senza pannello. Il collegamento si configura in <a href="https://www.cisilino.com/?p=974">Impostazioni remote</a>.</p>
<h2>Come si usa</h2>
<ol>
<li>Apri la scheda e guarda la riga “Righe nel registro locale: N — in attesa di invio al pannello: M”.</li>
<li>Nel modulo scegli le impostazioni descritte sotto.</li>
<li>Premi <strong>Salva impostazioni registro</strong>. Compare “Impostazioni del registro attività salvate.”.</li>
<li>Per leggere gli eventi vai a “Attività registrate”. Scegli un gruppo dal menu <strong>Tutti i gruppi</strong>, oppure scrivi nel campo <strong>Utente, oggetto o IP</strong>, poi premi <strong>Filtra</strong>.</li>
</ol>
<h3>Le impostazioni del modulo</h3>
<ul>
<li>“Registra le attività su questo sito”: se la spegni, non vengono scritte nuove righe. Le vecchie restano.</li>
<li>“Retention locale (giorni)”: da 0 a 3650. Con 0 non si cancella mai per età.</li>
<li>“Tetto righe conservate”: da 0 a 1.000.000. Con 0 non c&#8217;è tetto.</li>
<li>“Invia le attività al pannello”: richiede il collegamento in Impostazioni remote.</li>
<li>“Consegna immediata”: l&#8217;invio parte a fine richiesta, senza far aspettare il visitatore. Se la spegni, l&#8217;invio avviene solo con la sincronizzazione ogni 15 minuti.</li>
<li>“Cosa registrare”: una casella per ciascuno dei 18 gruppi di eventi.</li>
</ul>
<h3>I gruppi di eventi</h3>
<p>I gruppi hanno queste etichette, identiche nelle caselle di “Cosa registrare” e nel menu <strong>Tutti i gruppi</strong>: Accessi (login, logout, tentativi falliti); Utenti (creazione, modifica profilo, ruoli, eliminazione); Contenuti (articoli, pagine, custom post type); Categorie e tag; Commenti; Media (allegati); Plugin (attivazione, disattivazione, installazione, aggiornamento); Temi (cambio tema, aggiornamento, personalizzazione); Aggiornamenti di WordPress; Impostazioni di WordPress; Menu di navigazione; Widget; Editor file di temi/plugin da wp-admin; Esportazione contenuti; Caricamenti di file (compresi quelli fuori dalla libreria media); Integrità dei file del plugin; Impostazioni dei plugin (comprese quelle di questo plugin); Ciclo di vita del plugin (disattivazione, disinstallazione, svuotamento del registro).</p>
<p>Per le impostazioni di WordPress si registra solo una selezione di opzioni principali, per esempio <code>blogname</code>, <code>siteurl</code>, <code>admin_email</code>, <code>default_role</code> e <code>active_plugins</code>. Per gli altri plugin si vedono solo le impostazioni dichiarate con <code>register_setting()</code> o salvate da <code>options.php</code>. L&#8217;editor file registra il tentativo, non l&#8217;esito.</p>
<h3>Come leggere la tabella</h3>
<p>Le colonne sono Quando, Utente, IP, Gruppo, Azione, Dettaglio e Inviato. Le righe sono 50 per pagina, le più recenti per prime. Usa <strong>Precedenti</strong> e <strong>Successive</strong> per muoverti. Se non c&#8217;è nulla leggi “Nessuna attività registrata (con questi filtri).”.</p>
<p>Gruppo e Azione compaiono con il nome grezzo, per esempio <code>plugins</code> e <code>deactivated</code>. Chi non è autenticato appare come “(non autenticato)”. Nella colonna Inviato trovi la data di conferma del pannello, oppure “—” se la riga è ancora in coda. Il campo dei dettagli tecnici non è visibile qui: si legge sul pannello.</p>
<p>Un esempio di riga: 12/10/2026 09:14:02, utente mario (administrator), IP <code>203.0.113.5</code>, gruppo <code>plugins</code>, azione <code>deactivated</code>.</p>
<h3>Esempi di lettura</h3>
<ul>
<li>Gruppo “Accessi (login, logout, tentativi falliti)” e un IP sospetto: una serie di <code>failed</code> seguita da un <code>success</code> può voler dire che qualcuno ha indovinato la password.</li>
<li>Una riga <code>users</code> con azione <code>role_changed</code> e un utente inatteso: controlla se è una scalata di privilegi.</li>
<li>Una riga del gruppo Caricamenti con un avviso di blocco: qualcuno ha provato a caricare un file pericoloso.</li>
</ul>
<h2>Valori predefiniti del registro attività WordPress</h2>
<ul>
<li>Registro acceso, invio al pannello acceso, consegna immediata accesa, tutti i gruppi attivi.</li>
<li>Retention: 30 giorni. La cancellazione per età avviene una volta al giorno.</li>
<li>Tetto righe: 500. Il controllo scatta ogni 100 inserimenti, quindi la tabella può superarlo di circa 100 righe.</li>
<li>Se salvi senza spuntare nessun gruppo, il registro resta acceso ma non scrive nulla.</li>
<li>Non registra le visite normali e non esporta i dati.</li>
</ul>
<p><strong>Attenzione:</strong> un login fallito salva lo username digitato. Se qualcuno scrive la password nel campo username, quel testo resta nel registro, che può andare al pannello. Il plugin non lo filtra. Tienilo presente quando condividi o consulti il registro.</p>
<p><strong>Attenzione:</strong> il tetto righe (default 500) cancella le righe più vecchie anche se non sono ancora state inviate al pannello. Il tetto ha la precedenza sulla garanzia di consegna. Sui siti con molto traffico non autenticato (login falliti, commenti, invii di file) 500 righe possono finire presto. Se ti serve lo storico completo, alza il tetto, ma tieni conto che con 0 togli il limite di spazio sul disco.</p>
<p><strong>Attenzione:</strong> “Svuota registro attività” è irreversibile in locale. Prima chiede conferma: “Svuotare tutto il registro attività locale? L&#8217;operazione non è reversibile.”.</p>
<h2>Che cosa non viene salvato</h2>
<p>Le password in chiaro non vengono mai registrate. Alla modifica di un profilo si salva solo l&#8217;indicazione che la password è cambiata. Il campo “Chiave API” del plugin è mostrato come <code>***</code>. Le opzioni di altri plugin il cui nome contiene parole come key, secret, token, password, auth, salt, nonce, license o credential hanno il valore sostituito con “*** (valore non registrato)”. I valori delle opzioni sono troncati a 200 caratteri.</p>
<h2>Diagnostica dell&#8217;invio al pannello</h2>
<p>La sezione al punto 5 serve quando le attività non arrivano al pannello. Un invio che fallisce non dà errori visibili: le righe restano in coda e riprovano. L&#8217;unico sintomo è il contatore “in attesa” che non scende.</p>
<p>La tabella mostra, tra le altre voci, “Collegamento al pannello”, “Registro attività”, “Invio al pannello”, “Consegna immediata”, “Righe in coda”, “Destinazione di error_log()” e “Ultimo tentativo di invio”. I valori problematici sono in rosso. Se l&#8217;ultimo tentativo risulta con meno righe accettate che inviate, compare “Righe scartate dal pannello”: quelle righe non vengono ritentate.</p>
<p>I pulsanti sono tre:</p>
<ul>
<li><strong>Prova a inviare adesso</strong>: fa un invio di prova subito. L&#8217;esito è nella tabella.</li>
<li><strong>Attiva log dettagliato</strong> (poi <strong>Disattiva log dettagliato</strong>): registra anche gli invii riusciti.</li>
<li><strong>Svuota registro diagnostico</strong>: cancella solo l&#8217;elenco “Ultimi tentativi”, che tiene al massimo 25 voci. Compare solo se ci sono voci.</li>
</ul>
<h2>Cosa succede dietro le quinte</h2>
<p>A fine richiesta il plugin chiude la risposta al visitatore, quando il server lo permette, e invia le righe al pannello in lotti da massimo 200, dalle più vecchie. Una riga conta come consegnata solo quando il pannello ne conferma la ricezione. Una sincronizzazione ogni 15 minuti fa da rete di sicurezza.</p>
<p>La retention per età cancella le righe vecchie una volta al giorno. Se l&#8217;invio è acceso e il pannello è configurato, cancella solo quelle già confermate. Altrimenti cancella per sola età.</p>
<p>Lo svuotamento tenta prima di inviare l&#8217;arretrato, poi cancella tutto. Registra l&#8217;evento di svuotamento, che diventa la prima riga del registro nuovo. Non invia alcun comando di cancellazione al pannello: lo storico già inviato resta lì. Dopo lo svuotamento leggi “Registro attività locale svuotato. Lo storico già inviato al pannello non è stato toccato.”. Se c&#8217;erano righe mai consegnate, un avviso in grassetto ti dice quante sono andate perse.</p>
<h2>Se il registro attività WordPress non invia</h2>
<ul>
<li>Il contatore “in attesa” non scende: apri la diagnostica, guarda l&#8217;ultimo tentativo e il codice HTTP, poi premi “Prova a inviare adesso”.</li>
<li>Riquadro giallo sul pannello che non conferma: il pannello potrebbe non essere aggiornato. Le righe restano in coda e non si perde nulla.</li>
<li>Collegamento “NON configurato”: senza customer code, chiave API e URL non viene inviato nulla. Torna a <a href="https://www.cisilino.com/?p=974">Impostazioni remote</a>.</li>
</ul>
<p>Per una guida più ampia sulle buone pratiche di registrazione leggi la <a href="https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html" target="_blank" rel="noopener">guida OWASP al logging</a>: spiega che cosa conviene registrare e che cosa evitare.</p>
<p>Torna al <a href="https://www.cisilino.com/?p=972">capitolo 1, l&#8217;indice del manuale</a>. Capitolo precedente: <a href="https://www.cisilino.com/?p=983">Rate limiting</a>. Capitolo successivo: <a href="https://www.cisilino.com/?p=985">Log di debug</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-registro-attivita/">Registro attività: cosa è successo sul sito</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-registro-attivita/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Rate limiting: limiti su autori e visitatori</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-rate-limiting/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-rate-limiting/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:51 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<category><![CDATA[rate limiting]]></category>
		<category><![CDATA[sospensione utenti]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=983</guid>

					<description><![CDATA[<p>Come usare la scheda Rate limiting del plugin CSDN: limiti ad autori e visitatori, valori predefiniti, sospensioni e revoca.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-rate-limiting/">Rate limiting: limiti su autori e visitatori</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Il rate limiting WordPress messo a disposizione da CSDN mette dei paletti agli abusi di scrittura. Da un lato ci sono gli autori che pubblicano troppi contenuti in poco tempo, per esempio con un account compromesso. Dall&#8217;altro ci sono i visitatori che inviano troppi commenti o form di contatto. Ogni paletto si attiva e si regola da solo.</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="Schema di WordPress con la scheda Rate limiting WordPress del plugin CSDN evidenziata" width="1200" height="630"/></figure>
<h2>Dove si trova</h2>
<p>Vai su <strong>Impostazioni</strong> e scegli <strong>Cisilino Site Defense Network</strong> (punto 1 dell&#8217;immagine). Apri la scheda “Rate limiting” (punto 2). Per salvare serve il permesso <code>manage_options</code>; su multisite serve <code>manage_network_options</code>.</p>
<p>Le sezioni sono quattro. Il punto 3 è “Come funziona, in concreto: cosa viene contato”. Il punto 4 è “1. Autori: pubblicazioni troppo frequenti”. Il punto 5 è “2. Visitatori: commenti e form di contatto”. Il punto 6 è “Utenti attualmente sospesi”. I valori di tempo sono tutti in secondi.</p>
<h2>A cosa serve</h2>
<p>Il paletto sugli autori ferma un account che pubblica a raffica, prima che riempia il sito di contenuti. Il paletto sui visitatori frena chi inonda commenti e form. Il codice conosce anche un terzo paletto, l&#8217;email obbligatoria. Lo trovi nella scheda “Registrazione utenti”, descritta nel <a href="https://www.cisilino.com/?p=982">capitolo precedente</a>.</p>
<h2>Come si usa</h2>
<h3>Cosa viene contato (punto 3)</h3>
<p>Il riquadro informativo spiega le regole. Per gli autori, il controllo scatta quando WordPress salva un articolo o una pagina. Il plugin conta quanti articoli e pagine di quell&#8217;autore hanno data di creazione o pubblicazione negli ultimi T secondi. Se sono più di N, l&#8217;autore viene sospeso. Il salvataggio che supera la soglia va a buon fine: la sospensione blocca i successivi.</p>
<p>Non contano plugin e temi, gli accessi, le modifiche a contenuti più vecchi della finestra, le bozze automatiche, le revisioni, il cestino, i media, i commenti e gli altri tipi di contenuto. Gli ambienti temporanei, come quello di prova del Plugin Check, vengono ignorati.</p>
<p><strong>Attenzione:</strong> l&#8217;esempio scritto in quel riquadro cita ancora N=3. È un testo vecchio. Il valore predefinito reale è 150 contenuti in 5 minuti, dalla versione 1.0.13.</p>
<h3>Autori (punto 4)</h3>
<ol>
<li>Spunta “Rate limit attivo” per limitare le pubblicazioni degli autori.</li>
<li>Decidi se tenere “Alert via email”: ricevi una mail alla sospensione di un autore.</li>
<li>Imposta “N: contenuti ammessi”, da 1 a 1000. Predefinito 150.</li>
<li>Imposta “T: finestra (secondi)”, da 10 a 86400. Predefinito 300, cioè 5 minuti.</li>
<li>Imposta “S: sospensione (secondi)”, da 60 a 2592000. Predefinito 3600, cioè 1 ora.</li>
<li>Premi <strong>Salva impostazioni rate limiting</strong>.</li>
</ol>
<p>La mail va all&#8217;indirizzo amministratore di Impostazioni > Generali. Contiene l&#8217;utente, i contenuti nella finestra, la scadenza e l&#8217;elenco fino a 20 contenuti recenti da controllare. La sospensione non modifica quei contenuti.</p>
<h3>Visitatori (punto 5)</h3>
<ol>
<li>Spunta “Rate limit attivo” per limitare gli invii degli ospiti.</li>
<li>L&#8217;“Alert via email” è disattivo di default. Su un sito esposto può generare molte mail. Arriva allo stesso indirizzo amministratore di Impostazioni > Generali, una volta per ogni blocco.</li>
<li>“N: invii ammessi”, da 1 a 100. Predefinito 2.</li>
<li>“T: finestra (secondi)”, da 5 a 3600. Predefinito 60.</li>
<li>“S: blocco IP (secondi)”, da 60 a 2592000. Predefinito 3600.</li>
</ol>
<p>Il paletto riguarda solo chi non è loggato. Conta gli invii per IP e per tipo, commenti oppure form. Un blocco sui commenti non blocca i form. I form di contatto coperti sono quelli di Contact Form 7. Il commento respinto mostra “Troppi invii” con errore 429.</p>
<p>Se un valore è fuori dai limiti, il plugin lo porta al più vicino ammesso. Il salvataggio mostra “Impostazioni del rate limiting salvate. I valori fuori dai limiti ammessi sono stati riportati al più vicino consentito.”</p>
<h2>Rate limiting WordPress: sospensioni e blocchi</h2>
<p>Un autore sospeso mantiene il suo ruolo e può usare il resto del pannello. Perde però i permessi di creare e pubblicare articoli e pagine. Spariscono “Aggiungi articolo” e le voci delle pagine, e se apre quelle schermate riceve “permesso negato”. In bacheca compare un avviso che non si può chiudere.</p>
<p><strong>Attenzione:</strong> la sospensione degli autori colpisce anche gli amministratori. Un amministratore sospeso perde la creazione e la pubblicazione, ma può ancora aprire le Impostazioni e revocare la sospensione da solo. Non esiste una lista di eccezioni per utenti, ruoli o IP: la whitelist IP della scheda Generale non esenta dal rate limiting.</p>
<p><strong>Attenzione:</strong> il blocco dei visitatori è per IP. Più persone dietro lo stesso IP, come un ufficio, possono essere bloccate insieme. In quel caso alza N. Il plugin legge solo l&#8217;indirizzo di connessione (<code>REMOTE_ADDR</code>) e non gli header di proxy o CDN: dietro un proxy inverso o una CDN tutti i visitatori possono apparire con lo stesso IP e bloccarsi a vicenda.</p>
<h3>Come revocare una sospensione</h3>
<p>Hai due strade.</p>
<ol>
<li>Aspetta. La sospensione finisce da sola dopo S secondi.</li>
<li>Nella sezione al punto 6, “Utenti attualmente sospesi”, premi <strong>Revoca sospensione</strong> sulla riga dell&#8217;utente. Vedrai “Sospensione revocata: l&#8217;utente può di nuovo creare e pubblicare contenuti.” Se la tabella è vuota leggi “Nessun utente sospeso.”</li>
</ol>
<p>La tabella mostra al massimo 100 utenti. Gli avvisi in bacheca hanno i link “Revoca la sospensione” e “Controlla e revoca”, che portano alla stessa scheda.</p>
<p>Spegnere “Rate limit attivo” non toglie una sospensione già in corso. Per toglierla devi revocarla o aspettare la scadenza.</p>
<h2>Cosa succede dietro le quinte</h2>
<p>La sospensione è una informazione salvata sull&#8217;utente, con la data di scadenza. Per gli ospiti, ogni invio viene registrato per 24 ore in una tabella del plugin e poi conteggiato nella finestra. Se due richieste arrivano insieme, qualcuna in più può passare. Sospensioni e blocchi finiscono nel Registro attività, se è attivo e se i gruppi Utenti e Commenti sono abilitati.</p>
<p><strong>Attenzione:</strong> un&#8217;importazione legittima di molti contenuti può far scattare il paletto sugli autori. Prima di una migrazione disattiva il paletto o alza N.</p>
<h2>Esempi di rate limiting WordPress</h2>
<ul>
<li>Blog con un solo autore: puoi abbassare N a 10 o 20 con T=300. Intercetti prima un account compromesso. Sono valori di prova, non una regola del plugin.</li>
<li>Redazione che duplica o importa pagine: tieni 150/300 o più.</li>
<li>Uffici con IP condiviso: alza gli invii ammessi dei visitatori a 3 o 5.</li>
</ul>
<p>Conversioni utili: 300 secondi sono 5 minuti, 3600 sono 1 ora, 86400 sono 1 giorno. Per approfondire il tema generale, leggi la guida OWASP <a href="https://owasp.org/www-community/controls/Blocking_Brute_Force_Attacks" target="_blank" rel="noopener">Blocking Brute Force Attacks</a>, che spiega perché limitare i tentativi ripetuti.</p>
<p>Precedente: <a href="https://www.cisilino.com/?p=982">Registrazione utenti: chi può creare account</a>. Successivo: <a href="https://www.cisilino.com/?p=984">Registro attività: cosa è successo sul sito</a>. Per l&#8217;indice generale vai al <a href="https://www.cisilino.com/?p=972">capitolo 1 del manuale</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-rate-limiting/">Rate limiting: limiti su autori e visitatori</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-rate-limiting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Registrazione utenti: chi può creare account</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-registrazione-utenti/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-registrazione-utenti/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:49 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<category><![CDATA[registrazione utenti]]></category>
		<category><![CDATA[ruoli WordPress]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=982</guid>

					<description><![CDATA[<p>Come usare la scheda Registrazione utenti del plugin CSDN: policy, ruoli ammessi, email obbligatoria e i limiti della protezione.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-registrazione-utenti/">Registrazione utenti: chi può creare account</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>La scheda “Registrazione utenti” decide chi può creare nuovi account sul tuo sito e con quale ruolo. È la difesa contro gli amministratori nascosti, cioè account creati di nascosto per tornare sul sito dopo un attacco. La registrazione utenti WordPress si governa da qui. In questo capitolo vedi la policy di registrazione, i ruoli ammessi e l&#8217;email obbligatoria.</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="Schema di WordPress con la scheda Registrazione utenti WordPress del plugin CSDN evidenziata" width="1200" height="630"/></figure>
<h2>Dove si trova</h2>
<p>Nel menu di WordPress apri <strong>Impostazioni</strong> e poi <strong>Cisilino Site Defense Network</strong> (punto 1 dell&#8217;immagine). Scegli la scheda “Registrazione utenti” (punto 2). Per salvare serve il permesso <code>manage_options</code>; su multisite serve <code>manage_network_options</code>.</p>
<p>Le sezioni sono tre. Il punto 3 è “Policy di registrazione”. Il punto 4 è “Ruoli ammessi (solo livello &#8220;ruoli a basso privilegio&#8221;)”. Il punto 5 è “Email obbligatoria”.</p>
<h2>A cosa serve</h2>
<p>La policy vale per ogni via di creazione: il pannello wp-admin, la REST API, XML-RPC, WP-CLI e qualunque plugin o tema che usi le funzioni di WordPress per creare utenti. Il controllo è fatto in PHP, senza toccare il file <code>.htaccess</code>.</p>
<h2>Come si usa</h2>
<h3>Policy di registrazione (punto 3)</h3>
<p>Scegli un solo livello tra tre. Non si sommano.</p>
<ul>
<li>“Nessuna restrizione (disattivato)”: il modulo è spento e WordPress si comporta come sempre.</li>
<li>“Solo ruoli a basso privilegio (mai amministratore/editor/autore)”: è il livello predefinito. Valgono i ruoli ammessi del punto 4.</li>
<li>“Nessuna registrazione (esclusiva)”: nessun nuovo utente può essere creato.</li>
</ul>
<h3>Ruoli ammessi (punto 4)</h3>
<p>Vale solo per il livello dei ruoli a basso privilegio. Puoi spuntare <code>subscriber</code> (spuntato di default), <code>contributor</code> e <code>customer</code> (utile con WooCommerce). Le caselle <code>administrator</code>, <code>editor</code>, <code>author</code> e <code>shop_manager</code> sono sempre disabilitate, con la scritta “mai consentito”.</p>
<h3>Email obbligatoria (punto 5)</h3>
<p>La casella “Non creare utenti senza un indirizzo email valido” è attiva di default. Impedisce la creazione di utenti senza un&#8217;email valida, da qualunque via. Non tocca gli utenti che esistono già. Questa impostazione è salvata insieme a quelle del rate limiting, ma si gestisce qui.</p>
<p>Alla fine premi <strong>Salva policy di registrazione</strong>. Vedrai “Policy di registrazione utenti salvata.” Il salvataggio finisce nel Registro attività, con l&#8217;etichetta “Registrazione utenti”.</p>
<h2>Registrazione utenti WordPress: valori predefiniti e limiti</h2>
<ul>
<li>La policy predefinita è “Solo ruoli a basso privilegio”, attiva anche se non hai mai salvato nulla.</li>
<li>Il ruolo ammesso di partenza è solo <code>subscriber</code>.</li>
<li>I ruoli vietati vengono scartati sempre, anche se qualcuno prova a inviarli a mano.</li>
<li>L&#8217;elenco dei ruoli è fisso: non mostra i ruoli personalizzati del tuo sito.</li>
<li>Non esistono liste di domini email, captcha o controlli anti-spam sulle registrazioni.</li>
</ul>
<p><strong>Attenzione:</strong> con “Nessuna registrazione (esclusiva)” nessuno può creare utenti, nemmeno l&#8217;amministratore. La voce “Aggiungi nuovo utente” sparisce dal menu e aprire <code>user-new.php</code> a mano dà un errore 403. Se al livello dei ruoli a basso privilegio togli la spunta a tutti i ruoli, l&#8217;elenco resta vuoto e nessun utente è ammesso. Qui però la voce di menu e la pagina restano visibili: l&#8217;errore 403 arriva solo quando provi a creare l&#8217;utente.</p>
<p>Con il livello predefinito non puoi creare un editor o un autore nemmeno da amministratore. Il plugin non prevede eccezioni per chi è già loggato. Per creare un utente con un ruolo alto, passa temporaneamente a “Nessuna restrizione”, crea l&#8217;utente e poi torna indietro.</p>
<p>Controlla anche il “Ruolo predefinito per i nuovi utenti” in Impostazioni > Generali di WordPress. Se è un ruolo vietato, come Editor, ogni registrazione senza ruolo esplicito viene respinta.</p>
<h2>Cosa succede dietro le quinte</h2>
<p>Il controllo principale agisce sul filtro <code>pre_insert_user_data</code>, solo alla creazione di un utente. Le modifiche agli utenti esistenti passano sempre. Un tentativo respinto mostra il titolo “Registrazione non consentita” con errore 403. Sulla REST API ricevi un errore JSON 403 al posto della pagina.</p>
<p>Con qualunque policy attiva, il plugin toglie il metodo XML-RPC <code>wp.newUser</code>. Con la policy esclusiva forza anche a falso l&#8217;opzione “Chiunque può registrarsi” di WordPress. Con il livello dei ruoli bassi, quell&#8217;opzione resta quella che hai scelto tu.</p>
<p>C&#8217;è anche una rete di sicurezza dopo la creazione. Se un account nasce lo stesso e viola la policy, il plugin gli toglie subito il ruolo e scrive un evento nel Registro attività. L&#8217;account non viene cancellato, così puoi esaminarlo.</p>
<p><strong>Attenzione:</strong> un plugin o un tema compromesso che scrive direttamente nella tabella degli utenti con un INSERT nel database non passa da nessun filtro. Nessun plugin PHP può fermarlo. La registrazione utenti WordPress protetta da questa scheda è una barriera forte, ma non è assoluta.</p>
<h2>Esempi</h2>
<ul>
<li>Sito vetrina senza utenti pubblici: scegli “Nessuna registrazione (esclusiva)”.</li>
<li>Sito con iscritti o commenti: lascia il livello predefinito con <code>subscriber</code>.</li>
<li>Negozio con WooCommerce: aggiungi <code>customer</code>.</li>
<li>Devi aggiungere un collaboratore con un ruolo alto: usa “Nessuna restrizione” solo il tempo necessario.</li>
</ul>
<h2>Se qualcosa non va</h2>
<p>Se un&#8217;iscrizione viene respinta con il messaggio sul ruolo non consentito, controlla il ruolo predefinito di WordPress e i ruoli spuntati al punto 4. Il Registro attività ti dice se un account è stato privato del ruolo dalla rete di sicurezza. Per capire meglio i ruoli, leggi la pagina <a href="https://wordpress.org/documentation/article/roles-and-capabilities/" target="_blank" rel="noopener">ruoli e permessi nella documentazione di WordPress</a>. Elenca cosa può fare ogni ruolo.</p>
<p>Precedente: <a href="https://www.cisilino.com/?p=981">Paranoic Hardening: header di sicurezza e sessione amministrativa</a>. Successivo: <a href="https://www.cisilino.com/?p=983">Rate limiting: limiti su autori e visitatori</a>. Per l&#8217;indice generale vai al <a href="https://www.cisilino.com/?p=972">capitolo 1 del manuale</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-registrazione-utenti/">Registrazione utenti: chi può creare account</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-registrazione-utenti/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Paranoic Hardening: header di sicurezza e sessione amministrativa</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-paranoic-hardening/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-paranoic-hardening/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:46 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[header di sicurezza]]></category>
		<category><![CDATA[HSTS]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=981</guid>

					<description><![CDATA[<p>Come usare la scheda Paranoic Hardening del plugin CSDN: header HTTP, HSTS, verifica e autologout, con l'ordine di attivazione e i rischi.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-paranoic-hardening/">Paranoic Hardening: header di sicurezza e sessione amministrativa</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>La scheda “<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 raccoglie le opzioni più delicate: gli header di sicurezza HTTP, HSTS e il logout automatico degli amministratori inattivi. Qui cambi il comportamento del browser di chi visita il sito, non solo quello del server. Per questo è tutto disattivato di default.</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="Schema di WordPress con la scheda Paranoic Hardening del plugin CSDN evidenziata" width="1200" height="630"/></figure>
<h2>Dove si trova</h2>
<p>Nel menu laterale di WordPress vai su <strong>Impostazioni</strong> e scegli <strong>Cisilino Site Defense Network</strong> (punto 1 dell&#8217;immagine). Apri la scheda “<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). Per salvare serve il permesso <code>manage_options</code>; su multisite serve <code>manage_network_options</code>.</p>
<p>La scheda ha quattro sezioni. Al punto 3 trovi “Paranoic Hardening — Header di sicurezza HTTP”. Al punto 4 c&#8217;è “HTTP Strict Transport Security (HSTS)”. Il punto 5 è “Verifica header di sicurezza”. Il punto 6 è “Autologout amministratori per inattività”.</p>
<h2>A cosa serve</h2>
<p>Gli header sono istruzioni che il sito manda al browser insieme a ogni pagina. Il plugin li invia con l&#8217;hook <code>send_headers</code> di WordPress, senza toccare il file <code>.htaccess</code>. Quindi non rischi un errore 500 e funzionano anche senza <code>mod_headers</code>.</p>
<p>Gli header riguardano solo il sito pubblico. Non vengono mai inviati nell&#8217;area di amministrazione. Il plugin non offre una Content-Security-Policy e non invia X-XSS-Protection.</p>
<h2>Come si usa il Paranoic Hardening</h2>
<h3>Header di sicurezza HTTP (punto 3)</h3>
<ul>
<li><strong>X-Content-Type-Options</strong> invia <code>nosniff</code>. Il browser non “indovina” il tipo dei file. Il rischio è praticamente nullo.</li>
<li><strong>X-Frame-Options</strong> invia <code>SAMEORIGIN</code>. Il sito non può più essere incorporato in un <code>&lt;iframe&gt;</code> di un altro dominio. Se un sito partner mostra le tue pagine, smetterà di farlo.</li>
<li><strong>Referrer-Policy</strong> invia <code>strict-origin-when-cross-origin</code>. Verso altri domini viaggia solo il dominio, non il percorso. Statistiche di terzi che vogliono il referrer completo non lo riceveranno.</li>
</ul>
<p>Spunta le caselle che ti servono e premi <strong>Salva Paranoic Hardening</strong>. Vedrai l&#8217;avviso “Impostazioni Paranoic Hardening salvate e applicate.” Le caselle che non spunti vengono salvate come disattivate.</p>
<h3>HSTS (punto 4)</h3>
<p>HSTS dice al browser di usare sempre https con il tuo dominio. Ci sono tre caselle: “Attiva HSTS”, “includeSubDomains” e “Preload”. L&#8217;header inviato ha <code>max-age=31536000</code>, cioè un anno. Il valore è fisso e non si cambia.</p>
<p>Il plugin rifiuta l&#8217;attivazione se la pagina non è stata aperta in https. In quel caso salva il resto e mostra un avviso rosso: “Impostazioni salvate, ma HSTS NON è stato attivato: questa richiesta non è arrivata in https. Apri il pannello in https e riprova.” Se la pagina è in http, le tre caselle sono anche disabilitate.</p>
<p>Se spegni “Attiva HSTS”, al salvataggio vengono azzerate anche “includeSubDomains” e “Preload”. Se riattivi HSTS, devi rispuntarle.</p>
<h3>Verifica header di sicurezza (punto 5)</h3>
<p>Premi <strong>Verifica ora</strong>. Il plugin fa una richiesta reale alla home del sito e controlla quali header arrivano davvero. Il risultato compare nel riquadro, con la data dell&#8217;ultimo test.</p>
<ul>
<li>Verde: “Tutti gli header attesi sono presenti nella risposta reale del sito.”</li>
<li>Rosso: gli header attivi che non sono arrivati. Può essere un proxy, una CDN o un altro plugin che li rimuove. HSTS risulta mancante anche se l&#8217;indirizzo della home è http e non porta a https, perché il plugin lo invia solo su richieste https.</li>
<li>Blu: “Nessun header attivo da verificare: attiva almeno un&#8217;opzione qui sopra e salva.”</li>
<li>Rosso con “Richiesta di verifica fallita”: la richiesta non è andata a buon fine.</li>
</ul>
<p>Il test controlla la presenza dell&#8217;header, non il suo valore. Non parte da solo: devi premerlo tu.</p>
<h3>Autologout amministratori (punto 6)</h3>
<p>Questa sezione del Paranoic Hardening ha un suo pulsante, <strong>Salva autologout amministratori</strong>. Spunta “Attiva” per disconnettere gli amministratori inattivi. Poi imposta il “Timeout di inattività (secondi)”. Se il browser blocca il <code>localStorage</code> (per esempio in navigazione privata), il controllo non scatta mai e non vieni disconnesso.</p>
<p>Il valore predefinito è 900, cioè 15 minuti. Il minimo è 60 e il massimo è 86400. Se scrivi un numero fuori dai limiti, il plugin lo porta al valore ammesso più vicino. Per esempio 30 diventa 60. L&#8217;avviso resta verde, quindi rileggi il numero nel campo dopo il salvataggio.</p>
<p>Vengono disconnessi solo gli utenti con il permesso <code>manage_options</code>. Editor e autori non vengono toccati. L&#8217;inattività è misurata nel browser: contano mouse, tastiera, scroll e tocco. La sessione si chiude come con “Esci” e le modifiche non salvate in un form aperto vanno perse.</p>
<h2>Ordine consigliato di attivazione</h2>
<ol>
<li>Apri il pannello in https.</li>
<li>Attiva X-Content-Type-Options, salva e premi “Verifica ora”.</li>
<li>Attiva Referrer-Policy, salva e verifica.</li>
<li>Controlla che nessun sito incorpori il tuo, poi attiva X-Frame-Options, salva e verifica.</li>
<li>Attiva l&#8217;autologout con un timeout generoso, per esempio 1800. Riducilo solo dopo qualche giorno.</li>
<li>Per ultimo valuta HSTS, senza includeSubDomains e senza Preload.</li>
</ol>
<p>Attiva una opzione alla volta. Se qualcosa si rompe, sai subito quale è stata.</p>
<h2>Il rischio di HSTS, includeSubDomains e Preload</h2>
<p><strong>Attenzione:</strong> HSTS non si disfa dal sito. Se togli la spunta, il plugin smette di inviare l&#8217;header, ma i browser che l&#8217;hanno già ricevuto lo ricordano fino alla scadenza. Il plugin non invia mai <code>max-age=0</code>, quindi non ha un “annulla”. Lo dice anche il banner della scheda: gli effetti possono restare visibili per settimane o mesi.</p>
<p>Con HSTS attivo il browser rifiuta ogni connessione non https al dominio. Se il certificato scade o si rompe, il browser non mostra più nemmeno la schermata “continua comunque”. Il sito resta irraggiungibile da quel browser.</p>
<ul>
<li><strong>includeSubDomains</strong> estende la regola a tutti i sottodomini. Un solo sottodominio senza https valido, anche di test o futuro, diventa irraggiungibile per chi ha già visitato il sito. Attivalo solo se tutti i sottodomini sono e saranno https.</li>
<li><strong>Preload</strong> aggiunge solo il flag <code>preload</code> all&#8217;header. Da solo non iscrive il sito: l&#8217;invio alla lista dei browser si fa a mano su hstspreload.org. La lista è dentro i browser, e uscirne richiede settimane. Considera Preload una scelta definitiva.</li>
</ul>
<p>Salva sempre dalla versione https del pannello. Le caselle disabilitate non vengono inviate dal browser: salvando da una pagina http, HSTS e le sue sotto-opzioni si spengono.</p>
<h2>Cosa succede dietro le quinte</h2>
<p>Le impostazioni del Paranoic Hardening sono opzioni di WordPress, non regole del server. L&#8217;autologout stampa uno script solo nelle pagine di amministrazione. Lo script registra l&#8217;ultima attività nel <code>localStorage</code> del browser e ogni 5 secondi controlla il timeout. Alla scadenza chiede a <code>admin-ajax.php</code> di eseguire il logout e ti porta alla pagina di login. Il salvataggio finisce nel Registro attività solo se hai cambiato qualcosa.</p>
<h2>Se qualcosa non va</h2>
<ul>
<li>Il riquadro è rosso dopo “Verifica ora”: un proxy, una CDN o un altro plugin sta togliendo gli header. Controlla la loro configurazione.</li>
<li>Un sito partner non mostra più le tue pagine: togli la spunta a X-Frame-Options e salva.</li>
<li>Non riesci ad attivare HSTS: riapri il pannello con l&#8217;indirizzo https.</li>
<li>Per controllare a mano gli header puoi usare gli strumenti sviluppatore del browser o <code>curl -I</code> sull&#8217;indirizzo https del sito.</li>
</ul>
<p>Per capire meglio come funziona HSTS, leggi la pagina <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security" target="_blank" rel="noopener">Strict-Transport-Security su MDN</a>. Spiega max-age, includeSubDomains e preload con precisione.</p>
<p>Precedente: <a href="https://www.cisilino.com/?p=980">Scheda Test: verificare che le protezioni funzionino</a>. Successivo: <a href="https://www.cisilino.com/?p=982">Registrazione utenti: chi può creare account</a>. Per l&#8217;indice generale vai al <a href="https://www.cisilino.com/?p=972">capitolo 1 del manuale</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-paranoic-hardening/">Paranoic Hardening: header di sicurezza e sessione amministrativa</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-paranoic-hardening/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Scheda Test: verificare che le protezioni funzionino</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-test/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-test/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:44 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<category><![CDATA[verifica blocco PHP]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=980</guid>

					<description><![CDATA[<p>La scheda Test del plugin CSDN verifica dal vivo il blocco del PHP in uploads e l’integrità dei file del plugin. Ecco come si usa e come leggere gli esiti.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-test/">Scheda Test: verificare che le protezioni funzionino</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Un <strong>test sicurezza WordPress</strong> serve a una cosa sola: sapere se la protezione funziona davvero, non solo se è accesa. La scheda “Test” del plugin CSDN fa due verifiche dal vivo. Non cambia nessuna impostazione. Controlla il sito adesso.</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="Schema di WordPress con la scheda Test del plugin CSDN per il test sicurezza wordpress" width="1200" height="630"/></figure>
<h2>Dove si trova il test sicurezza WordPress</h2>
<p>Apri <strong>Impostazioni &gt; Cisilino Site Defense Network</strong> (punto 1 dell’immagine). Clicca sulla scheda <strong>Test</strong> (punto 2). Trovi due riquadri:</p>
<ul>
<li>punto 3: “Verifica blocco esecuzione PHP in uploads”.</li>
<li>punto 4: “Integrità dei file del plugin”.</li>
</ul>
<p>Dopo ogni pulsante il sito ti riporta alla scheda Generale, con un avviso in alto. L’esito però è scritto nella scheda Test. Riaprila per leggerlo.</p>
<h2>Verifica blocco esecuzione PHP in uploads</h2>
<p>Questo riquadro prova la regola “Blocca esecuzione PHP in wp-content/uploads” della scheda Hardening / IDS, descritta nel capitolo <a href="https://www.cisilino.com/?p=978">Hardening / IDS</a>. Il testo spiega che è l’unico modo per sapere se la regola è davvero efficace su questo sito. Un <code>AllowOverride</code> disattivato o un blocco più specifico nel server potrebbero renderla inutile senza segnalarlo.</p>
<h3>Come si usa</h3>
<ol>
<li>Nella scheda Hardening / IDS attiva la regola e clicca su “Salva regole di hardening”.</li>
<li>Apri la scheda Test.</li>
<li>Nel riquadro “Verifica blocco esecuzione PHP in uploads” clicca su “Verifica ora”.</li>
<li>Torna alla scheda Test e leggi l’esito, con la riga “Ultimo test:” e la data.</li>
</ol>
<p>Se la regola non è attiva e salvata, il pulsante è disabilitato. Il riquadro mostra: “Attiva e salva la regola &#8220;Blocca esecuzione PHP in wp-content/uploads&#8221; nella tab Hardening / IDS prima di poter eseguire il test.”.</p>
<h3>Cosa fa il test</h3>
<p>Il plugin scrive in uploads un piccolo file <code>.php</code> di prova. Lo richiede via HTTP, con un limite di 10 secondi. Poi lo cancella subito, in ogni caso. Il file contiene solo una stampa di controllo.</p>
<h3>Come si legge l’esito</h3>
<ul>
<li>Verde: “Blocco efficace: la richiesta al file di prova ha ricevuto N.”. Il numero è 403 o 404.</li>
<li>Rosso: “ATTENZIONE: il file PHP di prova è stato ESEGUITO (risposta N).” La regola non blocca nulla. Il messaggio ti suggerisce di verificare che <code>AllowOverride</code> permetta <code>.htaccess</code> in quella cartella e che non esista un blocco <code>&lt;Directory&gt;</code> più specifico.</li>
<li>Giallo: “Esito non chiaro (risposta N, corpo non riconosciuto): verifica manualmente con una richiesta diretta al sito.”.</li>
<li>Blu: “Regola disattivata: attiva e salvala prima di eseguire il test.”.</li>
<li>Rosso, per errori: “Impossibile determinare la cartella uploads.”, “Impossibile scrivere il file di prova in uploads (permessi?): test non eseguito.” oppure “Richiesta di verifica fallita”, con il motivo.</li>
</ul>
<p><strong>Attenzione:</strong> se il sito non riesce a chiamare se stesso, per esempio per un firewall, una password HTTP o un DNS locale, il test dà errore o esito non chiaro. Un 404 viene contato come blocco, ma potrebbe dipendere da altro. Il test prova solo la cartella uploads standard. Per pochi secondi un file <code>.php</code> esiste in uploads: se il blocco non funziona può essere eseguito, ma contiene solo una stampa.</p>
<h2>Integrità dei file del plugin</h2>
<p>È la seconda parte del test sicurezza WordPress. Il secondo riquadro confronta gli hash MD5 dei file <code>.php</code> del plugin con quelli attesi. Cerca file modificati, mancanti o aggiunti. Il controllo parte da solo una volta al giorno. Il pulsante “Verifica adesso” lo esegue subito.</p>
<p>Il riquadro riporta un limite fisso: chi ha già la scrittura sui file può anche riscrivere gli hash o spegnere il controllo. È un rilevatore di manomissioni, non una barriera.</p>
<h3>Come si usa</h3>
<ol>
<li>Apri la scheda Test.</li>
<li>Nel riquadro “Integrità dei file del plugin” clicca su “Verifica adesso”.</li>
<li>Leggi l’avviso: “Verifica di integrità eseguita: l’esito è nel riquadro &#8220;Integrità dei file del plugin&#8221;.”.</li>
<li>Riapri la scheda Test e leggi il riquadro.</li>
</ol>
<h3>Come si legge l’esito</h3>
<p>Verde: “Tutti i N file verificati corrispondono. Ultimo controllo: data.”. Se il riferimento è una fotografia, il riquadro aggiunge che rileva le modifiche successive, non un plugin già compromesso all’installazione. Rosso: “ATTENZIONE: i file del plugin non corrispondono a quelli attesi.”, con gli elenchi “Modificati”, “Mancanti” e “Non previsti”. Giallo: “Nessun riferimento disponibile”. In quel caso riattiva il plugin.</p>
<p>Il pulsante manuale non scrive nel registro attività. Lo fa solo il controllo pianificato, e solo se trova un problema o se i file tornano regolari dopo un allarme. Per i dettagli leggi il capitolo <a href="https://www.cisilino.com/?p=979">Sorveglianza dei caricamenti e controllo di integrità</a>.</p>
<p><strong>Attenzione:</strong> se hai modificato a mano un file del plugin, l’allarme rosso è normale. Se non l’hai fatto, tratta il sito come potenzialmente compromesso: reinstalla il plugin da una copia attendibile e controlla il resto dell’installazione.</p>
<h2>Se qualcosa non va</h2>
<p>Ripeti il test sicurezza WordPress dopo ogni correzione. Se il test sul PHP dà rosso, la regola non protegge. Chiedi al tuo hosting se <code>.htaccess</code> è abilitato. Se il server non legge <code>.htaccess</code>, per esempio con nginx, la regola non ha effetto. Ripeti il test dopo ogni correzione. Un 403 è la risposta che vuoi vedere: la pagina sul <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/403" target="_blank" rel="noopener">codice di stato 403</a> di MDN spiega cosa significa.</p>
<p>Capitolo precedente: <a href="https://www.cisilino.com/?p=979">Sorveglianza dei caricamenti e controllo di integrità</a>. Capitolo successivo: <a href="https://www.cisilino.com/?p=981">Paranoic Hardening: header di sicurezza e sessione amministrativa</a>. Per l’elenco dei capitoli torna all’<a href="https://www.cisilino.com/?p=972">introduzione del manuale</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-test/">Scheda Test: verificare che le protezioni funzionino</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-test/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sorveglianza dei caricamenti e controllo di integrità</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-caricamenti-integrita/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-caricamenti-integrita/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:41 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[integrità file]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<category><![CDATA[upload]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=979</guid>

					<description><![CDATA[<p>Dove si trova il form di sorveglianza dei caricamenti, cosa blocca davvero e come leggere l’esito del controllo di integrità dei file del plugin.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-caricamenti-integrita/">Sorveglianza dei caricamenti e controllo di integrità</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>La <strong>sorveglianza caricamenti file</strong> del plugin CSDN annota chi carica file sul tuo sito, anche fuori dalla libreria media. Il controllo di integrità, invece, verifica che i file del plugin non siano stati toccati. Sono due difese diverse, ma entrambe cercano lo stesso scenario: un file malevolo che entra dove non dovrebbe.</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="Schema di WordPress con la scheda Generale del plugin CSDN e la sezione di sorveglianza caricamenti file" width="1200" height="630"/></figure>
<h2>Dove si trova</h2>
<p>Attenzione al posto: il form non sta nella scheda “Hardening / IDS”. Apri <strong>Impostazioni &gt; Cisilino Site Defense Network</strong> (punto 1), resta sulla scheda <strong>Generale</strong> (punto 2) e scorri fino in fondo. Dopo la whitelist trovi la sezione “Sorveglianza caricamenti file” (punto 3). Il controllo di integrità si legge invece nella scheda Test, spiegata nel capitolo <a href="https://www.cisilino.com/?p=980">Scheda Test</a>.</p>
<h2>A cosa serve la sorveglianza caricamenti file</h2>
<p>La sezione dice: “Registra i file caricati sul sito, compresi quelli che non passano dalla libreria media: form di plugin, endpoint admin-ajax, upload arbitrari di un tema.” Da lì entra la maggior parte delle webshell. Un registro che guardi solo la libreria media non le vede.</p>
<h2>Come si usa</h2>
<ol>
<li>Apri la scheda Generale e scorri fino a “Sorveglianza caricamenti file”.</li>
<li>Controlla la riga “Sorveglianza”: “Registra i caricamenti di file”.</li>
<li>Controlla la riga “Blocco file eseguibili”: “Rifiuta i caricamenti con estensione eseguibile (.php, .phtml, .phar, .sh, .htaccess&#8230;)”.</li>
<li>Clicca su “Salva sorveglianza caricamenti”.</li>
<li>Leggi l’avviso: “Impostazioni della sorveglianza caricamenti salvate.”.</li>
</ol>
<h2>Registra i caricamenti di file</h2>
<p>Questa opzione è <strong>attiva</strong> di default. Gli eventi finiscono nel gruppo “Caricamenti di file” del registro attività. Su una richiesta senza file il costo è nullo. Il plugin annota ogni richiesta che contiene un file, con il campo e l’indirizzo che l’ha ricevuta. Le azioni che vedrai nel registro sono:</p>
<ul>
<li>“File ricevuto in una richiesta POST”.</li>
<li>“File caricato”.</li>
<li>“ATTENZIONE: caricato file potenzialmente eseguibile”.</li>
<li>“Caricamento BLOCCATO”.</li>
</ul>
<p>Il registro locale tiene al massimo 500 righe, se non cambi il tetto nelle impostazioni del registro attività. Come leggerlo è spiegato nel capitolo <a href="https://www.cisilino.com/?p=984">Registro attività</a>.</p>
<h2>Blocco file eseguibili</h2>
<p>Questa opzione è <strong>disattivata</strong> di default. Funziona solo se è attiva anche “Registra i caricamenti di file”: con la sorveglianza spenta il blocco non fa nulla, anche se la casella è spuntata. Se la attivi, WordPress rifiuta il file con il messaggio: “Tipo di file non consentito su questo sito (Cisilino Site Defense Network: caricamento di file eseguibili bloccato).” Il controllo riconosce anche le doppie estensioni, come <code>immagine.php.jpg</code>.</p>
<p>Le estensioni considerate pericolose sono: <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> e <code>svgz</code>.</p>
<p><strong>Attenzione:</strong> l’elenco blocca anche <code>.svg</code>, quindi i loghi in SVG non si caricano più. Blocca anche <code>.ini</code>, <code>.py</code>, <code>.exe</code> e <code>.dll</code>, che compaiono in allegati e pacchetti. Il plugin guarda tutte le parti dopo il primo punto. Un nome come <code>archivio.pl.zip</code> viene quindi rifiutato. Il blocco vale solo per i caricamenti gestiti da WordPress (filtro wp_handle_upload_prefilter). Un plugin che salva il file per conto suo viene registrato (“File ricevuto in una richiesta POST”) ma non fermato. Chi scrive direttamente su disco, senza una richiesta con file, non lascia traccia in questo registro.</p>
<h2>Il controllo di integrità</h2>
<p>A differenza della sorveglianza caricamenti file, qui non guardi i nuovi upload ma i file già presenti. Il plugin confronta gli hash MD5 dei suoi file <code>.php</code> con quelli attesi. Cerca file modificati, mancanti o aggiunti. Esclude le cartelle <code>tests</code> e <code>dist</code>. I file che non sono PHP non vengono controllati.</p>
<p>Il controllo gira una volta al giorno, tramite il sistema di pianificazione di WordPress. Se il sito ha poche visite, può slittare. Il riferimento è il file <code>checksums.json</code> nella cartella del plugin, se presente. Altrimenti il plugin usa una fotografia dei file scattata all’attivazione e a ogni cambio di versione.</p>
<h3>Come si legge l’esito</h3>
<p>Lo trovi nella scheda Test, nel riquadro “Integrità dei file del plugin”, dove c’è anche il pulsante “Verifica adesso” per lanciare il controllo subito. Ci sono quattro casi:</p>
<ul>
<li>“Nessuna verifica ancora eseguita.”, se non è mai partito.</li>
<li>Riquadro verde: “Tutti i N file verificati corrispondono. Ultimo controllo: data.”.</li>
<li>Riquadro giallo: “Nessun riferimento disponibile: impossibile verificare. Riattiva il plugin per catturare una nuova fotografia dei file.”.</li>
<li>Riquadro rosso: “ATTENZIONE: i file del plugin non corrispondono a quelli attesi.”, con tre elenchi: “Modificati”, “Mancanti”, “Non previsti”.</li>
</ul>
<p>Nell’elenco compaiono al massimo 15 nomi. Se vedi il rosso e non hai toccato i file a mano, il plugin ti dice di trattare il sito come potenzialmente compromesso. Reinstalla il plugin da una copia attendibile e controlla il resto dell’installazione.</p>
<p>Se il riferimento è la fotografia, il riquadro verde lo scrive. Quel confronto trova le modifiche successive, non un plugin già compromesso al momento dell’installazione.</p>
<p><strong>Attenzione:</strong> l’integrità è un rilevatore, non una barriera. Chi ha già scritto sui file può anche riscrivere gli hash o spegnere il controllo. Modifiche fatte a mano o un caricamento a metà producono un allarme rosso.</p>
<h2>Cosa succede dietro le quinte</h2>
<p>La sorveglianza caricamenti file e l’integrità usano lo stesso registro. Il controllo giornaliero scrive nel registro attività solo in due casi: quando trova un problema e quando, dopo un problema, torna tutto regolare. Quando va tutto bene non scrive nulla. Il registro viene poi inviato al pannello, così una copia dell’allarme sta fuori dal tuo server.</p>
<h2>Se qualcosa non va</h2>
<p>La sorveglianza caricamenti file resta utile anche con il blocco spento. Se un plugin legittimo smette di caricare file, spegni “Blocco file eseguibili” e riprova. Per capire quali caricamenti arrivano sul sito, lascia attiva la sorveglianza e consulta il registro. Per le regole sui file in uploads vedi anche il capitolo <a href="https://www.cisilino.com/?p=978">Hardening / IDS</a>.</p>
<p>Il rischio che qui si cerca di ridurre è descritto da OWASP: leggi la pagina sul <a href="https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload" target="_blank" rel="noopener">caricamento di file senza restrizioni</a>, utile per capire perché gli upload sono un punto debole.</p>
<p>Capitolo precedente: <a href="https://www.cisilino.com/?p=978">Hardening / IDS: le regole per .htaccess</a>. Capitolo successivo: <a href="https://www.cisilino.com/?p=980">Scheda Test: verificare che le protezioni funzionino</a>. Indice: <a href="https://www.cisilino.com/?p=972">introduzione del manuale</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-caricamenti-integrita/">Sorveglianza dei caricamenti e controllo di integrità</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-caricamenti-integrita/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hardening / IDS: le regole per .htaccess</title>
		<link>https://www.cisilino.com/2026/10/30/manuale-csdn-hardening-ids/</link>
					<comments>https://www.cisilino.com/2026/10/30/manuale-csdn-hardening-ids/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 16:05:39 +0000</pubDate>
				<category><![CDATA[Manuale CSDN]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Cisilino Site Defense Network]]></category>
		<category><![CDATA[manuale CSDN]]></category>
		<category><![CDATA[XML-RPC]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=978</guid>

					<description><![CDATA[<p>La scheda Hardening / IDS del plugin CSDN, regola per regola: cosa blocca, cosa può rompere e perché i percorsi personalizzati vanno scritti con cura.</p>
<p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-hardening-ids/">Hardening / IDS: le regole per .htaccess</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Il <strong>hardening WordPress</strong> del plugin CSDN sta tutto in una scheda: “Hardening / IDS”. Sono cinque interruttori e un campo di testo. Servono a chiudere porte che quasi nessun sito usa davvero. Sono tutti disattivati, e li accendi uno alla volta.</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="Schema di WordPress con la scheda Hardening / IDS del plugin CSDN: hardening wordpress" width="1200" height="630"/></figure>
<h2>Dove trovi l’hardening WordPress</h2>
<p>Apri <strong>Impostazioni &gt; Cisilino Site Defense Network</strong> (punto 1 dell’immagine). Poi clicca sulla scheda <strong>Hardening / IDS</strong> (punto 2). Nella scheda trovi tre sezioni, in questo ordine:</p>
<ul>
<li>punto 3: sotto il titolo “Hardening / controllo accessi (IDS)”, la riga “Regole .htaccess”.</li>
<li>punto 4: “WordPress”.</li>
<li>punto 5: “Percorsi personalizzati da bloccare”.</li>
</ul>
<p>In cima la scheda dice: “Regole opzionali applicate a livello di server (.htaccess) o WordPress. Tutte disattivate di default: attivale solo se sai che non confliggono con temi/plugin del sito.” In fondo c’è un solo pulsante: “Salva regole di hardening”.</p>
<h2>A cosa serve</h2>
<p>Le regole riducono la superficie d’attacco. Tre interruttori scrivono nel file <code>.htaccess</code>, come anche il campo dei percorsi personalizzati. Due interruttori sono filtri di WordPress. Non è un firewall e non analizza le richieste: qui “IDS” vuol dire regole di accesso a file e cartelle.</p>
<h2>Le regole .htaccess (punto 3)</h2>
<h3>Blocca esecuzione PHP in wp-content/uploads</h3>
<p>L’etichetta completa è “Blocca esecuzione PHP in wp-content/uploads (protezione da shell caricate come &#8220;immagine&#8221;)”. Il plugin risponde 403 a ogni richiesta di un file con estensione <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> il cui indirizzo contiene <code>/wp-content/uploads/</code>. Le maiuscole non contano.</p>
<p>Funziona solo con Apache 2.4 (serve il modulo mod_authz_core: senza, la regola non fa nulla e non lo segnala). Su nginx il file <code>.htaccess</code> viene ignorato e nessuna regola di questa scheda ha effetto, filtri di WordPress a parte. Copre la cartella uploads standard, non una cartella personalizzata. Può rompere plugin che servono davvero file PHP da quella cartella. Per sapere se funziona sul tuo sito usa la prova del capitolo <a href="https://www.cisilino.com/?p=980">Scheda Test</a>.</p>
<h3>Disabilita l’elenco dei file nelle directory senza index</h3>
<p>Scrive una sola riga: <code>Options -Indexes</code>. Aprendo una cartella senza pagina indice vedrai un errore 403 invece dell’elenco dei file. Se usi una cartella come elenco pubblico di download, quell’elenco sparisce.</p>
<h3>Blocca l’accesso diretto a wp-config.php, .htaccess, readme.html, debug.log</h3>
<p>Il plugin scrive una regola per ciascun nome e risponde 403. Il controllo è sul nome del file, non sul percorso. Vale quindi per ogni file con quel nome in qualunque cartella del sito, anche dentro altri plugin. Un plugin che pubblica un proprio <code>readme.html</code> o <code>debug.log</code> verrà bloccato.</p>
<h2>Le regole di WordPress (punto 4)</h2>
<p>Queste due regole dell’hardening WordPress sono filtri PHP. Non toccano <code>.htaccess</code>.</p>
<h3>Disabilita XML-RPC</h3>
<p>L’etichetta è “Disabilita XML-RPC (bruteforce/pingback, quasi mai necessario sui siti moderni)”. Il file <code>xmlrpc.php</code> resta al suo posto, ma WordPress rifiuta i metodi XML-RPC che richiedono il login. <strong>Attenzione:</strong> si fermano l’app mobile di WordPress, parte delle funzioni di Jetpack e la pubblicazione da client esterni. Il metodo <code>pingback.ping</code> non richiede login e il filtro non lo ferma: non conti su questa regola per chiudere i pingback. I trackback non usano XML-RPC e non sono toccati. Il collegamento del plugin al pannello non usa XML-RPC, quindi non è toccato.</p>
<h3>Blocca l’enumerazione utenti via ?author=N</h3>
<p>Se la richiesta contiene il parametro <code>author</code> con un valore (diverso da vuoto e da <code>0</code>), sul sito pubblico compare “Non trovato.” con risposta 404. <strong>Attenzione:</strong> questa regola non protegge la REST API. L’elenco degli utenti in <code>/wp-json/wp/v2/users</code> resta raggiungibile. Alcuni temi e plugin usano <code>?author=</code> per filtrare gli archivi, e verranno bloccati.</p>
<h2>Percorsi personalizzati da bloccare (punto 5)</h2>
<p>Il campo di testo è per chi vuole chiudere una cartella precisa, per esempio <code>/wp-content/uploads/vecchio-backup/</code>. Scrivi un percorso per riga. Le righe vuote vengono ignorate.</p>
<p>Ogni riga è <strong>testo letterale</strong>. Le maiuscole contano e la parte dopo il <code>?</code> dell’indirizzo non viene confrontata. L’aiuto sotto il campo parla di “pattern”, ma qui non ne esistono. Non esistono jolly: <code>*</code>, <code>^</code> e <code>$</code> valgono come semplici caratteri. Il plugin blocca con 403 ogni indirizzo che <strong>contiene</strong> quella stringa, in qualunque punto. Per questo il percorso <code>/wp-content/uploads/vecchio-backup/</code> blocca anche <code>/blog/wp-content/uploads/vecchio-backup/x</code>.</p>
<p>Questo campo non ha un interruttore. La regola è attiva appena il campo non è vuoto e salvi.</p>
<p><strong>Attenzione:</strong> se scrivi <code>/</code> oppure <code>wp</code> blocchi tutto il sito, area di amministrazione compresa. Per tornare indietro dovresti correggere <code>.htaccess</code> via FTP. Anche una stringa come <code>/uploads/</code> blocca tutte le immagini. Evita il carattere <code>%</code> nei percorsi.</p>
<h2>Valori predefiniti</h2>
<p>Cinque interruttori disattivati e campo vuoto. Le impostazioni sono nell’opzione <code>csdn_hardening</code>.</p>
<h2>Come si usa</h2>
<p>Procedi con calma: l’hardening WordPress si fa una regola alla volta.</p>
<ol>
<li>Fai una copia di <code>.htaccess</code> prima di cominciare.</li>
<li>Spunta una sola regola.</li>
<li>Clicca su “Salva regole di hardening”.</li>
<li>Controlla che il sito si apra e che il pannello di amministrazione funzioni.</li>
<li>Passa alla regola successiva.</li>
</ol>
<p>Dopo il salvataggio vieni riportato alla scheda Generale, non a quella in cui hai salvato. In alto trovi l’avviso. In caso di successo dice “Regole di hardening salvate e applicate.”. In caso di errore dice “Impostazioni salvate, ma la scrittura in .htaccess è fallita (permessi file?). Le regole non sono attive.”. Con l’errore, i due filtri di WordPress restano comunque attivi.</p>
<p><strong>Attenzione:</strong> il plugin non crea alcun backup di <code>.htaccess</code>. Non controlla nemmeno la sintassi prima di scrivere. Una regola incompatibile con il tuo server può dare errore 500 su tutto il sito. Su una rete multisite il file è quello della rete: l’errore colpisce tutti i siti.</p>
<h2>Cosa succede dietro le quinte</h2>
<p>Il plugin scrive tra due marcatori: <code># BEGIN Cisilino Site Defense Network - Hardening</code> e il relativo <code># END</code>. Il resto del file non viene toccato. Un secondo blocco, separato, contiene gli IP bloccati. Se disattivi il plugin, i due blocchi vengono svuotati. Se spegni tutto e salvi, il blocco di hardening resta vuoto.</p>
<h2>Se qualcosa non va</h2>
<p>Se dopo l’hardening WordPress il sito mostra errore 500, apri <code>.htaccess</code> via FTP. Cancella le righe tra i due marcatori di hardening. Poi riprova con meno regole. Se non si scrive nel file, controlla i permessi di <code>.htaccess</code>.</p>
<p>Per un quadro più ampio sulle buone pratiche leggi la guida ufficiale di <a href="https://developer.wordpress.org/advanced-administration/security/hardening/" target="_blank" rel="noopener">hardening di WordPress</a>: spiega altre misure che stanno fuori dal plugin.</p>
<p>Capitolo precedente: <a href="https://www.cisilino.com/?p=977">Scheda IP bloccati: leggere la blacklist</a>. Capitolo successivo: <a href="https://www.cisilino.com/?p=979">Sorveglianza dei caricamenti e controllo di integrità</a>. Per l’elenco completo dei capitoli torna all’<a href="https://www.cisilino.com/?p=972">introduzione del manuale</a>.</p><p>The post <a href="https://www.cisilino.com/2026/10/30/manuale-csdn-hardening-ids/">Hardening / IDS: le regole per .htaccess</a> first appeared on <a href="https://www.cisilino.com">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/2026/10/30/manuale-csdn-hardening-ids/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
