<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>init.d - consulenza IT, DevOps e sviluppo software</title><description>init.d - studio di consulenza informatica, sistemistica Linux e sviluppo software su misura. Scriviamo il codice e lo teniamo in produzione.</description><link>https://initd.it</link><item><title>INP sostituisce FID tra i Core Web Vitals: cosa misura e cosa monitorare</title><link>https://initd.it/blog/inp-core-web-vital</link><guid isPermaLink="true">https://initd.it/blog/inp-core-web-vital</guid><description>Dal 12 marzo 2024 Interaction to Next Paint (INP) sostituisce First Input Delay tra i Core Web Vitals di Google. Cosa misura, la soglia buona sotto i 200 ms e perché conta per esperienza utente e SEO.</description><pubDate>Tue, 12 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dal &lt;strong&gt;12 marzo 2024&lt;/strong&gt; cambia una delle metriche con cui Google valuta la qualità di una pagina web. Una metrica chiamata &lt;strong&gt;FID&lt;/strong&gt; viene ritirata e sostituita da un&apos;altra, &lt;strong&gt;INP&lt;/strong&gt;. Il cambiamento riguarda i &lt;strong&gt;Core Web Vitals&lt;/strong&gt;, cioè l&apos;insieme di indicatori che misurano l&apos;esperienza di caricamento e uso di un sito. Non è una piccola modifica tecnica di nicchia: tocca sia la sensazione che prova chi usa il sito, sia il modo in cui Google tiene conto delle prestazioni nel posizionamento. Vale quindi la pena capire cosa cambia davvero, in parole semplici.&lt;/p&gt;
&lt;h2&gt;Cosa sono i Core Web Vitals&lt;/h2&gt;
&lt;p&gt;I &lt;strong&gt;Core Web Vitals&lt;/strong&gt; sono un piccolo gruppo di metriche con cui Google prova a misurare, con numeri concreti, quanto è piacevole usare una pagina. Non giudicano il contenuto né la grafica: guardano il comportamento tecnico. Storicamente sono tre, ognuna con una domanda semplice dietro.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LCP&lt;/strong&gt; (&lt;em&gt;Largest Contentful Paint&lt;/em&gt;): quanto tempo passa prima che compaia il contenuto principale, che dipende anche da quanto è rapida &lt;a href=&quot;/blog/ttfb-time-to-first-byte&quot;&gt;la prima risposta del server&lt;/a&gt;? Considerata buona sotto i 2,5 secondi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLS&lt;/strong&gt; (&lt;em&gt;Cumulative Layout Shift&lt;/em&gt;): quanto gli elementi &quot;saltano&quot; mentre la pagina si carica? Considerata buona sotto 0,1.&lt;/li&gt;
&lt;li&gt;La terza riguarda la &lt;strong&gt;reattività&lt;/strong&gt;, cioè quanto la pagina risponde in fretta quando si tocca o si clicca qualcosa. È proprio questa a cambiare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fino a marzo 2024 la reattività veniva misurata con &lt;strong&gt;FID&lt;/strong&gt; (&lt;em&gt;First Input Delay&lt;/em&gt;). Da quella data viene misurata con &lt;strong&gt;INP&lt;/strong&gt; (&lt;em&gt;Interaction to Next Paint&lt;/em&gt;).&lt;/p&gt;
&lt;h2&gt;Cos&apos;è INP e cosa misura&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;INP&lt;/strong&gt; sta per &lt;em&gt;Interaction to Next Paint&lt;/em&gt;, che si può tradurre come &quot;dall&apos;interazione al prossimo disegno sullo schermo&quot;. Misura una cosa che chiunque ha provato senza saperle dare un nome: quel piccolo ritardo tra il momento in cui si clicca un pulsante, si apre un menù o si spunta una casella, e il momento in cui lo schermo mostra che &lt;em&gt;qualcosa è successo&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Quando quel ritardo è breve, il sito sembra pronto e vivo. Quando è lungo, resta la sensazione di aver premuto a vuoto: si è tentati di cliccare di nuovo, e la pagina dà l&apos;impressione di essere bloccata o rotta, anche quando non lo è.&lt;/p&gt;
&lt;p&gt;Secondo la documentazione di web.dev, il tempo di un&apos;interazione si scompone in tre parti:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il &lt;strong&gt;ritardo di input&lt;/strong&gt;, cioè il tempo prima che il browser inizi a eseguire il codice legato all&apos;interazione (spesso perché è occupato con altro);&lt;/li&gt;
&lt;li&gt;il &lt;strong&gt;tempo di elaborazione&lt;/strong&gt;, cioè quanto ci mette il codice a fare il proprio lavoro in risposta al clic;&lt;/li&gt;
&lt;li&gt;il &lt;strong&gt;ritardo di presentazione&lt;/strong&gt;, cioè il tempo che serve poi per disegnare il risultato aggiornato sullo schermo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;INP tiene conto di tutte e tre le parti. Contano come interazioni i &lt;strong&gt;clic con il mouse&lt;/strong&gt;, i &lt;strong&gt;tocchi su schermo&lt;/strong&gt; e la &lt;strong&gt;pressione dei tasti&lt;/strong&gt;; non contano invece lo scorrimento della pagina né il semplice passaggio del puntatore sopra un elemento.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo sito risponde subito o l&apos;utente sente quel piccolo ritardo dopo ogni clic?&quot; text=&quot;Misuriamo l&apos;INP reale del tuo sito con dati di campo e individuiamo dove il browser perde tempo.&quot; button=&quot;Chiedi una misurazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa cambia rispetto a FID&lt;/h2&gt;
&lt;p&gt;Il vecchio FID misurava solo il &lt;strong&gt;ritardo di input della prima interazione&lt;/strong&gt; della visita. Aveva due limiti importanti. Il primo: guardava soltanto il primo tocco, quindi se il primo clic era rapido ma tutti i successivi erano lenti, il punteggio restava buono pur non riflettendo l&apos;esperienza reale. Il secondo: misurava solo l&apos;attesa iniziale, ignorando quanto tempo il codice impiegava poi a rispondere e a mostrare il risultato.&lt;/p&gt;
&lt;p&gt;INP corregge entrambi i punti. Osserva &lt;strong&gt;tutte&lt;/strong&gt; le interazioni durante l&apos;intera visita, non solo la prima, e considera l&apos;intero percorso, dal clic fino a quando lo schermo si aggiorna. Il valore riportato è vicino all&apos;interazione più lenta osservata (escludendo i casi rari e isolati), così da rappresentare l&apos;esperienza peggiore che l&apos;utente ha davvero incontrato, non quella migliore. In pratica è una misura più onesta e più difficile da &quot;far sembrare buona&quot; per caso.&lt;/p&gt;
&lt;h2&gt;La soglia: buona sotto i 200 ms&lt;/h2&gt;
&lt;p&gt;Il riferimento pratico è semplice. La documentazione di web.dev indica tre fasce:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;buona&lt;/strong&gt;: INP pari o inferiore a &lt;strong&gt;200 millisecondi&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;da migliorare&lt;/strong&gt;: tra 200 e 500 millisecondi;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;scarsa&lt;/strong&gt;: oltre &lt;strong&gt;500 millisecondi&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un millisecondo è un millesimo di secondo, quindi 200 ms sono un quinto di secondo: la soglia che separa una pagina che sembra reattiva da una che inizia a dare la sensazione di lentezza.&lt;/p&gt;
&lt;p&gt;Un dettaglio importante su come si legge il valore: non si guarda l&apos;utente più fortunato, ma il &lt;strong&gt;75° percentile&lt;/strong&gt; delle visite reali, misurato separatamente per dispositivi mobili e desktop. In parole povere, per essere considerato buono un sito deve rispondere sotto i 200 ms per almeno il 75% delle visite. È un modo per non nascondere i problemi dietro la media: conta che l&apos;esperienza sia buona per la grande maggioranza, non solo in condizioni ideali.&lt;/p&gt;
&lt;h2&gt;Perché conta per la SEO e il calendario del cambiamento&lt;/h2&gt;
&lt;p&gt;I Core Web Vitals non servono solo a fare ordine: sono uno dei fattori che Google considera per l&apos;esperienza di pagina, e quindi possono influire sul posizionamento nei risultati di ricerca. Non sono l&apos;unico né il più importante criterio, ma a parità di contenuto un sito reattivo parte avvantaggiato rispetto a uno che risponde in ritardo. Il legame con la SEO è quindi indiretto ma reale, e passa soprattutto dall&apos;esperienza offerta a chi visita davvero il sito.&lt;/p&gt;
&lt;p&gt;Sul fronte pratico, il passaggio è già avvenuto: dal 12 marzo 2024 INP è a tutti gli effetti un Core Web Vital e FID non lo è più. Google ha annunciato il cambiamento con largo anticipo, a maggio 2023, e la metrica era disponibile in forma sperimentale già da prima. Il ritiro di FID è graduale sul piano degli strumenti: è stato rimosso subito dal report principale di Search Console, mentre altri strumenti hanno previsto un periodo di transizione per dare tempo a chi sviluppa di adeguarsi. Chi teneva d&apos;occhio FID, insomma, deve semplicemente spostare l&apos;attenzione su INP.&lt;/p&gt;
&lt;h2&gt;Come si tiene sotto controllo e si migliora&lt;/h2&gt;
&lt;p&gt;La prima cosa utile è &lt;strong&gt;misurare con dati reali&lt;/strong&gt;. INP si valuta al meglio sul campo, cioè sulle visite effettive, non solo in laboratorio: strumenti come Search Console (nel report Core Web Vitals), PageSpeed Insights e i dati CrUX di Chrome mostrano il valore raccolto dagli utenti veri, sui loro dispositivi e sulle loro connessioni.&lt;/p&gt;
&lt;p&gt;Sul piano delle cause, un INP alto in genere significa che il dispositivo dell&apos;utente è troppo occupato a eseguire codice per rispondere in fretta alle interazioni. Le leve generali seguono di conseguenza, e agiscono soprattutto sul lato del browser.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alleggerire il lavoro del browser.&lt;/strong&gt; Meno codice viene eseguito in risposta a un clic, prima lo schermo può aggiornarsi. Ridurre il lavoro superfluo che si attiva a ogni interazione, per esempio affidando ad &lt;a href=&quot;/blog/css-anchor-positioning&quot;&gt;ancoraggi CSS nativi&lt;/a&gt; posizionamenti oggi gestiti con script su misura, è spesso l&apos;intervento più efficace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spezzare le operazioni lunghe.&lt;/strong&gt; Un compito pesante e ininterrotto tiene occupato il browser e blocca le risposte. Suddividerlo in parti più piccole lascia spazio per gestire le interazioni tra un pezzo e l&apos;altro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contenere script e componenti di terze parti.&lt;/strong&gt; Widget, tracker e strumenti esterni aggiungono lavoro che non sempre è visibile ma che pesa sulla reattività. Vale la pena verificarne il costo reale: su &lt;a href=&quot;/blog/prestashop-lento-come-velocizzarlo&quot;&gt;un e-commerce pieno di moduli&lt;/a&gt; è spesso il primo posto dove guardare.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dare priorità a ciò che l&apos;utente vede e tocca.&lt;/strong&gt; Rimandare le attività non urgenti, così che le interazioni immediate abbiano la precedenza, aiuta a tenere basso il ritardo percepito.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Come sempre in questi casi, conviene misurare prima e dopo ogni modifica: la reattività dipende da tanti fattori e la strada giusta è capire &lt;em&gt;dove&lt;/em&gt; il browser perde tempo, invece di cambiare tutto a caso.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Dal 12 marzo 2024 la reattività di una pagina si misura con &lt;strong&gt;INP&lt;/strong&gt; al posto di FID. INP guarda tutte le interazioni della visita e considera l&apos;intero percorso dal clic al risultato visibile, offrendo una fotografia più realistica di come il sito risponde. La soglia da tenere a mente è &lt;strong&gt;200 millisecondi&lt;/strong&gt; per almeno il 75% delle visite. Conta per due motivi che si tengono: un sito più reattivo è più piacevole da usare e, di riflesso, parte con qualche vantaggio anche lato SEO. Il punto di partenza resta lo stesso: misurare con dati reali, capire dove nasce il ritardo e intervenire sul livello giusto.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi portare l&apos;INP sotto i 200 millisecondi?&quot; text=&quot;Interveniamo su script di terze parti, codice lato client e configurazione del server per rendere il sito reattivo, dal primo byte alla singola interazione.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/blog/inp-cwv-launch&quot;&gt;Interaction to Next Paint becomes a Core Web Vital on March 12 - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/inp&quot;&gt;Interaction to Next Paint (INP) - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.google.com/search/blog/2023/05/introducing-inp&quot;&gt;Introducing INP to Core Web Vitals - Google Search Central&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/vitals&quot;&gt;Web Vitals - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Chrome attiva di default la crittografia post-quantum in TLS: cosa cambia e cosa può rompersi</title><link>https://initd.it/blog/chrome-post-quantum-tls</link><guid isPermaLink="true">https://initd.it/blog/chrome-post-quantum-tls</guid><description>Chrome abilita di default lo scambio di chiavi ibrido post-quantum sul desktop. Perché serve, cos&apos;è il &apos;raccogli ora, decifra dopo&apos; e perché alcuni apparati di rete si rompono.</description><pubDate>Thu, 16 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Da qualche versione, il browser Chrome protegge le connessioni sicure con un pezzo di crittografia nuovo, pensato per resistere ai futuri computer quantistici. È attivo per impostazione predefinita, quindi la maggior parte delle persone non deve fare nulla e non si accorge di niente. Per chi gestisce server e reti, però, c&apos;è un dettaglio importante: questo cambiamento ha fatto emergere problemi latenti in alcuni apparati di rete mal implementati, con la conseguenza che qualche connessione smette di funzionare dopo l&apos;aggiornamento del browser. Vale la pena capire cosa è cambiato, perché, e cosa conviene verificare.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;Chrome ha abilitato di default, sui computer desktop, uno scambio di chiavi &quot;ibrido&quot; resistente ai computer quantistici a partire dalla versione 124, uscita nella primavera del 2024. Lo scambio di chiavi è il primo passo di ogni connessione sicura: il momento in cui il browser e il sito si mettono d&apos;accordo su una chiave segreta condivisa, che poi serve a cifrare tutto il resto della conversazione. Tutto questo avviene dentro &lt;strong&gt;TLS&lt;/strong&gt;, il protocollo che sta dietro all&apos;&lt;code&gt;https&lt;/code&gt; e al lucchetto che compare nella barra degli indirizzi.&lt;/p&gt;
&lt;p&gt;La novità non richiede alcun intervento da parte dell&apos;utente: se il sito la supporta, la connessione parte già protetta; se non la supporta, si usa il metodo di prima. Nessuno deve installare o configurare niente.&lt;/p&gt;
&lt;h2&gt;Contro quale minaccia: &quot;raccogli ora, decifra dopo&quot;&lt;/h2&gt;
&lt;p&gt;Per capire perché tutto questo serva bisogna partire da una minaccia dal nome poco rassicurante: &lt;strong&gt;harvest now, decrypt later&lt;/strong&gt;, cioè &quot;raccogli ora, decifra dopo&quot;. L&apos;idea è semplice e sgradevole. Oggi il traffico su Internet è cifrato: i dati che viaggiano tra il dispositivo e il sito sono resi illeggibili a chi li intercetta, e la protezione regge perché i computer attuali non hanno la potenza per forzarla in tempi ragionevoli.&lt;/p&gt;
&lt;p&gt;I &lt;strong&gt;computer quantistici&lt;/strong&gt; - una tecnologia ancora in sviluppo, basata su principi diversi da quelli dei computer tradizionali - potrebbero un giorno rompere buona parte della crittografia che usiamo adesso. Nessuno sa con certezza se e quando accadrà. Il problema, però, è già attuale: chi intercetta traffico cifrato oggi può registrarlo e archiviarlo, aspettando di poterlo decifrare in futuro. Dati che restano sensibili per molti anni - cartelle cliniche, segreti industriali, comunicazioni riservate - sono quindi a rischio già ora, anche se la macchina capace di aprirli non esiste ancora. Mettere in sicurezza lo scambio di chiavi serve proprio a togliere valore a questa raccolta preventiva.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua rete regge un ClientHello più pesante?&quot; text=&quot;Verifichiamo firewall, proxy e bilanciatori per capire se sono pronti allo scambio di chiavi post-quantum prima che si rompano da soli.&quot; button=&quot;Verifica la tua rete →&quot;}&lt;/p&gt;
&lt;h2&gt;Come funziona: uno scambio di chiavi ibrido&lt;/h2&gt;
&lt;p&gt;Nella pratica non si è buttata via la crittografia di prima per sostituirla con quella nuova. Si usa un approccio &lt;strong&gt;ibrido&lt;/strong&gt;: si combinano un algoritmo classico, collaudato da anni, e uno post-quantum. La connessione resta protetta finché almeno uno dei due regge. Così, se in futuro si scoprisse una debolezza nell&apos;algoritmo nuovo - cosa non impossibile, visto che è recente - resterebbe la protezione di quello tradizionale; e all&apos;inverso, contro un attacco quantistico, protegge la parte nuova. In pratica, cintura e bretelle insieme.&lt;/p&gt;
&lt;p&gt;Lo schema attivato da Chrome si chiama &lt;strong&gt;X25519Kyber768&lt;/strong&gt;. Il nome è ostico, ma dice cosa contiene: &lt;em&gt;X25519&lt;/em&gt; è l&apos;algoritmo classico usato da anni per lo scambio di chiavi, mentre &lt;em&gt;Kyber768&lt;/em&gt; è la parte post-quantum. Kyber, al momento dell&apos;annuncio, era ancora una bozza dello standard poi pubblicato dall&apos;ente statunitense NIST con il nome di &lt;strong&gt;ML-KEM&lt;/strong&gt;, lo stesso ente che in seguito ha scelto &lt;a href=&quot;/blog/nist-hqc-post-quantum&quot;&gt;HQC come algoritmo di riserva&lt;/a&gt; per non dipendere da un solo approccio matematico. Non è quindi l&apos;esperimento di un singolo fornitore, ma un algoritmo su cui l&apos;industria si sta allineando. Nelle versioni successive di Chrome lo schema è stato aggiornato alla versione definitiva dello standard.&lt;/p&gt;
&lt;h2&gt;L&apos;effetto collaterale: il ClientHello diventa più grande&lt;/h2&gt;
&lt;p&gt;Ecco la parte che interessa direttamente i sistemisti. La chiave post-quantum occupa molto più spazio di quella classica. Questo gonfia il &lt;strong&gt;ClientHello&lt;/strong&gt;, cioè il primo messaggio con cui il browser si presenta al server all&apos;inizio della connessione. Nel messaggio il browser elenca cosa sa fare, comprese le chiavi che propone per lo scambio, la stessa busta che un&apos;altra estensione recente, l&apos;&lt;a href=&quot;/blog/tls-encrypted-client-hello&quot;&gt;Encrypted Client Hello&lt;/a&gt;, prova a cifrare per nasconderne il contenuto a chi intercetta il traffico.&lt;/p&gt;
&lt;p&gt;Con la parte post-quantum, questo primo messaggio diventa abbastanza grande da non entrare più in un singolo pacchetto di rete: viene quindi spezzato in due. Non è gratis: secondo l&apos;annuncio di Google, la maggiore dimensione comporta un aumento di circa il 4% della latenza mediana su tutti gli handshake TLS di Chrome sul desktop. È un costo contenuto, ma reale, ed è una delle ragioni per cui il cambiamento è arrivato prima sul desktop, dove le connessioni sono in genere più veloci.&lt;/p&gt;
&lt;h2&gt;Perché alcuni apparati si rompono&lt;/h2&gt;
&lt;p&gt;Il costo in latenza è la parte prevista. Quella imprevista è che, con l&apos;attivazione di default, sono venuti a galla difetti già presenti in diversi prodotti che stanno &quot;in mezzo&quot; alle connessioni. Nel gergo si chiamano &lt;strong&gt;middlebox&lt;/strong&gt;: firewall, &lt;a href=&quot;/blog/cos-e-un-reverse-proxy&quot;&gt;proxy&lt;/a&gt;, bilanciatori di carico e soprattutto i sistemi di &lt;strong&gt;ispezione TLS&lt;/strong&gt;, cioè apparati che sbirciano o filtrano il traffico cifrato in transito, molto diffusi nelle reti aziendali.&lt;/p&gt;
&lt;p&gt;In teoria un cambiamento del genere non dovrebbe rompere nulla. TLS è progettato per essere estensibile: se un apparato incontra un&apos;opzione che non conosce, la regola è ignorarla e proseguire con quelle che conosce. Offrire lo scambio di chiavi post-quantum è quindi retrocompatibile, e i sistemi scritti a norma continuano a funzionare senza modifiche. Il problema è che non tutti sono scritti a norma. Alcuni apparati davano per scontato che il ClientHello fosse piccolo e arrivasse in un solo pacchetto, oppure gestivano male i messaggi di dimensioni inattese. Finché tutti i ClientHello erano piccoli, il difetto non si vedeva. Appena il messaggio è cresciuto e si è spezzato in due pacchetti, quegli apparati hanno iniziato a rifiutare o troncare la connessione.&lt;/p&gt;
&lt;p&gt;Il punto da tenere a mente è questo: non è un difetto di Chrome, né della crittografia post-quantum. È un baco preesistente in un apparato di rete, che il cambiamento ha semplicemente reso visibile. Google ha confermato che il rilascio ha portato a galla diversi bug di questo tipo in prodotti di terze parti.&lt;/p&gt;
&lt;h2&gt;Cosa deve verificare chi gestisce i server&lt;/h2&gt;
&lt;p&gt;Il sintomo tipico è chiaro: dopo un aggiornamento di Chrome, alcuni utenti non riescono più a raggiungere un sito o un servizio, mentre con browser o versioni diverse tutto va. Se capita, conviene procedere così.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sospettare il percorso, non il browser.&lt;/strong&gt; Il problema quasi sempre non è né il client né il server finale, ma qualcosa in mezzo: un proxy, un firewall con ispezione TLS, un bilanciatore, un apparato di sicurezza perimetrale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolare la causa.&lt;/strong&gt; Chrome mette a disposizione una policy aziendale, &lt;code&gt;PostQuantumKeyAgreementEnabled&lt;/code&gt;, che permette di disattivare temporaneamente lo scambio di chiavi post-quantum. Se disattivandola il problema sparisce, la diagnosi è confermata: c&apos;è un apparato che non regge i ClientHello più grandi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggiornare l&apos;apparato colpevole.&lt;/strong&gt; La soluzione corretta è chiedere al fornitore una versione aggiornata che gestisca correttamente i messaggi grandi. La disattivazione via policy è pensata come rimedio temporaneo, per dare tempo di sistemare, non come stato definitivo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non rimandare.&lt;/strong&gt; Lo scambio di chiavi post-quantum non tornerà indietro, anzi diventerà la norma, tanto che &lt;a href=&quot;/blog/traffico-web-post-quantum&quot;&gt;oltre metà del traffico web globale è già cifrata in modo post-quantum&lt;/a&gt;. Un apparato che si rompe oggi con Chrome si romperà domani con gli altri browser e con i client aggiornati. Meglio sistemarlo adesso.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Per la maggior parte delle persone non c&apos;è nulla da fare: basta tenere aggiornati browser e sistema operativo, e la protezione arriva da sola. Per chi gestisce infrastrutture il messaggio è duplice. Da un lato è una buona notizia, perché il traffico inizia a essere protetto contro una minaccia concreta anche se ancora futura. Dall&apos;altro è un promemoria: gli apparati di rete che ispezionano o filtrano TLS vanno mantenuti aggiornati e conformi agli standard, perché ogni evoluzione del protocollo, &lt;a href=&quot;/blog/tls-certificati-47-giorni&quot;&gt;dalla vita sempre più breve dei certificati&lt;/a&gt; alla crittografia dello scambio di chiavi, può far emergere scorciatoie prese in passato. Questa è la prima onda, non l&apos;ultima.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Sistemi in mezzo alla connessione da aggiornare?&quot; text=&quot;Gestiamo server, firewall e reti aziendali: individuiamo gli apparati che non reggono TLS moderno e li mettiamo a norma prima che smettano di funzionare.&quot; button=&quot;Mettiamo in sicurezza la rete →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.google/chromium/advancing-our-amazing-bet-on-asymmetric/&quot;&gt;Advancing our amazing bet on asymmetric cryptography - Chromium Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://chromeenterprise.google/policies/post-quantum-key-agreement-enabled/&quot;&gt;PostQuantumKeyAgreementEnabled - Chrome Enterprise policy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>CSS Anchor Positioning: posizionare tooltip e menu senza JavaScript</title><link>https://initd.it/blog/css-anchor-positioning</link><guid isPermaLink="true">https://initd.it/blog/css-anchor-positioning</guid><description>Una nuova funzione del CSS permette di ancorare nativamente un elemento a un altro, come un tooltip al suo pulsante. Cos&apos;è, quale problema risolve e perché riduce la dipendenza dalle librerie JavaScript.</description><pubDate>Tue, 28 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Un piccolo riquadro che compare accanto al pulsante giusto per spiegare a cosa serve (un &quot;tooltip&quot;, cioè un suggerimento a comparsa). Un menu che si apre proprio sotto la voce che l&apos;ha richiamato. Una scheda informativa agganciata a un&apos;icona. Sono dettagli banali da immaginare, ma sorprendentemente scomodi da realizzare bene su una pagina web. Il motivo è che per anni il browser non ha avuto un modo diretto per dire &quot;colloca questo elemento accanto a quest&apos;altro&quot;. A maggio 2024 è arrivata una novità che affronta proprio questo problema: il CSS Anchor Positioning, una funzione che permette di ancorare un elemento a un altro usando solo il CSS, il linguaggio con cui si definisce l&apos;aspetto delle pagine, senza ricorrere a JavaScript.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;La funzione è arrivata in forma stabile con Google Chrome 125, uscito il 14 maggio 2024, e con Microsoft Edge, che condivide lo stesso motore di rendering (Chromium). Al momento dell&apos;annuncio Firefox e Safari non la supportano ancora: i rispettivi team la stanno implementando. La specifica, inoltre, è ancora una bozza (draft) del CSS Working Group del W3C, l&apos;organismo che definisce gli standard del web: alcuni dettagli potrebbero quindi cambiare. In pratica è una funzione nuova, disponibile per ora in un solo motore di browser. È un dato importante da tenere presente prima di adottarla su un sito in produzione.&lt;/p&gt;
&lt;h2&gt;Il problema: mettere un elemento accanto a un altro&lt;/h2&gt;
&lt;p&gt;Per capire perché la notizia conta, serve un passo indietro. Un elemento come un tooltip di solito viene &quot;estratto&quot; dal flusso normale della pagina (con la proprietà CSS &lt;code&gt;position: absolute&lt;/code&gt;) e piazzato tramite coordinate. Il guaio è che quell&apos;elemento non sa dove si trova il pulsante a cui dovrebbe stare vicino. E la posizione del pulsante cambia in continuazione: quando la pagina scorre, quando la finestra viene ridimensionata, quando il testo attorno si allunga.&lt;/p&gt;
&lt;p&gt;La soluzione, finora, era il JavaScript, il linguaggio di programmazione che gira nel browser. Serviva codice che misurasse la posizione del pulsante, calcolasse le coordinate del tooltip e ripetesse il calcolo a ogni scorrimento o ridimensionamento. Per non riscrivere ogni volta questa logica, si ricorre a librerie specializzate come Floating UI (l&apos;erede di Popper), pensate proprio per gestire questi calcoli e i casi limite, ad esempio far comparire il tooltip sopra il pulsante quando sotto non c&apos;è spazio. Sono strumenti validi, ma hanno un costo: codice in più da caricare e mantenere, e calcoli che, girando a ogni scorrimento, possono appesantire la pagina e peggiorare la reattività misurata da metriche come l&apos;&lt;a href=&quot;/blog/inp-core-web-vital&quot;&gt;INP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo frontend porta ancora librerie JS solo per posizionare tooltip e menu?&quot; text=&quot;Valutiamo se puoi già sostituirle con CSS nativo o se serve un ripiego per i browser non ancora supportati.&quot; button=&quot;Valuta la tua interfaccia →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa fa l&apos;anchor positioning&lt;/h2&gt;
&lt;p&gt;L&apos;anchor positioning (&quot;posizionamento tramite ancora&quot;) sposta questo lavoro dentro il browser, sulla stessa scia di altre funzioni che portano nel motore capacità prima affidate a codice esterno, come la &lt;a href=&quot;/blog/prompt-api-ai-nel-browser&quot;&gt;Prompt API per l&apos;AI&lt;/a&gt;. L&apos;idea è dichiarare la relazione direttamente nel CSS: un elemento viene indicato come &quot;ancora&quot;, un altro viene posizionato rispetto a lei. Da quel momento è il browser a tenerli legati e a ricalcolare la posizione da solo quando qualcosa si muove o la pagina scorre. Poiché la funzione è integrata nel motore, questo ricalcolo avviene in modo efficiente, senza il codice aggiuntivo che prima girava a ogni evento.&lt;/p&gt;
&lt;h2&gt;Come funziona, in pratica&lt;/h2&gt;
&lt;p&gt;Il meccanismo si regge su pochi ingredienti. Prima si dà un nome all&apos;ancora con la proprietà &lt;code&gt;anchor-name&lt;/code&gt;. Poi, sull&apos;elemento da posizionare, si usa &lt;code&gt;position-anchor&lt;/code&gt; per puntare a quel nome e la funzione &lt;code&gt;anchor()&lt;/code&gt; per allineare i suoi bordi ai bordi dell&apos;ancora.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/* il pulsante diventa un&apos;ancora, con un nome scelto da noi */
.pulsante {
  anchor-name: --info;
}

/* il tooltip viene agganciato a quell&apos;ancora e messo appena sopra */
.tooltip {
  position: absolute;
  position-anchor: --info;
  bottom: anchor(top);          /* il bordo inferiore del tooltip tocca il bordo superiore del pulsante */
  justify-self: anchor-center;  /* centrato in orizzontale rispetto al pulsante */
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La riga &lt;code&gt;bottom: anchor(top)&lt;/code&gt; si legge così: &quot;posiziona il bordo inferiore del tooltip all&apos;altezza del bordo superiore dell&apos;ancora&quot;, cioè mettilo sopra il pulsante. Cambiando questi riferimenti si sposta l&apos;elemento sopra, sotto o di fianco, senza mai indicare coordinate assolute e senza una riga di JavaScript.&lt;/p&gt;
&lt;h2&gt;Quando non c&apos;è spazio&lt;/h2&gt;
&lt;p&gt;Il caso più interessante è proprio quello che rende faticoso il lavoro a mano: cosa succede se il tooltip, messo sopra il pulsante, finisce fuori dallo schermo perché il pulsante è vicino al bordo superiore? Qui l&apos;anchor positioning offre un meccanismo di ripiego integrato. Attraverso una regola dedicata (&lt;code&gt;@position-try&lt;/code&gt;) si possono elencare posizioni alternative, e il browser sceglie la prima che ci sta senza essere tagliata. È lo stesso comportamento &quot;intelligente&quot; che finora richiedeva le librerie, ma ottenuto con il solo CSS. C&apos;è anche un modo per nascondere l&apos;elemento quando l&apos;ancora esce dalla vista scorrendo, così un tooltip non resta appeso nel vuoto.&lt;/p&gt;
&lt;h2&gt;Cosa cambia rispetto alle librerie JavaScript&lt;/h2&gt;
&lt;p&gt;Per chi costruisce interfacce, il vantaggio principale è meno codice da scrivere e mantenere. Per i casi comuni - tooltip, menu, piccoli pannelli a comparsa - non serve più aggiungere una libreria dedicata solo per posizionare un elemento accanto a un altro. Il browser conosce la posizione degli elementi e aggiorna tutto da sé, in modo più coerente da un sito all&apos;altro.&lt;/p&gt;
&lt;p&gt;Questo non manda in pensione le librerie. Restano utili per scenari complessi, per animazioni e comportamenti particolari, e soprattutto per garantire lo stesso risultato oggi, su tutti i browser, anche quelli che non supportano ancora la funzione nativa. La scelta, insomma, dipende dal progetto.&lt;/p&gt;
&lt;h2&gt;Disponibilità e cautele&lt;/h2&gt;
&lt;p&gt;Trattandosi di una funzione nuova e per ora presente in un solo motore, conviene adottarla con l&apos;approccio del miglioramento progressivo (progressive enhancement): costruire l&apos;interfaccia in modo che resti utilizzabile anche dove la funzione manca, trattando l&apos;ancoraggio nativo come un extra dove è disponibile. In alternativa si può continuare a usare una libreria come ripiego, attivando il metodo nativo solo sui browser che lo conoscono. L&apos;anchor positioning si sposa bene con la Popover API, un&apos;altra funzione recente pensata per mostrare pannelli sovrapposti come menu e finestrelle, e con le &lt;a href=&quot;/blog/view-transitions-baseline&quot;&gt;View Transitions&lt;/a&gt; per animare i cambi di stato: insieme coprono buona parte di ciò che serve per queste interfacce a livelli.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Il CSS Anchor Positioning permette di ancorare un elemento a un altro direttamente nel CSS, delegando al browser il calcolo della posizione. È arrivato in forma stabile con Chrome 125 a maggio 2024, mentre gli altri browser lo stanno ancora implementando, e la specifica è tuttora una bozza. Per chi fa frontend significa meno JavaScript e meno dipendenze per un compito molto comune, tenendo però conto che oggi il supporto non è ancora universale. È uno di quei tasselli che, col tempo, spostano nel browser lavori che prima ricadevano su chi scrive il codice.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi alleggerire il frontend della tua applicazione?&quot; text=&quot;Sviluppiamo interfacce Vue e Laravel puntando su funzioni native del browser dove possibile, riducendo dipendenze JavaScript e tempi di caricamento.&quot; button=&quot;Parliamo del frontend →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/anchor-positioning-api&quot;&gt;Introducing the CSS anchor positioning API - Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_anchor_positioning&quot;&gt;CSS anchor positioning - MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/release-notes/125&quot;&gt;Chrome 125 release notes - Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è il Model Context Protocol (MCP) e perché se ne parla</title><link>https://initd.it/blog/cos-e-mcp</link><guid isPermaLink="true">https://initd.it/blog/cos-e-mcp</guid><description>Anthropic ha presentato MCP, uno standard aperto per collegare gli assistenti AI a dati e strumenti. Cos&apos;è, che problema risolve e perché uno standard conta, spiegato in modo semplice.</description><pubDate>Mon, 25 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gli assistenti basati sull&apos;intelligenza artificiale sanno scrivere testi e rispondere a domande, ma da soli non &quot;vedono&quot; i dati di chi li usa: i file su un disco, i messaggi in una chat di lavoro, le righe di un database. Per fargli usare quelle informazioni serve un collegamento. E finora ogni collegamento era un lavoro a sé, costruito su misura. Il 25 novembre 2024 Anthropic, l&apos;azienda che sviluppa l&apos;assistente Claude, ha presentato il &lt;strong&gt;Model Context Protocol&lt;/strong&gt; (MCP): uno standard aperto pensato proprio per rendere quei collegamenti uniformi.&lt;/p&gt;
&lt;p&gt;Vale la pena capire cosa significa, perché dietro un nome tecnico c&apos;è un&apos;idea semplice che riguarda chiunque usi o costruisca strumenti con l&apos;AI.&lt;/p&gt;
&lt;h2&gt;Il problema: troppe integrazioni fatte a mano&lt;/h2&gt;
&lt;p&gt;Un assistente AI diventa davvero utile quando può attingere a dati e strumenti reali, non solo alla conoscenza con cui è stato addestrato. Il punto è che quei dati vivono in tanti posti diversi: un archivio di documenti, una casella di posta, un sistema aziendale, un database. Ognuno di questi posti parla un suo linguaggio e ha un suo modo di essere interrogato.&lt;/p&gt;
&lt;p&gt;Fino a poco fa, per ogni sorgente bisognava scrivere un pezzo di codice apposta, cioè un&apos;&lt;strong&gt;integrazione&lt;/strong&gt;: un ponte su misura tra l&apos;assistente e quel singolo servizio. Funziona, ma non regge la crescita. Con molti assistenti da un lato e molti servizi dall&apos;altro, il numero di ponti da costruire e mantenere esplode. In termini spiccioli: se ci sono cinque applicazioni AI e dieci strumenti, senza un linguaggio comune servono potenzialmente cinquanta collegamenti diversi, tutti da scrivere, testare e aggiornare quando qualcosa cambia.&lt;/p&gt;
&lt;p&gt;È il classico problema delle integrazioni frammentate: molte, tutte diverse, tutte fragili. Ed è esattamente il problema che MCP prova a togliere di mezzo.&lt;/p&gt;
&lt;h2&gt;Un&apos;analogia: la presa universale&lt;/h2&gt;
&lt;p&gt;Un modo semplice per capirlo è pensare ai cavi. Prima che si diffondesse lo standard USB, ogni dispositivo aveva il suo connettore: un cavo per la stampante, uno per la macchina fotografica, uno per il telefono, ciascuno incompatibile con gli altri. Poi è arrivata una presa comune e quel groviglio si è ridotto a un solo tipo di collegamento.&lt;/p&gt;
&lt;p&gt;MCP punta a fare la stessa cosa per gli assistenti AI. La documentazione ufficiale lo descrive proprio come &quot;una porta USB-C per le applicazioni AI&quot;: un modo standardizzato per collegare un assistente a sorgenti di dati e strumenti esterni, al posto di tanti collegamenti su misura. Un &lt;strong&gt;protocollo&lt;/strong&gt;, in questo contesto, è semplicemente un insieme di regole condivise su come due programmi si scambiano messaggi. Se entrambi i lati rispettano le stesse regole, si capiscono senza bisogno di un adattatore costruito ad hoc.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Vuoi collegare l&apos;AI ai dati della tua azienda senza integrazioni fatte a mano ogni volta?&quot; text=&quot;Valutiamo se un server MCP su misura ha senso per il tuo caso, e con quali permessi va esposto.&quot; button=&quot;Valuta il tuo progetto MCP →&quot;}&lt;/p&gt;
&lt;h2&gt;Come funziona: client e server&lt;/h2&gt;
&lt;p&gt;MCP separa due ruoli, e capirli aiuta a vedere perché lo schema è pulito.&lt;/p&gt;
&lt;p&gt;Da una parte c&apos;è il &lt;strong&gt;server MCP&lt;/strong&gt;: un piccolo programma che &quot;espone&quot; una sorgente di dati o uno strumento parlando il linguaggio dello standard. Per esempio, un server può dare accesso a una cartella di documenti, a un database o alle funzioni di un servizio. Il server dice, in modo uniforme, cosa mette a disposizione e come lo si usa.&lt;/p&gt;
&lt;p&gt;Dall&apos;altra parte c&apos;è il &lt;strong&gt;client&lt;/strong&gt;, cioè l&apos;applicazione AI che vuole usare quei dati o quegli strumenti, come l&apos;assistente stesso. Il client si collega al server e, seguendo le stesse regole, può leggere informazioni o richiedere azioni. Il collegamento è &lt;strong&gt;bidirezionale&lt;/strong&gt;: l&apos;assistente non solo riceve dati, ma può anche chiedere al server di fare qualcosa.&lt;/p&gt;
&lt;p&gt;Il vantaggio dello schema è che i due lati non hanno bisogno di conoscersi in anticipo. Un assistente che &quot;parla MCP&quot; può collegarsi a qualunque server MCP, e un server MCP può essere usato da qualunque assistente compatibile. È lo stesso principio della presa universale: conta che entrambi rispettino lo standard, non chi li ha costruiti.&lt;/p&gt;
&lt;h2&gt;Cosa è stato rilasciato&lt;/h2&gt;
&lt;p&gt;All&apos;annuncio, MCP non è arrivato come una semplice idea sulla carta, ma con materiale concreto e aperto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La &lt;strong&gt;specifica&lt;/strong&gt; dello standard e alcuni &lt;strong&gt;SDK&lt;/strong&gt; (i kit di sviluppo, cioè gli strumenti per costruire client e server), pubblicati su GitHub e a disposizione di tutti.&lt;/li&gt;
&lt;li&gt;Il supporto ai server MCP &lt;strong&gt;in locale&lt;/strong&gt; dentro l&apos;app Claude per computer desktop, così da poter provare i collegamenti sul proprio dispositivo.&lt;/li&gt;
&lt;li&gt;Una raccolta &lt;strong&gt;open source&lt;/strong&gt; di server già pronti per strumenti di uso comune, tra cui Google Drive, Slack, GitHub, Git e Postgres. Servono da esempio e da punto di partenza, invece di far ricominciare tutti da zero.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic ha inoltre indicato alcuni primi utilizzatori, come le aziende Block e Apollo, e strumenti per sviluppatori - tra gli altri Zed, Replit, Codeium e Sourcegraph - impegnati a integrare lo standard nei loro prodotti; da allora il supporto si è allargato anche a strumenti più recenti come &lt;a href=&quot;/blog/gemini-cli-assistente-ai-terminale&quot;&gt;Gemini CLI&lt;/a&gt;. Un dettaglio non secondario: MCP è stato presentato come progetto aperto e collaborativo, non come una tecnologia chiusa e controllata da un solo fornitore.&lt;/p&gt;
&lt;h2&gt;Perché uno standard conta&lt;/h2&gt;
&lt;p&gt;Il valore di MCP non sta in una singola funzione, ma nello spostamento di lavoro che rende possibile. Senza uno standard, chi costruisce un assistente deve creare un collegamento diverso per ogni strumento; e chi costruisce uno strumento deve rifare il lavoro per ogni assistente. Con uno standard, ognuno lo implementa &lt;strong&gt;una volta sola&lt;/strong&gt;: chi crea uno strumento scrive un solo server MCP e lo rende utilizzabile da qualsiasi assistente compatibile; chi crea un assistente aggiunge il supporto a MCP e guadagna l&apos;accesso a tutti i server esistenti. Costruisci una volta, colleghi ovunque.&lt;/p&gt;
&lt;p&gt;Ci sono altri due motivi per cui questo conta, anche per chi non scrive codice. Il primo è la &lt;strong&gt;riduzione del vincolo a un solo fornitore&lt;/strong&gt;: se il modo di collegare dati e strumenti è comune, è più facile cambiare assistente o farne convivere diversi, senza rifare tutte le integrazioni. Il secondo è la &lt;strong&gt;trasparenza&lt;/strong&gt;: essendo uno standard aperto, chiunque può leggere la specifica, capire come funziona e contribuire, invece di doversi fidare di un meccanismo chiuso.&lt;/p&gt;
&lt;h2&gt;Cautele e stato al lancio&lt;/h2&gt;
&lt;p&gt;Onestà prima di tutto: al momento dell&apos;annuncio si trattava di una prima release. Il supporto ai server in locale c&apos;era da subito, mentre per l&apos;uso remoto e in produzione - cioè collegamenti che non girano solo sul computer di una persona, ma dentro sistemi aziendali - Anthropic indicava strumenti ancora &quot;in arrivo&quot;. Come per ogni standard, poi, il valore reale dipende dall&apos;adozione: uno standard serve se in molti lo usano, e questo si vede col tempo, non il primo giorno, un percorso che è proseguito quando &lt;a href=&quot;/blog/mcp-linux-foundation&quot;&gt;MCP è passato sotto il cappello della Linux Foundation&lt;/a&gt; per rafforzarne la governance neutrale.&lt;/p&gt;
&lt;p&gt;C&apos;è anche un aspetto di &lt;strong&gt;sicurezza&lt;/strong&gt; da tenere presente. Un server MCP dà a un assistente accesso a dati e, spesso, la possibilità di compiere azioni. Va quindi trattato con le stesse cautele di qualsiasi integrazione che tocca informazioni reali: è bene sapere cosa espone, con quali permessi e verso chi, magari delegando l&apos;accesso con un modello a permessi granulari come &lt;a href=&quot;/blog/cloudflare-oauth-self-managed&quot;&gt;l&apos;OAuth self-managed&lt;/a&gt; invece di un token che apre tutto. La comodità di un collegamento uniforme non toglie la responsabilità di controllarlo, per esempio eseguendo i server meno fidati in &lt;a href=&quot;/blog/cloudflare-workers-containers&quot;&gt;ambienti isolati come i container&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Il Model Context Protocol è uno standard aperto, presentato da Anthropic il 25 novembre 2024, per collegare gli assistenti AI a dati e strumenti in modo uniforme. Risolve un problema concreto: la selva di integrazioni fatte a mano, una per ogni combinazione di assistente e servizio. L&apos;idea, come per lo standard USB, è avere un&apos;unica &quot;presa&quot; comune al posto di tanti collegamenti diversi. È partito con specifica, SDK ed esempi aperti, e con qualche primo utilizzatore. Se e quanto diventerà davvero uno standard di riferimento lo diranno l&apos;adozione e i mesi a venire; l&apos;obiettivo, però, è chiaro e sensato: meno lavoro ripetuto, più libertà di scelta.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi portare MCP nei flussi di lavoro della tua azienda?&quot; text=&quot;Sviluppiamo server e integrazioni MCP su misura per collegare l&apos;AI ai vostri sistemi Laravel e ai dati aziendali, con permessi definiti e controllati.&quot; button=&quot;Costruiamo il tuo server MCP →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/news/model-context-protocol&quot;&gt;Introducing the Model Context Protocol - Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://modelcontextprotocol.io/introduction&quot;&gt;What is the Model Context Protocol (MCP)? - modelcontextprotocol.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>OAuth 2.0: le nuove best practice di sicurezza (RFC 9700)</title><link>https://initd.it/blog/oauth-best-practice-sicurezza</link><guid isPermaLink="true">https://initd.it/blog/oauth-best-practice-sicurezza</guid><description>L&apos;IETF ha pubblicato la RFC 9700, la Best Current Practice aggiornata per la sicurezza di OAuth 2.0: cos&apos;è, cosa cambia e perché conta per login e API.</description><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A gennaio 2025 l&apos;IETF - l&apos;organismo che cura gli standard tecnici di Internet - ha pubblicato la RFC 9700, intitolata &quot;Best Current Practice for OAuth 2.0 Security&quot;. Il documento raccoglie in forma ufficiale e aggiornata le regole di sicurezza consigliate per chi usa OAuth 2.0, il meccanismo dietro al classico &quot;Accedi con Google&quot; e a gran parte delle API protette del web. Non introduce un protocollo nuovo: mette ordine, aggiorna i consigli esistenti e segna come da evitare alcune pratiche ormai considerate rischiose.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è OAuth 2.0, in breve&lt;/h2&gt;
&lt;p&gt;OAuth 2.0 è uno standard per l&apos;autorizzazione delegata. Detto in modo semplice: permette a un&apos;applicazione di ottenere un accesso limitato a un servizio per conto di una persona, senza che quella persona debba consegnare la propria password all&apos;applicazione. È quello che succede quando un sito chiede &quot;Accedi con Google&quot; oppure &quot;Collega il tuo account&quot;. Il servizio di origine verifica l&apos;identità e rilascia all&apos;applicazione un token, cioè un gettone temporaneo che vale come permesso d&apos;accesso, con limiti precisi su cosa può fare e per quanto tempo.&lt;/p&gt;
&lt;p&gt;Il vantaggio è evidente. La password resta al servizio di origine, l&apos;applicazione riceve solo il minimo necessario, e quel permesso si può revocare in qualsiasi momento. Proprio per questo OAuth 2.0 è diventato lo scheletro di login e API su gran parte del web: dai social alle piattaforme cloud, fino alle integrazioni tra software aziendali.&lt;/p&gt;
&lt;p&gt;Conviene chiarire subito tre termini che torneranno utili. Un &lt;em&gt;access token&lt;/em&gt; è il gettone che dà accesso a una risorsa. Un &lt;em&gt;authorization code&lt;/em&gt; (codice di autorizzazione) è un passaggio intermedio: un codice breve che l&apos;applicazione scambia poi con il token vero. Un &lt;em&gt;redirect URI&lt;/em&gt; è l&apos;indirizzo a cui il servizio rimanda l&apos;utente dopo il consenso, e su cui recapita quel codice.&lt;/p&gt;
&lt;h2&gt;Perché un riferimento aggiornato conta&lt;/h2&gt;
&lt;p&gt;OAuth 2.0 è stato pubblicato nel 2012 (RFC 6749). Da allora è stato adottato quasi ovunque, e con l&apos;adozione su larga scala sono emersi attacchi e insidie che all&apos;inizio non erano chiari. Le regole di sicurezza originali si sono rivelate in alcuni punti troppo generiche, in altri superate.&lt;/p&gt;
&lt;p&gt;La RFC 9700 nasce per questo. È una &lt;em&gt;Best Current Practice&lt;/em&gt; - in sigla BCP, con numero 240 - cioè un documento che non descrive un nuovo standard tecnico, ma raccoglie la pratica migliore consigliata dalla comunità in un dato momento. In concreto aggiorna ed estende tre documenti precedenti: la specifica base di OAuth 2.0 (RFC 6749), le regole sull&apos;uso dei token &quot;bearer&quot; (RFC 6750) e il vecchio modello delle minacce (RFC 6819). L&apos;obiettivo dichiarato è incorporare l&apos;esperienza raccolta sul campo e coprire minacce nuove, nate dall&apos;uso sempre più esteso del protocollo.&lt;/p&gt;
&lt;p&gt;Un punto importante: non è una bozza né una proposta. È un documento pubblicato a gennaio 2025, al livello di &quot;pratica corrente&quot; ufficiale. Gli autori sono Torsten Lodderstedt (SPRIND), John Bradley (Yubico), Andrey Labunets e Daniel Fett (Authlete), nomi noti nell&apos;ambito dell&apos;&lt;a href=&quot;/blog/passkey-multipiattaforma&quot;&gt;identità digitale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua applicazione usa ancora l&apos;implicit grant o password dirette?&quot; text=&quot;Verifichiamo la configurazione OAuth delle tue API: PKCE, redirect URI e rotazione dei token.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Le raccomandazioni principali&lt;/h2&gt;
&lt;p&gt;Il testo è lungo e dettagliato, ma alcune indicazioni riassumono bene la direzione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PKCE per le applicazioni pubbliche.&lt;/strong&gt; PKCE è un meccanismo che lega la richiesta iniziale allo scambio finale del codice, così che un codice intercettato non basti da solo a ottenere il token. La RFC lo rende obbligatorio per i client &quot;pubblici&quot; - app mobili e applicazioni che girano nel browser, che non possono custodire un segreto - e lo consiglia anche per gli altri. I &lt;a href=&quot;/blog/cloudflare-oauth-self-managed&quot;&gt;server di autorizzazione&lt;/a&gt; devono supportarlo e verificarlo, in modo che un attaccante non possa aggirarlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Corrispondenza esatta dei redirect URI.&lt;/strong&gt; Il server deve confrontare l&apos;indirizzo di ritorno con quelli registrati in anticipo carattere per carattere, senza scorciatoie. È una difesa contro il dirottamento del codice di autorizzazione verso un sito controllato dall&apos;attaccante. L&apos;unica eccezione pratica riguarda le app native su &quot;localhost&quot;, dove il numero di porta può variare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Token legati a chi li usa.&lt;/strong&gt; Un rischio classico è &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;il furto del token&lt;/a&gt;: chi lo ruba lo può riutilizzare. La RFC raccomanda i &lt;em&gt;sender-constrained token&lt;/em&gt;, cioè token vincolati al client legittimo, tramite mutual TLS (RFC 8705) o DPoP (RFC 9449). In pratica il token da solo non basta: serve anche &lt;a href=&quot;/blog/web-bot-auth&quot;&gt;la prova di essere il titolare originale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Protezione dei refresh token.&lt;/strong&gt; Il &lt;em&gt;refresh token&lt;/em&gt; è un gettone a vita più lunga che serve a ottenere nuovi access token senza rifare il login. Per le applicazioni pubbliche la RFC chiede che sia anch&apos;esso vincolato al client, oppure che venga ruotato, cioè sostituito a ogni uso, così che un token rubato smetta presto di funzionare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Difesa dagli attacchi &quot;mix-up&quot;.&lt;/strong&gt; Quando un&apos;applicazione dialoga con più server di autorizzazione, un attaccante può cercare di confondere le risposte tra l&apos;uno e l&apos;altro. La contromisura richiesta è identificare con chiarezza chi ha emesso la risposta (tramite il parametro &lt;code&gt;iss&lt;/code&gt;) oppure usare indirizzi di ritorno distinti per ciascun server.&lt;/p&gt;
&lt;p&gt;A queste si aggiungono due regole di base: le risposte di autorizzazione non devono mai viaggiare su connessioni non cifrate, e conviene affidarsi ai metadati del server di autorizzazione per attivare in automatico le opzioni di sicurezza, riducendo gli errori di configurazione.&lt;/p&gt;
&lt;h2&gt;Cosa viene sconsigliato o eliminato&lt;/h2&gt;
&lt;p&gt;Parte del valore della RFC 9700 sta in ciò che toglie.&lt;/p&gt;
&lt;p&gt;Viene abbandonato l&apos;&lt;em&gt;implicit grant&lt;/em&gt;, un vecchio flusso che consegnava l&apos;access token direttamente nella risposta del browser: comodo un tempo, ma esposto a fughe e riuso del token. Al suo posto va usato il flusso con codice di autorizzazione e PKCE.&lt;/p&gt;
&lt;p&gt;Viene escluso del tutto il &lt;em&gt;resource owner password credentials&lt;/em&gt;, il flusso in cui l&apos;utente digita la propria password direttamente nell&apos;applicazione, che poi la gira al servizio. Vanifica il senso stesso di OAuth - non far passare la password dalle mani dell&apos;applicazione - ed è incompatibile con l&apos;autenticazione a più fattori. La RFC dice chiaramente che non deve essere usato.&lt;/p&gt;
&lt;h2&gt;Perché conta per chi espone login e API&lt;/h2&gt;
&lt;p&gt;Per chi gestisce un servizio con login sociale o API protette, la RFC 9700 è il riferimento a cui allinearsi. Non impone di riscrivere tutto domani, ma indica con chiarezza cosa è considerato sicuro oggi e cosa no.&lt;/p&gt;
&lt;p&gt;Vale come lista di controllo pratica: verificare che sia attivo PKCE, che i redirect URI siano confrontati in modo esatto, che i flussi &lt;em&gt;implicit&lt;/em&gt; e &lt;em&gt;password&lt;/em&gt; siano stati dismessi, che i refresh token vengano ruotati o vincolati. Chi sviluppa integrazioni ha ora un documento unico e citabile a cui riferirsi nelle scelte tecniche e nelle verifiche di sicurezza. E chi usa librerie o provider di identità di terze parti può adottarlo come metro per capire se seguono la pratica aggiornata.&lt;/p&gt;
&lt;p&gt;Il messaggio di fondo è semplice: OAuth 2.0 resta valido, ma il modo sicuro di usarlo si è affinato con l&apos;esperienza. Avere quel modo scritto nero su bianco, in un documento ufficiale, aiuta a ridurre gli errori più comuni.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Devi mettere in sicurezza login e API secondo RFC 9700?&quot; text=&quot;Progettiamo e gestiamo l&apos;autenticazione delle applicazioni Laravel e delle integrazioni API: PKCE, token vincolati, monitoraggio degli accessi.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/rfc9700/&quot;&gt;RFC 9700: Best Current Practice for OAuth 2.0 Security (IETF Datatracker)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9700.html&quot;&gt;RFC 9700 (RFC Editor)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://oauth.net/2/oauth-best-practice/&quot;&gt;OAuth 2.0 Security Best Current Practice (oauth.net)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Le passkey diventano davvero multipiattaforma</title><link>https://initd.it/blog/passkey-multipiattaforma</link><guid isPermaLink="true">https://initd.it/blog/passkey-multipiattaforma</guid><description>Le passkey sostituiscono la password con una coppia di chiavi crittografiche. Da gennaio 2025 quelle salvate in Google Password Manager si sincronizzano anche su iPhone e iPad, oltre che su Android, Windows, macOS, Linux e ChromeOS.</description><pubDate>Thu, 23 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Per entrare in un sito serve quasi sempre una password: una stringa da ricordare, che si può dimenticare, riusare per pigrizia o consegnare per sbaglio a una pagina truffa. Le passkey nascono per sostituire quel meccanismo. Esistono da qualche anno, ma finora avevano un limite pratico che ne frenava la diffusione: una passkey creata dentro un ecosistema tendeva a restare lì. A gennaio 2025 Google ha annunciato un passo che riduce quel limite. Le passkey salvate nel suo gestore, Google Password Manager, sono ora disponibili anche su iPhone e iPad, oltre che su Android, Windows, macOS, Linux e ChromeOS. Vale la pena capire cos&apos;è una passkey e perché poterla usare su dispositivi di marche diverse cambia le cose.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è una passkey&lt;/h2&gt;
&lt;p&gt;Una passkey è un modo per accedere a un sito o a un&apos;app senza digitare una password. Al posto della parola segreta condivisa con il servizio, usa una coppia di chiavi crittografiche: due valori matematici legati fra loro. Una è la chiave privata e resta sul dispositivo dell&apos;utente, protetta e mai comunicata a nessuno. L&apos;altra è la chiave pubblica e viene consegnata al sito al momento della registrazione.&lt;/p&gt;
&lt;p&gt;Quando si accede, il sito invia una piccola sfida da firmare. Il dispositivo firma quella sfida con la chiave privata, ma solo dopo che l&apos;utente si è sbloccato come fa di solito: impronta, riconoscimento del volto, PIN o segno. Il sito verifica la firma con la chiave pubblica che aveva in archivio e lascia entrare. Il gesto per l&apos;utente è lo stesso che usa già per sbloccare il telefono.&lt;/p&gt;
&lt;p&gt;Questo disegno ha due conseguenze pratiche. La prima: non c&apos;è più una password da rubare. Sul server del sito resta solo la chiave pubblica, che di per sé non permette di accedere; una fuga di dati non consegna più &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;le credenziali di accesso&lt;/a&gt;. La seconda: la passkey è legata all&apos;indirizzo reale del sito. Una pagina che imita la banca non riceverà mai la firma giusta, perché l&apos;indirizzo non corrisponde. In pratica il &lt;a href=&quot;/blog/spf-dkim-dmarc&quot;&gt;phishing&lt;/a&gt;, cioè l&apos;inganno che spinge a digitare le credenziali su un sito falso, smette di funzionare. Le passkey si basano su standard aperti, WebAuthn e FIDO2, curati dalla FIDO Alliance insieme al consorzio del web.&lt;/p&gt;
&lt;h2&gt;Perché la sincronizzazione era il vero ostacolo&lt;/h2&gt;
&lt;p&gt;Sulla carta il meccanismo è più semplice e più sicuro di una password. Il problema, finora, non era la crittografia: era la portabilità. Se la chiave privata resta sul dispositivo, cosa succede quando i dispositivi sono più di uno, magari di marche diverse?&lt;/p&gt;
&lt;p&gt;La risposta dei grandi fornitori è stata sincronizzare le passkey in modo cifrato tra i propri apparecchi. Ma ciascuno lo faceva dentro il proprio recinto. Una passkey creata su iPhone finiva in Apple Passwords, l&apos;ex Portachiavi iCloud, e restava utilizzabile sui dispositivi Apple. Una passkey creata su Android o su un computer, tramite Google Password Manager, viveva nel mondo Google e non arrivava su iPhone e iPad. Chi aveva un telefono di una marca e un computer di un&apos;altra, o cambiava marca di telefono, poteva ritrovarsi senza la propria passkey proprio dove serviva.&lt;/p&gt;
&lt;p&gt;È un ostacolo concreto. Se l&apos;utente teme di rimanere chiuso fuori, tende a tenersi la vecchia password come rete di sicurezza, e il sito deve continuare a supportarla. Finché la password resta come alternativa, i vantaggi della passkey restano a metà. La sincronizzazione tra piattaforme diverse è quindi il tassello che decide se le passkey diventano un metodo di accesso quotidiano o restano una comodità per chi vive dentro un solo ecosistema.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il login della tua piattaforma si basa ancora solo su password?&quot; text=&quot;Valutiamo se e come introdurre le passkey nel sistema di autenticazione dei tuoi utenti.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa ha annunciato Google&lt;/h2&gt;
&lt;p&gt;Il 16 gennaio 2025, sul blog per sviluppatori di Chrome, Google ha annunciato che le passkey di Google Password Manager sono disponibili su iOS e iPadOS, a partire dalla versione 17. Da quel momento Chrome, con lo stesso profilo connesso, sincronizza le passkey di Google Password Manager su tutte le piattaforme e i dispositivi: Android, iPhone e iPad, Windows, macOS, Linux e ChromeOS.&lt;/p&gt;
&lt;p&gt;È il pezzo che mancava. La sincronizzazione tra computer e Android era già arrivata qualche mese prima, a settembre 2024, per Windows, macOS, Linux e ChromeOS. iPhone e iPad erano rimasti fuori: le passkey di Google Password Manager non erano disponibili lì, e quelle create su iOS finivano in Apple Passwords senza raggiungere le altre piattaforme. Con questo aggiornamento un singolo gestore, quello di Google, copre tutti i principali sistemi operativi da tavolo e da telefono.&lt;/p&gt;
&lt;p&gt;Un dettaglio importante sul tono: non è una beta né una prova per pochi. È una funzione disponibile in modo stabile. Il requisito è iOS o iPadOS 17 o successivi; su iOS 16 le passkey continuano a essere salvate nel Portachiavi iCloud.&lt;/p&gt;
&lt;h2&gt;Come si usa, in pratica&lt;/h2&gt;
&lt;p&gt;Su un iPhone o iPad aggiornato ad almeno iOS 17, la passkey di Google Password Manager si usa impostando Chrome come fornitore di riempimento automatico nelle impostazioni del sistema. Da quel momento le passkey salvate nel gestore di Google diventano disponibili nelle app e nei browser del dispositivo, non solo dentro Chrome.&lt;/p&gt;
&lt;p&gt;L&apos;accesso a queste passkey è protetto da un PIN di Google Password Manager. Su un dispositivo nuovo serve quel PIN, oppure il metodo di sblocco di un dispositivo Android già collegato, per ripristinare le passkey. Conviene configurare per tempo &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;questi elementi di recupero&lt;/a&gt;, perché sono l&apos;unico modo per riottenere le proprie passkey.&lt;/p&gt;
&lt;h2&gt;Cosa tenere a mente&lt;/h2&gt;
&lt;p&gt;Qualche precisazione, per non leggere l&apos;annuncio come più ampio di quello che è.&lt;/p&gt;
&lt;p&gt;La sincronizzazione tra piattaforme di cui si parla qui riguarda un fornitore preciso, Google Password Manager, e passa da Chrome. Su iPhone occorre impostare Chrome come fornitore di riempimento automatico; le passkey di Google non si fondono con quelle di &lt;a href=&quot;/blog/passkey-portabili-credential-exchange&quot;&gt;Apple Passwords&lt;/a&gt;. Chi preferisce restare nell&apos;ecosistema Apple continua a usare Apple Passwords, che a sua volta sincronizza tra i dispositivi Apple. Il cambiamento è che oggi esiste almeno un gestore che attraversa tutti i sistemi principali, iOS compreso.&lt;/p&gt;
&lt;p&gt;Le passkey di Google Password Manager sono cifrate end-to-end: sono leggibili solo sul dispositivo dell&apos;utente e nemmeno Google può accedervi. È una garanzia sulla riservatezza, ma ha un rovescio: se si perdono sia il PIN sia i dispositivi collegati, il recupero diventa difficile. Per questo i metodi di ripristino vanno impostati quando tutto funziona, non quando serve.&lt;/p&gt;
&lt;p&gt;Vale infine ricordare che una passkey non cancella le altre. Un sito può permettere di registrare più passkey, una per gestore o per dispositivo, e spesso conviene averne più di una come alternativa. E la password, dove è ancora offerta, resta lo strato da abbandonare per ultimo, non da buttare via il primo giorno.&lt;/p&gt;
&lt;p&gt;In sintesi, la novità non è la passkey in sé, che c&apos;era già, ma il fatto che ora un gestore la porti in modo uniforme su tutti i sistemi operativi diffusi. È il tipo di dettaglio poco appariscente che decide se una tecnologia di sicurezza resta di nicchia o diventa qualcosa che si usa senza pensarci.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi portare le passkey nella tua applicazione?&quot; text=&quot;Sviluppiamo e integriamo l&apos;autenticazione WebAuthn/FIDO2 nelle applicazioni Laravel e Vue che realizziamo, dal login alla gestione degli account.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/passkeys-gpm-ios&quot;&gt;Passkeys on Google Password Manager are now available on iOS (Chrome for Developers)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/passkeys-gpm-desktop&quot;&gt;Chrome to sync passkeys on Google Password Manager between desktop and Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fidoalliance.org/passkeys/&quot;&gt;FIDO Alliance: Passkeys&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>HTTP Concealed (RFC 9729): l&apos;autenticazione che nasconde persino l&apos;esistenza di una risorsa</title><link>https://initd.it/blog/http-concealed-auth</link><guid isPermaLink="true">https://initd.it/blog/http-concealed-auth</guid><description>La RFC 9729 definisce uno schema di autenticazione HTTP che non rivela nemmeno se una risorsa protetta esiste: cos&apos;è, che problema risolve e a cosa serve.</description><pubDate>Tue, 11 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La maggior parte dei sistemi di accesso a un sito ha un difetto poco discusso: si vedono. Anche quando non si conosce la password, spesso è facile capire che dietro un certo indirizzo c&apos;è qualcosa da proteggere. A febbraio 2025 l&apos;IETF, l&apos;organismo che cura gli standard tecnici di Internet, ha pubblicato la RFC 9729 e ha definito un nuovo schema di autenticazione HTTP pensato proprio per evitare questo: si chiama &quot;Concealed&quot;, cioè nascosto.&lt;/p&gt;
&lt;h2&gt;Il problema: le porte chiuse che si notano lo stesso&lt;/h2&gt;
&lt;p&gt;Quando un browser chiede una pagina e il server richiede un accesso, di solito lo dice apertamente. Il caso classico è la risposta con codice &lt;code&gt;401 Unauthorized&lt;/code&gt; e l&apos;intestazione &lt;code&gt;WWW-Authenticate&lt;/code&gt;, con cui il server annuncia: &quot;qui serve autenticarsi&quot;. È un comportamento utile e corretto nella stragrande maggioranza dei siti, ma ha una conseguenza: chiunque provi quell&apos;indirizzo capisce che lì c&apos;è una risorsa protetta.&lt;/p&gt;
&lt;p&gt;Gli autori della RFC usano un termine preciso per questo: gli schemi di autenticazione tradizionali sono &lt;em&gt;probeable&lt;/em&gt;, cioè &quot;sondabili&quot;. Un client non autorizzato può mandare richieste a caso e osservare le risposte per dedurre dove il server tiene qualcosa sotto chiave. Per un sito pubblico non è un problema. Lo diventa quando l&apos;obiettivo è che certi servizi restino invisibili a chi non ne conosce già l&apos;esistenza: un pannello riservato, un endpoint di gestione, una risorsa destinata a un gruppo ristretto.&lt;/p&gt;
&lt;p&gt;Il punto delicato è che, per un attaccante, sapere che una cosa esiste è già metà del lavoro. Uno scanner automatico che passa in rassegna migliaia di indirizzi si nutre esattamente di queste differenze nelle risposte, lo stesso tipo di traffico di fondo descritto a proposito degli &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;attacchi brute force&lt;/a&gt;. Se il server tratta la porta chiusa in modo diverso da una porta che non c&apos;è, quella differenza è un indizio.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è lo schema &quot;Concealed&quot;&lt;/h2&gt;
&lt;p&gt;La RFC 9729 definisce un nuovo schema crittografico di autenticazione per HTTP che ha una proprietà in più: è &lt;em&gt;non-probeable&lt;/em&gt;, non sondabile. In pratica, un osservatore esterno non riesce a distinguere un server che richiede questo tipo di autenticazione da uno che non ne fa nulla.&lt;/p&gt;
&lt;p&gt;Il meccanismo si basa sulla crittografia asimmetrica. Vale la pena spiegare il termine: ogni utente autorizzato possiede una coppia di chiavi, una privata (tenuta segreta) e una pubblica (condivisa in anticipo con il server). Il server conserva un elenco che associa a ogni identificativo di chiave la relativa chiave pubblica. Chi vuole autenticarsi dimostra di possedere la chiave privata firmando un dato concordato; il server verifica quella firma con la chiave pubblica che ha in archivio. Non viaggia mai nessuna password.&lt;/p&gt;
&lt;p&gt;Un aspetto pratico da tenere presente: le chiavi vanno distribuite prima, per un&apos;altra via. Lo schema dà per scontato che il server sappia già quali chiavi accettare. Non è pensato per iscriversi a un sito qualsiasi, ma per far entrare chi è stato messo nella lista in anticipo.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;I tuoi endpoint riservati si vedono anche da chi non ha le chiavi giuste?&quot; text=&quot;Controlliamo come risponde la tua infrastruttura a chi prova ad accedere senza autorizzazione.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Come fa a nascondere l&apos;esistenza della risorsa&lt;/h2&gt;
&lt;p&gt;Il trucco sta in come viene generato il dato da firmare. Negli schemi crittografici classici, per evitare che una firma vecchia venga riutilizzata, è il server a mandare al client un numero usa-e-getta (un &lt;em&gt;nonce&lt;/em&gt;) da inserire nella firma. Ma proprio quel messaggio del server è il segnale che tradisce: annunciando il nonce, il server sta dicendo &quot;qui c&apos;è un&apos;autenticazione&quot;.&lt;/p&gt;
&lt;p&gt;La RFC 9729 elimina quel passaggio. Il dato fresco da firmare non arriva dal server: il client lo ricava dalla connessione TLS già in corso, quella cifratura che protegge il traffico dei siti in &lt;code&gt;https&lt;/code&gt;, la stessa base su cui poggia anche la riservatezza aggiuntiva dell&apos;&lt;a href=&quot;/blog/tls-encrypted-client-hello&quot;&gt;Encrypted Client Hello&lt;/a&gt;. TLS mette a disposizione una funzione, il &lt;em&gt;keying material exporter&lt;/em&gt;, che permette a client e server di derivare in modo indipendente un valore segreto legato a quella specifica connessione. Con un&apos;etichetta dedicata - &lt;code&gt;EXPORTER-HTTP-Concealed-Authentication&lt;/code&gt; - il client ottiene questo valore, lo firma con la propria chiave privata e lo invia. Il server, dalla sua parte, può ricalcolare lo stesso valore e verificare.&lt;/p&gt;
&lt;p&gt;Il risultato è che il client parla per primo, senza bisogno di alcun invito. E qui sta la parte importante per la riservatezza: un server che vuole restare davvero invisibile deve rispondere in modo identico sia quando la risorsa non esiste, sia quando esiste ma l&apos;autenticazione fallisce. In pratica risponde &lt;code&gt;404 Not Found&lt;/code&gt; in entrambi i casi. Chi non ha la chiave giusta non riesce a distinguere &quot;non c&apos;è nulla&quot; da &quot;c&apos;è qualcosa che non ti riguarda&quot;.&lt;/p&gt;
&lt;h2&gt;Come funziona, in concreto&lt;/h2&gt;
&lt;p&gt;L&apos;autenticazione viaggia nell&apos;intestazione &lt;code&gt;Authorization&lt;/code&gt; (o &lt;code&gt;Proxy-Authorization&lt;/code&gt; verso un proxy), con lo schema &lt;code&gt;Concealed&lt;/code&gt; e alcuni parametri. Senza scendere nel dettaglio crittografico, i cinque campi previsti dalla specifica sono:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;k&lt;/code&gt;&lt;/strong&gt; - l&apos;identificativo della chiave che il client vuole usare;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;a&lt;/code&gt;&lt;/strong&gt; - la chiave pubblica con cui il server verifica la firma;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;s&lt;/code&gt;&lt;/strong&gt; - lo schema di firma impiegato, scelto dal registro standard di TLS;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;p&lt;/code&gt;&lt;/strong&gt; - la &lt;em&gt;prova&lt;/em&gt; (la firma vera e propria) che attesta il possesso della chiave privata;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;v&lt;/code&gt;&lt;/strong&gt; - un valore di &lt;em&gt;verifica&lt;/em&gt; legato all&apos;output esportato da TLS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una condizione tecnica è necessaria: serve TLS nella versione 1.3, oppure la 1.2 con l&apos;estensione &lt;em&gt;extended master secret&lt;/em&gt;. Il motivo è che la firma deve restare ancorata a quella singola connessione. Lo schema è compatibile con HTTP/2, HTTP/3 e con il trasporto QUIC.&lt;/p&gt;
&lt;h2&gt;A cosa serve davvero&lt;/h2&gt;
&lt;p&gt;Il caso d&apos;uso principale è tenere fuori radar i servizi che non devono essere scoperti per caso. Un &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;endpoint di amministrazione&lt;/a&gt;, un&apos;interfaccia di gestione, un&apos;API interna: con lo schema Concealed, chi non possiede una chiave valida non ha modo di capire nemmeno che quell&apos;indirizzo faccia qualcosa. È una forma di difesa in profondità: non sostituisce le altre protezioni, ma riduce la superficie che uno scanner automatico riesce a mappare.&lt;/p&gt;
&lt;p&gt;C&apos;è anche un beneficio sul fronte del tracciamento. La specifica nota che le chiavi legano l&apos;utente a una singola origine (un singolo sito), ma sono costruite per non permettere di correlare le richieste tra siti diversi. In altre parole, la stessa persona non diventa riconoscibile spostandosi da un dominio all&apos;altro.&lt;/p&gt;
&lt;h2&gt;Cosa tenere d&apos;occhio&lt;/h2&gt;
&lt;p&gt;Come ogni strumento, ha i suoi limiti dichiarati apertamente nella RFC.&lt;/p&gt;
&lt;p&gt;La firma è legata alla connessione, non alla singola richiesta. Questo apre a un rischio di riuso: se l&apos;intestazione con la prova trapelasse - per esempio a causa di codice che gira nella stessa sessione del browser - potrebbe essere sfruttata su altre richieste della stessa connessione. Per questo la RFC è netta su un punto: le chiavi usate qui non devono essere riutilizzate in altri protocolli.&lt;/p&gt;
&lt;p&gt;C&apos;è poi la freschezza. Il valore firmato dipende dall&apos;età della connessione TLS; un server che vuole imporre una prova più recente può forzare l&apos;apertura di una nuova connessione. E c&apos;è l&apos;attenzione ai &lt;em&gt;canali laterali temporali&lt;/em&gt;: se il server impiegasse tempi diversi a rispondere nei due casi - risorsa assente contro autenticazione fallita - quella differenza di millisecondi rischierebbe di svelare ciò che si voleva nascondere. Ottenere risposte davvero indistinguibili richiede cura anche su questo.&lt;/p&gt;
&lt;h2&gt;A che punto è&lt;/h2&gt;
&lt;p&gt;RFC 9729 non è una bozza: è un documento pubblicato, sulla via degli standard IETF con il livello di &lt;em&gt;Proposed Standard&lt;/em&gt; (Standard Proposto). È il primo gradino stabile del percorso: una specifica matura e rivista pubblicamente, non ancora al livello finale di &quot;Internet Standard&quot;, lo stesso stadio raggiunto di recente anche dall&apos;&lt;a href=&quot;/blog/http-deprecation-header&quot;&gt;header HTTP che segnala le API deprecate&lt;/a&gt;. Prima di arrivarci si chiamava &lt;code&gt;draft-ietf-httpbis-unprompted-auth&lt;/code&gt; ed è stata elaborata nel gruppo di lavoro httpbis dell&apos;IETF.&lt;/p&gt;
&lt;p&gt;Gli autori sono David Schinazi (Google), David M. Oliver (Guardian Project) e Jonathan Hoyland (Cloudflare). In concreto, il supporto lato browser e lato server è ancora agli inizi e va verificato caso per caso: la specifica è solida, la diffusione negli strumenti reali è ciò che nei prossimi tempi dirà quanto lo schema entrerà nell&apos;uso comune. Resta comunque un&apos;idea interessante, perché sposta l&apos;obiettivo dell&apos;autenticazione da &quot;impedire l&apos;accesso&quot; a &quot;non far sapere nemmeno che c&apos;è una porta&quot;.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi nascondere davvero i servizi riservati della tua infrastruttura?&quot; text=&quot;Configuriamo autenticazione, TLS e regole del reverse proxy per far sì che pannelli ed endpoint interni restino invisibili a chi non è autorizzato.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/info/rfc9729/&quot;&gt;RFC 9729: The Concealed HTTP Authentication Scheme (RFC Editor)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/rfc9729/&quot;&gt;RFC 9729 - The Concealed HTTP Authentication Scheme (IETF Datatracker)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/draft-ietf-httpbis-unprompted-auth/&quot;&gt;draft-ietf-httpbis-unprompted-auth (IETF httpbis working group)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>SPF, DKIM e DMARC: cosa sono e perché contano per le email</title><link>https://initd.it/blog/spf-dkim-dmarc</link><guid isPermaLink="true">https://initd.it/blog/spf-dkim-dmarc</guid><description>Cosa sono SPF, DKIM e DMARC spiegati in modo semplice: chi può spedire per un dominio, la firma che prova l&apos;integrità e la regola su cosa fare quando i controlli falliscono.</description><pubDate>Tue, 18 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;C&apos;è un dettaglio poco noto della posta elettronica: il mittente di un&apos;email si può falsificare con estrema facilità. Il nome e l&apos;indirizzo che compaiono nel campo &quot;Da&quot; (in inglese &lt;em&gt;From&lt;/em&gt;) sono un po&apos; come il mittente scritto a mano sul retro di una busta: di per sé, nessuno garantisce che siano veri. Su questa debolezza si reggono buona parte dello spam, del &lt;a href=&quot;/blog/passkey-multipiattaforma&quot;&gt;phishing&lt;/a&gt; e dello &lt;em&gt;spoofing&lt;/em&gt;, cioè le email che si spacciano per qualcun altro. SPF, DKIM e DMARC sono i tre strumenti nati per rimettere ordine. Servono a una cosa sola: dimostrare che un messaggio arriva davvero da chi dice di arrivare.&lt;/p&gt;
&lt;h2&gt;Il problema: la posta nasce senza controlli&lt;/h2&gt;
&lt;p&gt;Quando la posta elettronica è stata progettata, la rete era piccola e fatta di macchine che si fidavano l&apos;una dell&apos;altra. Scrivere il proprio nome nel campo mittente bastava, perché non c&apos;era motivo di mentire. Quel modello non prevedeva alcuna verifica dell&apos;identità, ed è rimasto tale: ancora oggi, tecnicamente, chiunque può inviare un&apos;email indicando come mittente un indirizzo che non gli appartiene.&lt;/p&gt;
&lt;p&gt;Le conseguenze sono due, ed è utile tenerle distinte perché i tre strumenti nascono proprio per affrontarle. La prima è la sicurezza: un truffatore può scrivere &quot;da parte&quot; della tua banca o della tua azienda e ingannare chi riceve. La seconda è la &lt;em&gt;deliverability&lt;/em&gt;, cioè la capacità di un&apos;email legittima di arrivare davvero nella casella giusta invece di finire nello spam. I grandi provider filtrano enormi volumi di posta, e un mittente che non riescono a verificare è, per definizione, sospetto.&lt;/p&gt;
&lt;p&gt;SPF, DKIM e DMARC non si escludono a vicenda: lavorano insieme, ciascuno su un pezzo del problema. Vediamoli uno alla volta.&lt;/p&gt;
&lt;h2&gt;SPF: chi può spedire per un dominio&lt;/h2&gt;
&lt;p&gt;SPF sta per &lt;em&gt;Sender Policy Framework&lt;/em&gt; ed è descritto nella RFC 7208. Risponde a una domanda precisa: quali server sono autorizzati a spedire posta per un certo dominio?&lt;/p&gt;
&lt;p&gt;L&apos;idea è semplice. Il proprietario di un dominio pubblica, tra le impostazioni pubbliche del dominio stesso (i cosiddetti record DNS, la &quot;rubrica&quot; che traduce i nomi di Internet), un elenco degli indirizzi dei server autorizzati. Quando arriva un messaggio, il server ricevente legge quell&apos;elenco e controlla se il server che glielo sta consegnando è nella lista. Se c&apos;è, il controllo passa; se non c&apos;è, qualcosa non torna.&lt;/p&gt;
&lt;p&gt;Il paragone è quello di un elenco al banco della posta: &quot;per questa azienda possono spedire solo questi uffici&quot;. Una lettera che parte da un ufficio non autorizzato viene guardata con sospetto.&lt;/p&gt;
&lt;p&gt;In pratica è una singola riga di testo, e un dominio deve averne una sola. Assomiglia a questa:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;example.com.  IN  TXT  &quot;v=spf1 include:_spf.provider.tld -all&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La parte finale, &lt;code&gt;-all&lt;/code&gt;, dice al ricevente come trattare chi non è in lista: rifiutalo. Un&apos;alternativa più morbida, &lt;code&gt;~all&lt;/code&gt;, significa &quot;trattalo come sospetto ma non rifiutarlo del tutto&quot;, ed è comoda nella fase iniziale, quando non si è ancora sicuri di aver elencato tutti i propri mittenti.&lt;/p&gt;
&lt;p&gt;SPF ha un limite importante da conoscere: controlla il &quot;percorso&quot; del messaggio, cioè il server che lo spedisce, non il suo contenuto. È il motivo per cui, da solo, non basta.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Le tue email finiscono nello spam più spesso di quanto dovrebbero?&quot; text=&quot;Controlliamo la configurazione SPF, DKIM e DMARC del tuo dominio e la deliverability della posta aziendale.&quot; button=&quot;Chiedi un controllo →&quot;}&lt;/p&gt;
&lt;h2&gt;DKIM: la firma che prova l&apos;integrità&lt;/h2&gt;
&lt;p&gt;DKIM sta per &lt;em&gt;DomainKeys Identified Mail&lt;/em&gt; ed è descritto nella RFC 6376. Se SPF verifica da dove parte il messaggio, DKIM verifica il messaggio stesso.&lt;/p&gt;
&lt;p&gt;Funziona con la crittografia a chiavi, lo stesso principio delle &lt;a href=&quot;/blog/web-bot-auth&quot;&gt;firme digitali&lt;/a&gt;. Il server che spedisce applica al messaggio una firma calcolata con una chiave &lt;em&gt;privata&lt;/em&gt;, che tiene segreta. Chi riceve recupera la corrispondente chiave &lt;em&gt;pubblica&lt;/em&gt; (di nuovo dai record DNS del dominio) e la usa per verificare la firma. Se il conto torna, due cose sono dimostrate: il messaggio proviene davvero da quel dominio, e non è stato alterato durante il viaggio. Se anche solo una virgola fosse cambiata in transito, la firma non tornerebbe più.&lt;/p&gt;
&lt;p&gt;Il paragone qui è il sigillo di ceralacca su una lettera. Non ti dice solo chi l&apos;ha spedita: se il sigillo è intatto, ti garantisce anche che nessuno ha aperto e modificato la busta lungo la strada.&lt;/p&gt;
&lt;p&gt;La firma viaggia dentro un&apos;intestazione tecnica del messaggio, invisibile all&apos;utente comune, chiamata &lt;code&gt;DKIM-Signature&lt;/code&gt;. Al suo interno due indicazioni contano più delle altre: il dominio che firma (il tag &lt;code&gt;d=&lt;/code&gt;) e il &lt;em&gt;selettore&lt;/em&gt; (il tag &lt;code&gt;s=&lt;/code&gt;), un&apos;etichetta che permette a uno stesso dominio di avere più chiavi attive e di sostituirle senza interruzioni.&lt;/p&gt;
&lt;h2&gt;DMARC: la regola su cosa fare quando i controlli falliscono&lt;/h2&gt;
&lt;p&gt;Restano due lacune. Primo: né SPF né DKIM dicono al ricevente cosa fare quando un controllo fallisce. Secondo, e più sottile: entrambi verificano un dominio &quot;tecnico&quot;, che l&apos;utente non vede, e non garantiscono che coincida con l&apos;indirizzo mostrato nel campo &quot;Da&quot;. Un messaggio potrebbe superare i controlli su un dominio qualsiasi e mostrarne un altro all&apos;utente.&lt;/p&gt;
&lt;p&gt;DMARC colma entrambe le lacune. Sta per &lt;em&gt;Domain-based Message Authentication, Reporting, and Conformance&lt;/em&gt;; dal 2026 il riferimento aggiornato è la RFC 9989, che ha sostituito la storica RFC 7489 e &lt;a href=&quot;/blog/oauth-best-practice-sicurezza&quot;&gt;ha reso DMARC uno standard vero e proprio&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il suo primo compito si chiama &lt;em&gt;allineamento&lt;/em&gt; (in inglese &lt;em&gt;alignment&lt;/em&gt;). DMARC pretende che il dominio verificato da SPF o da DKIM corrisponda a quello che l&apos;utente legge nel campo &quot;Da&quot;. Se un messaggio supera SPF o DKIM ma su un dominio diverso da quello visibile, per DMARC non è allineato. Basta che uno dei due controlli passi e sia allineato perché DMARC sia soddisfatto.&lt;/p&gt;
&lt;p&gt;Il secondo compito è dare l&apos;istruzione. Il proprietario del dominio pubblica una regola, di nuovo come record DNS, che indica cosa fare con i messaggi che non superano l&apos;allineamento. Le tre opzioni previste sono:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;p=none&lt;/code&gt;: non fare nulla di speciale, limitati a osservare. È la fase di monitoraggio.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p=quarantine&lt;/code&gt;: tratta il messaggio come sospetto, di solito recapitandolo nella cartella spam.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p=reject&lt;/code&gt;: rifiuta il messaggio, che non viene proprio consegnato.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il record vive a un indirizzo dedicato e assomiglia a questo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;_dmarc.example.com.  IN  TXT  &quot;v=DMARC1; p=none; rua=mailto:report@example.com&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quella parte &lt;code&gt;rua&lt;/code&gt; introduce la terza funzione, spesso la più utile: i &lt;em&gt;report&lt;/em&gt;. I provider riceventi inviano periodicamente al proprietario del dominio dei resoconti (documenti in formato XML) che elencano chi ha spedito a suo nome e con quale esito. È così che si scopre sia chi abusa del proprio dominio, sia i propri servizi legittimi dimenticati, per esempio un gestionale o una piattaforma di newsletter. Senza questi report si procede alla cieca.&lt;/p&gt;
&lt;h2&gt;Come si incastrano i tre&lt;/h2&gt;
&lt;p&gt;Messi in fila, i tre strumenti coprono aspetti diversi e complementari:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPF&lt;/strong&gt; verifica il percorso: da quale server parte il messaggio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DKIM&lt;/strong&gt; verifica l&apos;integrità: il contenuto è autentico e non è stato manomesso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMARC&lt;/strong&gt; lega i primi due all&apos;indirizzo che l&apos;utente vede davvero e decide cosa fare quando qualcosa non torna, oltre a fornire i report.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nessuno dei tre da solo è sufficiente. SPF senza DMARC non protegge l&apos;indirizzo visibile; DKIM senza DMARC non dice cosa fare in caso di fallimento; DMARC senza SPF né DKIM non ha nulla da controllare. È l&apos;insieme a funzionare.&lt;/p&gt;
&lt;h2&gt;Perché contano oggi&lt;/h2&gt;
&lt;p&gt;Fino a qualche anno fa configurarli era considerato una buona pratica facoltativa. Non lo è più. Dal 2024 Google e Yahoo li richiedono esplicitamente a chi invia grandi volumi di posta: secondo le linee guida ufficiali di Google, chi supera i 5.000 messaggi al giorno verso caselle Gmail deve avere SPF e DKIM configurati e una regola DMARC attiva, anche solo minima (&lt;code&gt;p=none&lt;/code&gt;), con l&apos;indirizzo visibile allineato al dominio di SPF o di DKIM. Senza questi controlli, le email rischiano semplicemente di non arrivare.&lt;/p&gt;
&lt;p&gt;Vale anche per chi invia poca posta. Un dominio senza autenticazione è un dominio che chiunque può usare per truffe a nome di chi lo possiede, ed è anche un dominio che i filtri antispam trattano con più diffidenza. Se il sintomo che vedi è concreto, per esempio &lt;a href=&quot;/blog/email-preventivi-finiscono-in-spam&quot;&gt;i preventivi che finiscono in spam&lt;/a&gt;, molto spesso la causa è esattamente qui.&lt;/p&gt;
&lt;h2&gt;Come si imposta, a grandi linee&lt;/h2&gt;
&lt;p&gt;Tutti e tre si configurano nello stesso posto, i record DNS del dominio, e non richiedono di toccare i server di posta se ci si appoggia a un provider che li supporta. Lo schema generale è questo: si pubblica il record SPF con l&apos;elenco dei mittenti autorizzati, si attiva la firma DKIM e si pubblica la relativa chiave pubblica, infine si pubblica il record DMARC.&lt;/p&gt;
&lt;p&gt;Il passaggio più delicato è proprio DMARC, e l&apos;ordine consigliato è graduale: si parte da &lt;code&gt;p=none&lt;/code&gt;, si leggono i report per capire chi spedisce davvero a proprio nome, si sistemano gli eventuali mittenti legittimi rimasti fuori e solo allora si irrigidisce la regola verso &lt;code&gt;quarantine&lt;/code&gt; e poi &lt;code&gt;reject&lt;/code&gt;. Farlo di colpo rischia di bloccare email legittime che non si sapeva di avere. La logica è semplice: prima si guarda, poi si decide.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;SPF, DKIM e DMARC sono tre risposte a un difetto di nascita della posta elettronica: chiunque può fingersi un altro. SPF dice chi è autorizzato a spedire, DKIM firma il messaggio per dimostrarne l&apos;integrità, DMARC lega i due controlli all&apos;indirizzo visibile e decide cosa fare quando falliscono. Insieme riducono spoofing e phishing e aiutano i messaggi legittimi ad arrivare a destinazione. Non sono più un extra: sono il minimo perché la posta di un dominio sia presa sul serio.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere in sicurezza la posta del tuo dominio?&quot; text=&quot;Configuriamo e monitoriamo SPF, DKIM e DMARC sui domini che gestiamo, dalla prima pubblicazione fino alla policy reject.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc7208.html&quot;&gt;RFC 7208 - Sender Policy Framework (SPF), Version 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc6376.html&quot;&gt;RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9989.html&quot;&gt;RFC 9989 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.google.com/a/answer/81126?hl=en&quot;&gt;Email sender guidelines - Google Workspace Admin Help&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Il NIST sceglie HQC: un secondo algoritmo di cifratura post-quantum di riserva</title><link>https://initd.it/blog/nist-hqc-post-quantum</link><guid isPermaLink="true">https://initd.it/blog/nist-hqc-post-quantum</guid><description>Il NIST ha selezionato HQC come algoritmo post-quantum di riserva per la cifratura, basato su matematica diversa da ML-KEM. Cos&apos;è, che problema affronta e perché avere un&apos;alternativa conta.</description><pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;L&apos;11 marzo 2025 il &lt;strong&gt;NIST&lt;/strong&gt;, l&apos;ente statunitense che definisce molti standard di sicurezza usati in tutto il mondo, ha annunciato la scelta di un nuovo algoritmo di crittografia chiamato &lt;strong&gt;HQC&lt;/strong&gt;. La sigla è ostica, ma la sostanza è semplice: HQC servirà da riserva per proteggere i dati contro una minaccia futura, affiancando un algoritmo già scelto in precedenza. Vale la pena capire cosa vuol dire, contro cosa protegge e perché avere un secondo algoritmo, invece di uno solo, è una decisione sensata.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;Da alcuni anni il NIST porta avanti un lavoro pubblico per selezionare algoritmi di &lt;strong&gt;crittografia post-quantum&lt;/strong&gt;, cioè metodi di cifratura pensati per resistere anche a un tipo di computer che oggi non esiste ancora in forma utilizzabile. Nel 2024 sono stati pubblicati i primi standard di questa nuova famiglia. Ora se ne aggiunge un altro: HQC, scelto come &lt;strong&gt;algoritmo di riserva per la cifratura&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Il punto chiave è proprio la parola &quot;riserva&quot;. HQC non sostituisce nulla. L&apos;algoritmo principale per la cifratura resta &lt;strong&gt;ML-KEM&lt;/strong&gt;, già standardizzato. HQC gli si affianca come seconda opzione, da tenere pronta nel caso in cui il primo dovesse mostrare debolezze in futuro. È il quinto algoritmo che il NIST seleziona in questo percorso, e il secondo dedicato specificamente alla protezione dei dati in transito.&lt;/p&gt;
&lt;h2&gt;Il problema: la minaccia dei computer quantistici&lt;/h2&gt;
&lt;p&gt;Per capire perché serva tutto questo bisogna partire dalla minaccia. Oggi buona parte di ciò che facciamo online è protetto da crittografia: quando nel browser compare il lucchetto, i dati scambiati tra il dispositivo e il sito sono resi illeggibili a chi tentasse di intercettarli. Questa protezione regge perché i computer attuali non hanno la potenza per forzarla in tempi ragionevoli.&lt;/p&gt;
&lt;p&gt;I &lt;strong&gt;computer quantistici&lt;/strong&gt; sono una tecnologia in sviluppo, basata su principi fisici diversi da quelli dei computer tradizionali. In teoria, una macchina di questo tipo abbastanza potente potrebbe un giorno rompere buona parte della crittografia che usiamo adesso. Nessuno sa con certezza se e quando arriverà quel momento: le stime degli esperti vanno da oltre un decennio a diversi decenni.&lt;/p&gt;
&lt;p&gt;C&apos;è però un motivo per non aspettare. Chi intercetta traffico cifrato oggi può archiviarlo e conservarlo, in attesa di poterlo decifrare quando la tecnologia lo permetterà. Questa strategia ha un nome, &quot;&lt;strong&gt;raccogli ora, decifra dopo&lt;/strong&gt;&quot;. Significa che dati destinati a restare sensibili per anni sono già a rischio adesso, anche se la macchina capace di aprirli non esiste ancora. Da qui l&apos;urgenza di adottare per tempo algoritmi resistenti, lo stesso motivo per cui &lt;a href=&quot;/blog/chrome-post-quantum-tls&quot;&gt;Chrome ha iniziato ad abilitare di default lo scambio di chiavi post-quantum&lt;/a&gt; nelle connessioni TLS.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai già cosa succede ai tuoi dati cifrati oggi se un giorno arriverà un computer quantistico?&quot; text=&quot;Verifichiamo la crittografia in uso sulla tua infrastruttura e il margine per adottare algoritmi post-quantum quando saranno pronti.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Cos&apos;è HQC e su cosa si basa&lt;/h2&gt;
&lt;p&gt;HQC sta per &lt;em&gt;Hamming Quasi-Cyclic&lt;/em&gt;. È un &lt;strong&gt;meccanismo di incapsulamento delle chiavi&lt;/strong&gt; (in inglese &lt;em&gt;key encapsulation mechanism&lt;/em&gt;, abbreviato KEM): in parole povere, si occupa del momento iniziale di una connessione sicura, quando due parti devono mettersi d&apos;accordo su una chiave segreta condivisa senza che nessun altro possa scoprirla. Quella chiave serve poi a cifrare tutto il resto della conversazione. È proprio questo passaggio a essere il più esposto alla strategia &quot;raccogli ora, decifra dopo&quot;, ed è quindi il primo da mettere in sicurezza.&lt;/p&gt;
&lt;p&gt;La particolarità di HQC sta nella matematica su cui si fonda. Ogni algoritmo di crittografia moderna si appoggia a un problema matematico che si ritiene molto difficile da risolvere. HQC si basa sui &lt;strong&gt;codici correttori d&apos;errore&lt;/strong&gt;: tecniche nate per individuare e correggere gli errori nei dati quando vengono trasmessi o archiviati, usate da decenni in ambiti come le comunicazioni satellitari, i vecchi CD o i codici QR. Da quel principio si ricava un problema matematico difficile su cui costruire la protezione.&lt;/p&gt;
&lt;p&gt;Qui sta la differenza importante rispetto a ML-KEM, l&apos;algoritmo principale. ML-KEM si basa su un&apos;altra area della matematica, chiamata &lt;strong&gt;reticoli strutturati&lt;/strong&gt; (in inglese &lt;em&gt;structured lattices&lt;/em&gt;). Due algoritmi, due fondamenta matematiche diverse. Non è un dettaglio da poco, come si vede tra poco.&lt;/p&gt;
&lt;h2&gt;Perché avere un&apos;alternativa: la crypto-agility&lt;/h2&gt;
&lt;p&gt;La ragione per cui il NIST ha scelto un secondo algoritmo, e per giunta basato su matematica diversa, è una forma di prudenza. Questi algoritmi sono relativamente recenti. Sono stati studiati a fondo da esperti di tutto il mondo, ma nessuno può escludere del tutto che in futuro venga scoperta una debolezza. La storia della crittografia è piena di metodi ritenuti solidi e poi superati.&lt;/p&gt;
&lt;p&gt;Il rischio più insidioso è quello &lt;strong&gt;sistemico&lt;/strong&gt;. Se tutti gli algoritmi disponibili si basassero sullo stesso principio matematico, una singola scoperta capace di incrinare quel principio metterebbe in crisi l&apos;intero sistema in un colpo solo. Avere un&apos;alternativa costruita su fondamenta indipendenti riduce questo pericolo: se un giorno emergesse un problema con i reticoli su cui poggia ML-KEM, resterebbe pronto HQC, che dei reticoli non fa uso. E viceversa. Il responsabile del progetto post-quantum del NIST ha spiegato la scelta proprio così: serve uno standard di riserva basato su un approccio matematico diverso, nel caso in cui il primo dovesse un giorno rivelarsi vulnerabile.&lt;/p&gt;
&lt;p&gt;Questo modo di ragionare ha un nome: &lt;strong&gt;crypto-agility&lt;/strong&gt;, cioè la capacità di cambiare algoritmo senza dover ricostruire tutto da zero. Un sistema progettato in modo agile può passare da un metodo di cifratura a un altro con relativa facilità, man mano che le circostanze cambiano. Non è una qualità appariscente, ma è ciò che permette di reagire in fretta se qualcosa va storto, invece di restare bloccati con un&apos;unica soluzione.&lt;/p&gt;
&lt;h2&gt;A che punto è: tempi e stato&lt;/h2&gt;
&lt;p&gt;Conviene essere precisi su un punto: la scelta di HQC è l&apos;inizio di un percorso, non la fine. Al momento dell&apos;annuncio non esisteva ancora uno standard pronto all&apos;uso.&lt;/p&gt;
&lt;p&gt;Il NIST ha indicato una tabella di marcia. Una &lt;strong&gt;bozza di standard&lt;/strong&gt; è attesa entro circa un anno dall&apos;annuncio, quindi indicativamente nel 2026. Alla pubblicazione della bozza segue un periodo di commenti pubblici di circa 90 giorni, durante il quale chiunque può segnalare problemi o proporre modifiche. Solo dopo si arriva alla &lt;strong&gt;versione definitiva&lt;/strong&gt;, prevista intorno al 2027. Fino a quel momento HQC non è un algoritmo da mettere in produzione, ma una scelta consolidata di cui è stato annunciato il percorso di standardizzazione.&lt;/p&gt;
&lt;p&gt;Vale la pena aggiungere un dettaglio tecnico onesto: HQC, a parità di sicurezza, tende a richiedere più risorse di calcolo rispetto a ML-KEM. È uno dei motivi per cui resta la seconda opzione e non la prima. Non è pensato per sostituire l&apos;algoritmo principale nell&apos;uso quotidiano, ma per esistere come alternativa affidabile su basi diverse.&lt;/p&gt;
&lt;h2&gt;Cosa cambia in pratica&lt;/h2&gt;
&lt;p&gt;Per la maggior parte delle persone, oggi, non cambia nulla di immediato. Non c&apos;è alcuna azione da compiere e nessun software da aggiornare a mano per via di HQC. La transizione alla crittografia post-quantum è un processo lungo, che avviene soprattutto dietro le quinte, negli aggiornamenti di browser, sistemi operativi e librerie, un processo già misurabile: &lt;a href=&quot;/blog/traffico-web-post-quantum&quot;&gt;una parte crescente del traffico web&lt;/a&gt; passa già da crittografia post-quantum.&lt;/p&gt;
&lt;p&gt;Per chi progetta o gestisce sistemi, invece, c&apos;è un principio da tenere a mente: &lt;strong&gt;non concentrare tutto su un solo algoritmo&lt;/strong&gt;. La lezione di questa notizia è proprio la crypto-agility. Un&apos;infrastruttura pensata per poter cambiare metodo di cifratura in futuro, senza riscrivere mezzo sistema, sarà molto più semplice da adeguare quando gli standard evolveranno, lo stesso principio dietro &lt;a href=&quot;/blog/lets-encrypt-6-giorni-ip&quot;&gt;la scelta di accorciare la vita dei certificati TLS&lt;/a&gt; per limitare i danni quando qualcosa va storto. Non serve correre ad adottare HQC oggi, ma conviene costruire in modo da poterlo fare domani senza traumi.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Il NIST ha scelto HQC come algoritmo di cifratura post-quantum di riserva, da affiancare a ML-KEM. La sua caratteristica principale è la matematica su cui si fonda, i codici correttori d&apos;errore, diversa da quella dell&apos;algoritmo principale. Questa diversità è il punto: avere due fondamenta indipendenti rende il sistema più resistente nel tempo, perché una singola scoperta non potrebbe abbatterle entrambe insieme. Lo standard vero e proprio arriverà nei prossimi anni, con una bozza attesa nel 2026 e la versione definitiva verso il 2027. Nel frattempo, la lezione utile a tutti è semplice: nella sicurezza, avere un piano B costruito su basi diverse non è un lusso, è prudenza.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi un&apos;infrastruttura pronta a cambiare algoritmo di cifratura senza traumi?&quot; text=&quot;Progettiamo e gestiamo l&apos;infrastruttura server dei nostri clienti pensando alla crypto-agility: TLS, certificati e librerie aggiornabili senza riscrivere tutto da capo.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nist.gov/news-events/news/2025/03/nist-selects-hqc-fifth-algorithm-post-quantum-encryption&quot;&gt;NIST Selects HQC as Fifth Algorithm for Post-Quantum Encryption - NIST&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/pubs/fips/203/final&quot;&gt;FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard - NIST&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è un reverse proxy (e perché quasi ogni sito ne usa uno)</title><link>https://initd.it/blog/cos-e-un-reverse-proxy</link><guid isPermaLink="true">https://initd.it/blog/cos-e-un-reverse-proxy</guid><description>Cos&apos;è un reverse proxy spiegato in parole semplici: un intermediario davanti alle applicazioni per TLS, cache, bilanciamento e sicurezza. La differenza con un forward proxy e perché è un mattone comune del web.</description><pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dietro quasi ogni sito che si visita c&apos;è un componente di cui non ci si accorge mai, perché fa bene il suo lavoro proprio restando invisibile: il &lt;strong&gt;reverse proxy&lt;/strong&gt;. Non è il programma che genera le pagine, né il database che conserva i dati. È l&apos;intermediario che sta davanti a tutto il resto e decide chi entra, come e verso quale servizio. Capire cos&apos;è aiuta a leggere l&apos;architettura di un sito senza doverla immaginare come una scatola nera.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è un reverse proxy in parole semplici&lt;/h2&gt;
&lt;p&gt;Un &lt;em&gt;proxy&lt;/em&gt; è, letteralmente, un intermediario: un componente che sta in mezzo a due parti e gira i messaggi dall&apos;una all&apos;altra. Un &lt;strong&gt;reverse proxy&lt;/strong&gt; è un intermediario che sta davanti a uno o più server applicativi. Il visitatore parla con il reverse proxy; il reverse proxy inoltra la richiesta all&apos;applicazione giusta, ne raccoglie la risposta e la restituisce al visitatore. Il client, cioè il browser, non parla mai direttamente con il server che genera davvero la pagina.&lt;/p&gt;
&lt;p&gt;Un&apos;immagine utile è quella del centralino, o della reception di un ufficio. Chi arriva non gira per i corridoi cercando la persona giusta: si rivolge al banco all&apos;ingresso, che smista la richiesta a chi di dovere e riporta indietro la risposta. Il banco è un solo punto di contatto per molti uffici diversi. Il reverse proxy fa la stessa cosa per i servizi web.&lt;/p&gt;
&lt;h2&gt;La differenza con un forward proxy&lt;/h2&gt;
&lt;p&gt;La parola &quot;proxy&quot; da sola crea confusione, perché esistono due tipi opposti. La differenza sta da che lato si trova l&apos;intermediario.&lt;/p&gt;
&lt;p&gt;Un &lt;strong&gt;forward proxy&lt;/strong&gt; sta davanti ai &lt;em&gt;client&lt;/em&gt;. È l&apos;intermediario che una rete aziendale o una &lt;a href=&quot;/blog/cos-e-una-vpn-wireguard&quot;&gt;VPN&lt;/a&gt; mette davanti ai computer degli utenti: quando qualcuno naviga, la richiesta passa prima dal forward proxy, che poi parla con i siti esterni al posto suo. Serve a controllare e filtrare il traffico in uscita e, spesso, a nascondere l&apos;identità di chi naviga.&lt;/p&gt;
&lt;p&gt;Un &lt;strong&gt;reverse proxy&lt;/strong&gt; sta davanti ai &lt;em&gt;server&lt;/em&gt;. È l&apos;intermediario che il gestore di un sito mette davanti alle proprie applicazioni. La documentazione di MDN riassume bene il contrasto: un forward proxy agisce per conto dei client e può nasconderne l&apos;identità, mentre un reverse proxy può nascondere l&apos;identità dei server. Stessa idea di base, lato opposto: uno protegge chi chiede, l&apos;altro protegge chi risponde.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua applicazione è ancora esposta direttamente su internet?&quot; text=&quot;Mettiamo noi un reverse proxy davanti al tuo servizio: configurazione Nginx, certificati TLS e hardening, senza interruzioni.&quot; button=&quot;Chiedi una valutazione gratuita →&quot;}&lt;/p&gt;
&lt;h2&gt;Un solo ingresso per più servizi&lt;/h2&gt;
&lt;p&gt;Il motivo più concreto per cui il reverse proxy è così diffuso è che offre &lt;strong&gt;un solo punto d&apos;ingresso&lt;/strong&gt; per molti servizi. Su internet un sito è raggiungibile su due porte standard: la 80 per HTTP e la 443 per HTTPS. Ma dietro un singolo dominio possono vivere applicazioni diverse: il sito vetrina, l&apos;area clienti, un&apos;API per le app mobili, un pannello di amministrazione.&lt;/p&gt;
&lt;p&gt;Il reverse proxy ascolta su quell&apos;unica porta pubblica e, guardando il nome del dominio o il percorso richiesto, decide a quale applicazione interna girare ogni richiesta. Le applicazioni, dal canto loro, restano in ascolto solo sulla rete locale della macchina, senza essere esposte direttamente a internet. Un esempio essenziale con Nginx, uno dei reverse proxy più usati, rende l&apos;idea:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;server {
    listen 443 ssl;
    server_name sito.example.com;
    # ...certificati TLS...

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Qui il proxy riceve le connessioni cifrate dall&apos;esterno e le inoltra a un&apos;applicazione che gira in locale sulla porta 3000. Il visitatore vede un solo indirizzo; dietro le quinte può esserci un intero insieme di servizi.&lt;/p&gt;
&lt;h2&gt;TLS: la cifratura gestita in un posto solo&lt;/h2&gt;
&lt;p&gt;Oggi il traffico web viaggia cifrato con &lt;strong&gt;TLS&lt;/strong&gt;, il protocollo che sta dietro il lucchetto di HTTPS. Gestire la cifratura richiede certificati, chiavi e configurazione, e non è un lavoro che conviene duplicare in ogni singola applicazione.&lt;/p&gt;
&lt;p&gt;Il reverse proxy risolve il problema con la &lt;strong&gt;terminazione TLS&lt;/strong&gt;: è lui a occuparsi dell&apos;&quot;handshake&quot; cifrato con il browser, a decifrare le richieste in arrivo e a cifrare le risposte in uscita, così che i server dietro di lui non debbano farlo. &lt;a href=&quot;/blog/tls-certificati-47-giorni&quot;&gt;I certificati&lt;/a&gt; stanno in un posto solo, la configurazione della sicurezza si aggiorna in un punto solo, e le applicazioni interne possono parlare in chiaro sulla rete locale, concentrandosi sul loro compito.&lt;/p&gt;
&lt;h2&gt;Cache e compressione: meno lavoro ripetuto&lt;/h2&gt;
&lt;p&gt;Un reverse proxy può anche conservare una copia delle risposte già calcolate. È la &lt;strong&gt;cache&lt;/strong&gt;: se molti utenti chiedono la stessa immagine o la stessa pagina, non serve rigenerarla ogni volta. La prima richiesta paga il costo pieno verso l&apos;applicazione; le successive ricevono la copia già pronta, molto più in fretta e senza affaticare il server d&apos;origine.&lt;/p&gt;
&lt;p&gt;Allo stesso livello agisce la &lt;strong&gt;compressione&lt;/strong&gt;: il proxy può comprimere testi, HTML e dati prima di spedirli, riducendo i byte che viaggiano in rete e quindi &lt;a href=&quot;/blog/ttfb-time-to-first-byte&quot;&gt;i tempi di caricamento&lt;/a&gt;. Sono ottimizzazioni che è comodo mettere una volta sola, davanti a tutto, invece di reimplementarle in ogni applicazione.&lt;/p&gt;
&lt;h2&gt;Bilanciamento del carico&lt;/h2&gt;
&lt;p&gt;Quando un solo server non basta a reggere il traffico, si mettono più copie della stessa applicazione e si distribuiscono le richieste fra loro. Questo compito, il &lt;strong&gt;bilanciamento del carico&lt;/strong&gt; (&lt;em&gt;load balancing&lt;/em&gt;), è uno degli usi classici del reverse proxy.&lt;/p&gt;
&lt;p&gt;Il proxy decide a quale server inoltrare ogni richiesta secondo una regola. Nginx, per esempio, di default usa il &lt;em&gt;round robin&lt;/em&gt;, cioè distribuisce le richieste a turno fra i server disponibili tenendo conto di eventuali pesi; in alternativa può mandare ogni richiesta al server con meno connessioni attive (&lt;em&gt;least connections&lt;/em&gt;) o legare un cliente sempre allo stesso server in base al suo indirizzo (&lt;em&gt;ip hash&lt;/em&gt;). Il vantaggio è doppio: si regge più traffico e, se un server si guasta, gli altri continuano a rispondere.&lt;/p&gt;
&lt;h2&gt;Sicurezza: un filtro davanti all&apos;applicazione&lt;/h2&gt;
&lt;p&gt;Mettere un intermediario davanti ai server ha anche un valore difensivo. Il primo è la &lt;strong&gt;riduzione della superficie esposta&lt;/strong&gt;: le applicazioni non sono raggiungibili direttamente da internet, ma solo attraverso il proxy. Chi vuole attaccarle non ne conosce nemmeno l&apos;indirizzo reale, perché a rispondere è sempre e solo l&apos;intermediario.&lt;/p&gt;
&lt;p&gt;Il secondo è che il reverse proxy diventa il &lt;strong&gt;punto naturale dove concentrare i controlli&lt;/strong&gt;: limitare il numero di richieste per bloccare gli abusi (&lt;em&gt;rate limiting&lt;/em&gt;), &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;filtrare traffico sospetto&lt;/a&gt;, applicare regole di accesso. Farlo in un solo punto, davanti a tutto, è più semplice e più robusto che spargere le stesse difese in ogni applicazione.&lt;/p&gt;
&lt;h2&gt;Nginx e gli altri&lt;/h2&gt;
&lt;p&gt;Nginx è forse l&apos;esempio più citato, ma il reverse proxy è un ruolo, non un prodotto. Lo stesso compito lo svolgono software come HAProxy, Apache, Caddy, Traefik o Envoy, i bilanciatori offerti dai fornitori cloud e, su scala globale, le CDN come quelle di Cloudflare, che sono anch&apos;esse reverse proxy davanti a milioni di siti.&lt;/p&gt;
&lt;p&gt;Vale la pena notare che il pattern non è legato al solo HTTP: un reverse proxy può inoltrare le richieste alle applicazioni anche con altri protocolli, e infatti Nginx supporta, oltre a HTTP, meccanismi come FastCGI, uwsgi, SCGI, memcached e gRPC. Il concetto resta lo stesso a prescindere dallo strumento scelto.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Un reverse proxy è l&apos;intermediario che sta davanti alle applicazioni web e fa da unico punto di contatto verso l&apos;esterno. Da lì gestisce la cifratura TLS, la cache e la compressione, distribuisce il carico fra più server e concentra i controlli di sicurezza, tenendo le applicazioni al riparo dall&apos;esposizione diretta. Non è un componente vistoso e quasi nessun utente sa che c&apos;è, ma è proprio per questo che quasi ogni sito ne usa uno: risolve in un posto solo una serie di problemi che, altrimenti, ogni applicazione dovrebbe affrontare da sé.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere Nginx davanti alla tua infrastruttura?&quot; text=&quot;Progettiamo e gestiamo reverse proxy in produzione da vent&apos;anni: terminazione TLS, cache, bilanciamento del carico e regole di sicurezza tarate sul tuo servizio.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Proxy_servers_and_tunneling&quot;&gt;Proxy servers and tunneling - MDN Web Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/&quot;&gt;NGINX Reverse Proxy - documentazione ufficiale NGINX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/&quot;&gt;HTTP Load Balancing - documentazione ufficiale NGINX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/&quot;&gt;NGINX SSL Termination - documentazione ufficiale NGINX&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Un header HTTP standard per dire che un&apos;API è deprecata (RFC 9745)</title><link>https://initd.it/blog/http-deprecation-header</link><guid isPermaLink="true">https://initd.it/blog/http-deprecation-header</guid><description>L&apos;header HTTP Deprecation diventa uno standard IETF: comunica in modo leggibile dalle macchine che un endpoint verrà dismesso. Cos&apos;è, come funziona, perché conta.</description><pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi mantiene un&apos;API si trova prima o poi a dover ritirare qualcosa: un indirizzo che risponde da anni, un formato di risposta, un&apos;intera versione del servizio. Il problema non è tecnico, è di comunicazione. Come si avvisa chi usa quell&apos;API che sta per sparire, senza sperare che qualcuno legga la mail giusta o la nota giusta nel changelog? A marzo 2025 l&apos;IETF, l&apos;organismo che cura gli standard tecnici di Internet, ha pubblicato la RFC 9745 e ha reso standard un modo semplice per dirlo dentro le risposte stesse: l&apos;intestazione HTTP &lt;code&gt;Deprecation&lt;/code&gt;, uno dei tanti aggiornamenti con cui l&apos;IETF sta ampliando il protocollo, insieme per esempio al nuovo &lt;a href=&quot;/blog/metodo-http-query&quot;&gt;metodo HTTP QUERY&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Il problema: avvisare le macchine, non solo le persone&lt;/h2&gt;
&lt;p&gt;Prima un po&apos; di vocabolario, perché serve. Un&apos;&lt;strong&gt;API&lt;/strong&gt; è l&apos;interfaccia con cui due programmi si parlano via rete. Un &lt;strong&gt;endpoint&lt;/strong&gt; è uno degli indirizzi che quell&apos;API espone. Un&apos;&lt;strong&gt;intestazione&lt;/strong&gt; (in inglese &lt;em&gt;header&lt;/em&gt;) è una riga di informazioni di servizio che accompagna ogni richiesta e ogni risposta HTTP, separata dal contenuto vero e proprio. E &lt;strong&gt;deprecare&lt;/strong&gt; una risorsa significa dichiararla ancora funzionante ma in via di dismissione: si può usare, ma conviene smettere e passare ad altro.&lt;/p&gt;
&lt;p&gt;Fin qui la deprecazione si annuncia quasi sempre a parole: un post sul blog, una voce nella documentazione, un&apos;email agli sviluppatori. Va bene per le persone, ma non per il software. Un programma che chiama un&apos;API mille volte al giorno non legge il blog. Continua a chiamare quell&apos;endpoint finché un giorno smette di rispondere, e a quel punto è un guasto in produzione. Manca un modo perché sia la risposta stessa a dire, in forma leggibile da un computer: &quot;attenzione, questa risorsa è in via di dismissione&quot;.&lt;/p&gt;
&lt;p&gt;È esattamente il vuoto che la RFC 9745 vuole colmare.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è la RFC 9745&lt;/h2&gt;
&lt;p&gt;La RFC 9745 si intitola &lt;em&gt;The Deprecation HTTP Response Header Field&lt;/em&gt; ed è stata pubblicata nel marzo 2025 dall&apos;IETF, con Sanjay Dalal ed Erik Wilde come autori. Definisce una nuova intestazione di risposta, &lt;code&gt;Deprecation&lt;/code&gt;, con cui un server segnala a chi usa una risorsa che quella risorsa &lt;strong&gt;sarà o è già stata deprecata&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Il meccanismo è volutamente minimale. Il server aggiunge una riga alle proprie risposte HTTP e chi le riceve - un client, uno strumento di monitoraggio, una libreria - può leggerla in automatico. Nessun cambiamento al contenuto, nessuna rottura: solo un segnale in più.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Le tue API comunicano già quando un endpoint sta per sparire?&quot; text=&quot;Controlliamo il ciclo di vita delle API che mantieni e cosa succede quando serve ritirare un endpoint.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Come si scrive: una data, e basta&lt;/h2&gt;
&lt;p&gt;Il valore dell&apos;intestazione è una data, espressa nel formato dei &lt;em&gt;Structured Fields&lt;/em&gt; di HTTP (RFC 9651), lo standard che definisce come scrivere valori strutturati dentro le intestazioni in modo che tutti li interpretino allo stesso modo. In pratica la data si scrive come un timestamp Unix - cioè il numero di secondi trascorsi dal 1° gennaio 1970 - preceduto da una chiocciola. Un esempio dalla specifica:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Deprecation: @1688169599
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quel numero corrisponde al 30 giugno 2023 alle 23:59:59 UTC. La cosa interessante è che la data può stare &lt;strong&gt;nel futuro o nel passato&lt;/strong&gt;. Nel futuro significa &quot;questa risorsa verrà deprecata a partire da quel momento&quot;: un preavviso. Nel passato significa &quot;è già deprecata da allora&quot;. Con una sola riga il server comunica sia l&apos;intenzione sia il fatto compiuto.&lt;/p&gt;
&lt;h2&gt;Deprecato non vuol dire spento&lt;/h2&gt;
&lt;p&gt;Qui va chiarito un equivoco frequente, e la RFC è esplicita. Deprecare &lt;strong&gt;non cambia il comportamento&lt;/strong&gt; della risorsa. Un endpoint deprecato continua a funzionare come prima: risponde, restituisce gli stessi dati, non cambia significato. La presenza dell&apos;intestazione non è un errore e non impone di smettere di usarlo da subito. È un avviso, non una porta chiusa.&lt;/p&gt;
&lt;p&gt;Deprecazione e dismissione sono due momenti distinti. La deprecazione dice &quot;inizia a spostarti&quot;; la dismissione (in inglese &lt;em&gt;sunset&lt;/em&gt;) è il giorno in cui la risorsa smetterà davvero di rispondere. Tra i due c&apos;è, o dovrebbe esserci, il tempo per migrare.&lt;/p&gt;
&lt;h2&gt;Il compagno naturale: l&apos;intestazione Sunset&lt;/h2&gt;
&lt;p&gt;Proprio per indicare quel giorno esiste un&apos;altra intestazione standard, &lt;code&gt;Sunset&lt;/code&gt;, definita dalla RFC 8594. Mentre &lt;code&gt;Deprecation&lt;/code&gt; dice &quot;da quando è deprecata&quot;, &lt;code&gt;Sunset&lt;/code&gt; dice &quot;da quando smetterà di funzionare&quot;. Le due si usano bene insieme, e la RFC 9745 mette un vincolo di buon senso: la data di &lt;code&gt;Sunset&lt;/code&gt; &lt;strong&gt;non può essere precedente&lt;/strong&gt; a quella di &lt;code&gt;Deprecation&lt;/code&gt;. Non avrebbe senso spegnere una risorsa prima ancora di averla dichiarata in dismissione.&lt;/p&gt;
&lt;h2&gt;Dire cosa usare al posto suo: la relazione &quot;deprecation&quot;&lt;/h2&gt;
&lt;p&gt;Una data, da sola, non dice tutto. Non spiega perché la risorsa viene ritirata, cosa usare in alternativa, entro quando completare il passaggio. Per questo la RFC 9745 definisce anche una &lt;em&gt;link relation&lt;/em&gt; chiamata &lt;code&gt;deprecation&lt;/code&gt;: un modo standard per collegare, sempre via intestazione, una pagina di documentazione dove sta il resto della storia. L&apos;esempio della specifica è questo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Deprecation: @1688169599
Link: &amp;lt;https://developer.example.com/deprecation&amp;gt;;
      rel=&quot;deprecation&quot;; type=&quot;text/html&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;L&apos;intestazione &lt;code&gt;Link&lt;/code&gt; punta a un indirizzo, e &lt;code&gt;rel=&quot;deprecation&quot;&lt;/code&gt; dichiara che quel collegamento parla proprio della dismissione. Lì il fornitore dell&apos;API può descrivere la politica di deprecazione, la tempistica e - quando esiste - la risorsa che prende il posto di quella vecchia, con una guida alla migrazione. La documentazione può anche fissare una regola chiara, per esempio che ogni deprecazione verrà annunciata con un certo numero di giorni di anticipo rispetto alla data di spegnimento.&lt;/p&gt;
&lt;h2&gt;Perché conta nel ciclo di vita di un&apos;API&lt;/h2&gt;
&lt;p&gt;Il valore di tutto questo non è l&apos;intestazione in sé, ma il fatto che finalmente un avviso di dismissione sia &lt;strong&gt;leggibile dalle macchine&lt;/strong&gt;, lo stesso principio dietro ad altri segnali HTTP pensati per i client automatici, come quello che permette di &lt;a href=&quot;/blog/pay-per-crawl&quot;&gt;far pagare i crawler AI&lt;/a&gt;. Cambia diverse cose pratiche.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un client può accorgersi da solo di star chiamando un endpoint deprecato e scriverlo nei propri log, invece di scoprirlo il giorno in cui l&apos;endpoint muore.&lt;/li&gt;
&lt;li&gt;Uno strumento di monitoraggio può controllare le risposte e far scattare un avviso quando compare l&apos;intestazione, dando al team il tempo di reagire.&lt;/li&gt;
&lt;li&gt;Chi consuma decine di API diverse può misurare quanto &quot;debito&quot; ha accumulato, cioè quante dipendenze stanno per sparire, senza inseguire changelog scritti in modi diversi da ogni fornitore.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In una parola, la gestione del ciclo di vita di un&apos;API smette di dipendere dal fatto che una persona abbia letto la comunicazione giusta al momento giusto. Il segnale viaggia insieme ai dati.&lt;/p&gt;
&lt;h2&gt;A che punto è&lt;/h2&gt;
&lt;p&gt;Un chiarimento sullo stato, perché è facile fraintenderlo. La RFC 9745 è uno &lt;strong&gt;Standard Proposto&lt;/strong&gt; (&lt;em&gt;Proposed Standard&lt;/em&gt;): non è una bozza né un documento sperimentale, ma il primo gradino stabile della via degli standard IETF, lo stesso livello raggiunto anche dallo schema di autenticazione &lt;a href=&quot;/blog/http-concealed-auth&quot;&gt;HTTP Concealed&lt;/a&gt;. Significa che il testo è maturo, rivisto pubblicamente e citabile, e che l&apos;intestazione &lt;code&gt;Deprecation&lt;/code&gt; è stata registrata in modo permanente nel registro ufficiale dei nomi di campo HTTP. Da qui in avanti chi progetta API può adottarla sapendo che il significato è fissato una volta per tutte.&lt;/p&gt;
&lt;p&gt;Resta il lavoro di adozione, che dipende dai singoli fornitori: il valore dell&apos;intestazione si vede solo quando i server la inviano e i client la leggono. Ma la parte difficile - mettersi d&apos;accordo su un formato unico e sensato - è fatta. Per chi mantiene API, aggiungere un&apos;intestazione &lt;code&gt;Deprecation&lt;/code&gt; (e possibilmente una &lt;code&gt;Sunset&lt;/code&gt; e un link alla documentazione) è un gesto piccolo che rende una dismissione molto meno traumatica per chi sta dall&apos;altra parte.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi gestire la dismissione delle tue API senza sorprese per chi le usa?&quot; text=&quot;Progettiamo e manuteniamo API Laravel con header di deprecazione, documentazione di migrazione e piani di dismissione concordati con chi le consuma.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9745.html&quot;&gt;RFC 9745: The Deprecation HTTP Response Header Field (RFC Editor)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/rfc9745/&quot;&gt;RFC 9745 - The Deprecation HTTP Response Header Field (IETF Datatracker)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc8594.html&quot;&gt;RFC 8594: The Sunset HTTP Header Field (RFC Editor)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Attacchi brute force: cosa sono e come ci si difende</title><link>https://initd.it/blog/attacchi-brute-force-fail2ban</link><guid isPermaLink="true">https://initd.it/blog/attacchi-brute-force-fail2ban</guid><description>Cos&apos;è un attacco brute force, perché ogni servizio esposto ne riceve e le difese di fondo: password e chiavi robuste, autenticazione a più fattori, rate limiting e strumenti come fail2ban.</description><pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ogni servizio raggiungibile da internet - la casella di posta, il pannello di amministrazione di un sito, &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;l&apos;accesso remoto a un server&lt;/a&gt; - prima o poi riceve tentativi di indovinare le sue credenziali. Spesso non c&apos;è nulla di personale: gran parte di quel traffico è automatico e indiscriminato. Capire cos&apos;è un attacco &lt;strong&gt;brute force&lt;/strong&gt;, perché è così comune e con quali difese di fondo si affronta aiuta a proteggere qualsiasi sistema esposto senza affidarsi a soluzioni magiche.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è un attacco brute force&lt;/h2&gt;
&lt;p&gt;Un attacco brute force (in italiano &quot;forza bruta&quot;) è il tentativo di indovinare una credenziale - una password, un codice, una chiave - provando molte combinazioni una dopo l&apos;altra finché una funziona. Non c&apos;è astuzia: c&apos;è volume. La documentazione di OWASP, l&apos;organizzazione no profit che si occupa di sicurezza delle applicazioni web, lo descrive come il configurare valori predefiniti, inviarli al server e analizzare la risposta per capire se hanno funzionato. Il nome dice tutto: si tira a indovinare, ma tante volte e in fretta.&lt;/p&gt;
&lt;p&gt;Il motore di questi attacchi è l&apos;automazione. Un essere umano che prova password a mano è lentissimo; un programma ne prova migliaia al secondo. Da qui la distinzione classica tra due approcci. Nel brute force &quot;puro&quot; si generano le combinazioni una a una (tutte le sequenze di lettere, numeri e simboli): esaustivo ma lento, tanto più lento quanto più la password è lunga. Nell&apos;&lt;strong&gt;attacco a dizionario&lt;/strong&gt; si parte invece da liste di parole e password comuni, spesso raccolte da vecchie violazioni di dati: meno esaustivo, ma molto più veloce a colpire chi usa credenziali deboli o già note.&lt;/p&gt;
&lt;h2&gt;Perché ogni servizio esposto ne riceve&lt;/h2&gt;
&lt;p&gt;La domanda più naturale è: perché proprio il mio server? Nella maggior parte dei casi la risposta è che non è &quot;il tuo&quot;. Le reti di computer compromessi (le cosiddette &lt;em&gt;botnet&lt;/em&gt;) scandagliano interi intervalli di indirizzi IP alla ricerca di porte aperte e pagine di login. Trovato un bersaglio, provano credenziali predefinite, password comuni e coppie utente/password trapelate da altri servizi. È traffico di fondo, come il rumore in una città: chiunque abbia una porta SSH, un server di posta o un modulo di accesso ne riceve, spesso migliaia di tentativi al giorno. E quando la porta esposta ha una falla nota, come è successo con &lt;a href=&quot;/blog/vulnerabilita-mikrotik-routeros-ssh&quot;&gt;SSH sui router MikroTik&lt;/a&gt;, non serve nemmeno indovinare.&lt;/p&gt;
&lt;p&gt;Questo cambia il modo di ragionare. Non serve aspettarsi di essere un bersaglio &quot;interessante&quot;: basta essere raggiungibili. E poiché gli attacchi sono automatici ed economici, non si fermano da soli. La difesa non consiste nel diventare invisibili, ma nel rendere ogni tentativo abbastanza costoso e poco redditizio da non portare a nulla.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo server riceve già questi tentativi, senza che tu lo sappia?&quot; text=&quot;Controlliamo i log di accesso e verifichiamo se le difese di base, come fail2ban e MFA, sono già attive.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Non un solo attacco, ma una famiglia&lt;/h2&gt;
&lt;p&gt;Sotto l&apos;etichetta &quot;brute force&quot; rientrano varianti che conviene distinguere, perché richiedono difese leggermente diverse.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Attacco a dizionario.&lt;/strong&gt; Come detto, usa liste di parole e password frequenti invece di provare ogni combinazione. È efficace contro password prevedibili come &lt;code&gt;password123&lt;/code&gt; o il nome dell&apos;azienda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Credential stuffing.&lt;/strong&gt; OWASP lo classifica come un sottoinsieme del brute force. Qui l&apos;attaccante non indovina: riusa coppie utente/password rubate da una violazione per provarle su altri servizi. Funziona per un motivo semplice e diffuso: molte persone riutilizzano la stessa password ovunque. Se è trapelata da un sito, viene provata su tutti gli altri.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password spraying.&lt;/strong&gt; L&apos;attaccante prova poche password molto comuni contro moltissimi account diversi, invece di accanirsi su uno solo. Serve a evitare i blocchi che scattano dopo troppi tentativi falliti sullo stesso utente.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Le difese di fondo&lt;/h2&gt;
&lt;p&gt;Nessuna singola misura basta. La protezione efficace è fatta di più livelli che si sommano, in modo che il fallimento di uno non lasci la porta spalancata.&lt;/p&gt;
&lt;h3&gt;Password e chiavi robuste&lt;/h3&gt;
&lt;p&gt;La prima barriera è rendere la credenziale difficile da indovinare. Una password lunga aumenta enormemente il numero di combinazioni possibili, e quindi il tempo necessario a provarle tutte. Le linee guida di OWASP indicano una lunghezza minima di 15 caratteri quando non c&apos;è un secondo fattore, e suggeriscono di consentire password fino ad almeno 64 caratteri per non penalizzare le &lt;em&gt;passphrase&lt;/em&gt;, cioè frasi facili da ricordare e difficili da indovinare. Altrettanto importante è non riutilizzare la stessa password su più servizi: un gestore di password aiuta a tenerne una diversa e casuale per ciascuno, anche se dove il servizio lo consente il modo più efficace resta sostituirla del tutto con una &lt;a href=&quot;/blog/passkey-multipiattaforma&quot;&gt;passkey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sui server c&apos;è un&apos;opzione ancora migliore delle password: le &lt;strong&gt;chiavi crittografiche&lt;/strong&gt;. Una chiave SSH è enormemente più lunga e casuale di qualsiasi password memorizzabile, al punto da rendere il brute force praticamente inutile. Sostituire l&apos;accesso con password con l&apos;accesso a chiave elimina alla radice gran parte del problema, una misura che si può rafforzare ulteriormente restringendo l&apos;ingresso dietro una &lt;a href=&quot;/blog/cos-e-una-vpn-wireguard&quot;&gt;VPN come WireGuard&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Autenticazione a più fattori (MFA)&lt;/h3&gt;
&lt;p&gt;L&apos;autenticazione a più fattori (in inglese &lt;em&gt;multi-factor authentication&lt;/em&gt;, MFA) richiede, oltre alla password, un secondo elemento indipendente: un codice temporaneo da un&apos;app, una chiave fisica, un&apos;impronta. L&apos;idea è che indovinare o rubare la sola password non basti più. Secondo OWASP, la MFA è di gran lunga la migliore difesa contro la maggior parte degli attacchi legati alle password, brute force compreso; la stessa fonte riporta una stima di Microsoft secondo cui avrebbe fermato il 99,9% delle compromissioni di account. È la misura che, da sola, sposta di più l&apos;ago della bilancia: anche se un attaccante azzecca la password, senza il secondo fattore non entra.&lt;/p&gt;
&lt;h3&gt;Rallentare e limitare i tentativi&lt;/h3&gt;
&lt;p&gt;Se un attacco vive di volume e velocità, una difesa naturale è togliergli entrambi. Il &lt;strong&gt;rate limiting&lt;/strong&gt; (limitazione della frequenza) mette un tetto al numero di tentativi accettati in un dato intervallo di tempo. Piccole pause dopo ogni errore, un blocco temporaneo dopo N fallimenti (&lt;em&gt;account lockout&lt;/em&gt;), o un CAPTCHA - quei test facili per un umano e fastidiosi per un programma - rendono l&apos;attacco lento e poco pratico.&lt;/p&gt;
&lt;p&gt;Qui però serve onestà: OWASP avverte che il blocco puro dell&apos;account può ritorcersi contro di noi. Un attaccante può inondare di tentativi sbagliati l&apos;account di un utente legittimo apposta per bloccarlo fuori, trasformando la difesa in un piccolo attacco di negazione del servizio. Per questo si preferiscono spesso approcci più mirati, legati al dispositivo o all&apos;indirizzo di provenienza, che colpiscono l&apos;origine dell&apos;abuso invece dell&apos;utente.&lt;/p&gt;
&lt;h3&gt;Bloccare gli IP che insistono&lt;/h3&gt;
&lt;p&gt;L&apos;ultimo livello è reagire a chi continua a provare. Esistono strumenti che osservano i log del sistema, da conservare nel rispetto dei &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;principi di minimizzazione previsti dal GDPR&lt;/a&gt;, e bloccano automaticamente gli indirizzi troppo insistenti. L&apos;esempio più noto sul mondo Linux è &lt;strong&gt;fail2ban&lt;/strong&gt;, software libero che, come recita la sua descrizione ufficiale, analizza i file di log (per esempio &lt;code&gt;/var/log/auth.log&lt;/code&gt;), individua gli indirizzi IP responsabili di troppi tentativi di accesso falliti e li banna aggiornando le regole del firewall di sistema per rifiutarne le nuove connessioni per un tempo configurabile.&lt;/p&gt;
&lt;p&gt;In pratica: se un indirizzo sbaglia le credenziali troppe volte in poco tempo, gli viene chiusa la porta per minuti o ore. Non impedisce il primo tentativo, ma spegne il rumore di fondo e alza il costo dell&apos;insistenza. È un buon esempio di difesa reattiva, complementare - non alternativa - alle precedenti.&lt;/p&gt;
&lt;h2&gt;I limiti da tenere presenti&lt;/h2&gt;
&lt;p&gt;Bloccare gli IP non è una soluzione definitiva, ed è giusto saperlo. Un attacco distribuito su migliaia di indirizzi diversi, ciascuno con pochi tentativi, può restare sotto le soglie e non far scattare alcun blocco; lo stesso vale per gli attacchi &quot;lenti&quot;, spalmati nel tempo. E soprattutto, nessun blocco basato sui tentativi falliti aiuta contro il credential stuffing che indovina la password giusta al primo colpo: lì l&apos;unica vera rete di sicurezza è il secondo fattore.&lt;/p&gt;
&lt;p&gt;Questo è il punto centrale: non esiste un singolo strumento che risolva il problema. È la somma dei livelli - credenziali robuste, MFA, limiti sui tentativi e blocco degli abusi - a rendere un attacco brute force poco più che rumore.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Un attacco brute force è il tentativo automatico di indovinare le credenziali provandone molte in fretta. Ogni servizio esposto ne riceve, perché gli attacchi sono automatici, economici e indiscriminati. Le difese di fondo sono poche e si rafforzano a vicenda: password lunghe e non riutilizzate (meglio ancora chiavi crittografiche sui server), autenticazione a più fattori, limiti alla frequenza dei tentativi e strumenti come fail2ban che bloccano gli indirizzi insistenti. Nessuna di queste, da sola, è sufficiente. Messe insieme, trasformano un problema serio in un fastidio gestibile.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere in sicurezza gli accessi ai tuoi server?&quot; text=&quot;Configuriamo fail2ban, autenticazione a più fattori e accesso a chiave sui server Linux che gestiamo, con il monitoraggio degli accessi sospetti incluso nella reperibilità.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://owasp.org/www-community/attacks/Brute_force_attack&quot;&gt;Brute force attack - OWASP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://owasp.org/www-community/controls/Blocking_Brute_Force_Attacks&quot;&gt;Blocking Brute Force Attacks - OWASP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html&quot;&gt;Authentication Cheat Sheet - OWASP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://owasp.org/www-community/attacks/Credential_stuffing&quot;&gt;Credential stuffing - OWASP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/fail2ban/fail2ban&quot;&gt;Fail2Ban - repository ufficiale del progetto&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Certificati TLS verso i 47 giorni: l&apos;automazione diventa obbligatoria</title><link>https://initd.it/blog/tls-certificati-47-giorni</link><guid isPermaLink="true">https://initd.it/blog/tls-certificati-47-giorni</guid><description>Il CA/Browser Forum ha approvato la riduzione progressiva della validità dei certificati TLS fino a 47 giorni entro il 2029. Cosa cambia, perché, e perché il rinnovo manuale non regge più.</description><pubDate>Tue, 15 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ogni sito raggiungibile via &lt;code&gt;https&lt;/code&gt; usa un certificato: un piccolo documento digitale che dimostra che quel sito è davvero chi dice di essere, e che permette al browser di cifrare la connessione dopo un breve scambio iniziale, l&apos;&lt;a href=&quot;/blog/tls-encrypted-client-hello&quot;&gt;handshake TLS&lt;/a&gt;. Fin qui niente di nuovo. La novità è che questi certificati dureranno molto meno di adesso. Un gruppo che decide le regole per l&apos;intero settore ha approvato un calendario che porterà la durata massima da poco più di un anno a soli 47 giorni entro il 2029. Per chi visita i siti non cambia nulla. Per chi li gestisce cambia parecchio, perché rinnovare un certificato a mano ogni mese e mezzo non è sostenibile: l&apos;automazione smette di essere un lusso e diventa un requisito.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;L&apos;organismo che stabilisce queste regole si chiama &lt;strong&gt;CA/Browser Forum&lt;/strong&gt;. È l&apos;insieme in cui si incontrano due categorie: le &lt;strong&gt;Autorità di Certificazione&lt;/strong&gt; (in inglese &lt;em&gt;Certificate Authority&lt;/em&gt;, o CA), cioè le aziende che emettono i certificati, e i produttori di browser come Apple, Google, Microsoft e Mozilla, che decidono quali certificati considerare validi. Quando questi soggetti si accordano su una regola, quella regola vale nella pratica per tutto il web pubblico.&lt;/p&gt;
&lt;p&gt;L&apos;11 aprile 2025 il Forum ha approvato una proposta identificata dalla sigla &lt;strong&gt;SC-081v3&lt;/strong&gt;. La proposta era stata presentata da un rappresentante di Apple e sostenuta da Sectigo, Google e Mozilla. Non si tratta quindi di una bozza o di un&apos;idea in discussione: è una decisione presa, con un calendario preciso e vincolante. Il voto è stato favorevole senza contrari: nessuna delle Autorità di Certificazione e nessun produttore di browser si è opposto.&lt;/p&gt;
&lt;h2&gt;Il calendario dei tagli&lt;/h2&gt;
&lt;p&gt;La riduzione non avviene di colpo. È spalmata su tre tappe, con date precise. Oggi un certificato TLS può durare al massimo 398 giorni, cioè poco più di un anno. Da qui si scende così:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dal 15 marzo 2026&lt;/strong&gt;: durata massima &lt;strong&gt;200 giorni&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dal 15 marzo 2027&lt;/strong&gt;: durata massima &lt;strong&gt;100 giorni&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dal 15 marzo 2029&lt;/strong&gt;: durata massima &lt;strong&gt;47 giorni&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le date indicano quando entra in vigore ciascun limite per i certificati emessi da quel giorno in poi. Un certificato ottenuto prima di una scadenza resta valido per il periodo con cui è stato emesso; il nuovo limite si applica alle emissioni successive. In pratica la stretta si sente in modo graduale, ma la direzione è una sola e non torna indietro.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai già quanti certificati TLS gestisci e quando scadono?&quot; text=&quot;Facciamo un inventario rapido e verifichiamo cosa succederebbe con un rinnovo ogni 47 giorni.&quot; button=&quot;Chiedi un inventario →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché accorciare la validità&lt;/h2&gt;
&lt;p&gt;La domanda naturale è: perché complicarsi la vita? Il motivo principale è la sicurezza, e ruota attorno a un concetto semplice, la &lt;strong&gt;finestra di compromissione&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Un certificato è legato a una &lt;strong&gt;chiave privata&lt;/strong&gt;, un file segreto che deve restare sul server e non uscire mai. Se quella chiave viene rubata - per un attacco, una configurazione sbagliata, un backup finito nel posto sbagliato - chi la possiede può impersonare il sito fino a quando il certificato resta valido. Più lungo è il certificato, più lunga è la finestra in cui un furto passa inosservato e fa danni.&lt;/p&gt;
&lt;p&gt;In teoria esiste un rimedio: la &lt;strong&gt;revoca&lt;/strong&gt;, cioè la possibilità di dichiarare un certificato non più valido prima della sua scadenza. Nella pratica la revoca funziona male. I browser non sempre controllano se un certificato è stato revocato, e i meccanismi pensati per avvisarli sono lenti o poco affidabili. Accorciare la durata è un modo più solido di ottenere lo stesso effetto: un certificato che dura poco limita da solo i danni, perché scade prima che il problema possa protrarsi. È meno elegante della revoca, ma funziona davvero.&lt;/p&gt;
&lt;p&gt;C&apos;è anche una ragione più ampia. Certificati che durano un anno tendono a essere trattati come oggetti da configurare una volta e dimenticare. Ridurne la vita costringe tutti ad automatizzare la gestione, e un processo automatico e frequente è più sicuro di uno manuale e raro: sbaglia meno, non dipende dalla memoria di una persona, non lascia certificati scaduti per dimenticanza.&lt;/p&gt;
&lt;h2&gt;Non cambia solo la scadenza&lt;/h2&gt;
&lt;p&gt;La stessa decisione tocca un secondo aspetto meno visibile ma altrettanto importante: la &lt;strong&gt;riconvalida del dominio&lt;/strong&gt;. Prima di emettere un certificato per un sito, l&apos;Autorità di Certificazione deve verificare che chi lo chiede controlli davvero quel dominio. Questo controllo si chiama &lt;strong&gt;Domain Control Validation&lt;/strong&gt; (DCV). Una volta fatto, oggi il risultato può essere riutilizzato per un lungo periodo: si dimostra il controllo del dominio una volta e lo si dà per buono per mesi.&lt;/p&gt;
&lt;p&gt;Anche questo periodo di riutilizzo viene accorciato con lo stesso calendario, fino ad arrivare a soli &lt;strong&gt;10 giorni dal 15 marzo 2029&lt;/strong&gt;. Significa che non basterà rinnovare spesso il certificato: bisognerà anche riprovare spesso di controllare il dominio. I metodi lenti e manuali - come la verifica via e-mail o il caricamento a mano di un file su un server - diventano impraticabili a questa frequenza. Serve un sistema che dimostri il controllo del dominio da solo, in automatico, tutte le volte che serve.&lt;/p&gt;
&lt;h2&gt;Il rinnovo manuale non regge più&lt;/h2&gt;
&lt;p&gt;Mettiamo insieme i pezzi. Con la durata massima a 47 giorni, ogni certificato va sostituito prima che scada, quindi in pratica ogni mese circa. Per chi gestisce un sito solo è un fastidio; per chi ne gestisce decine o centinaia diventa impossibile da seguire a mano. Basta un rinnovo dimenticato perché un sito mostri ai visitatori l&apos;avviso di certificato scaduto - quello schermo rosso che spinge la gente a scappare - con danni immediati a immagine e vendite.&lt;/p&gt;
&lt;p&gt;La conclusione a cui punta esplicitamente questa decisione è che la gestione dei certificati va &lt;strong&gt;automatizzata&lt;/strong&gt;. Non come miglioria opzionale, ma come unico modo per stare dietro alla frequenza richiesta.&lt;/p&gt;
&lt;h2&gt;L&apos;automazione si chiama ACME&lt;/h2&gt;
&lt;p&gt;Lo strumento per farlo esiste già ed è diffuso. Si chiama &lt;strong&gt;ACME&lt;/strong&gt; (&lt;em&gt;Automatic Certificate Management Environment&lt;/em&gt;), ed è un protocollo standard - cioè un linguaggio comune - con cui un server può chiedere, ottenere e rinnovare certificati da solo, dialogando con l&apos;Autorità di Certificazione senza intervento umano. È lo stesso meccanismo reso popolare da &lt;a href=&quot;/blog/lets-encrypt-6-giorni-ip&quot;&gt;&lt;strong&gt;Let&apos;s Encrypt&lt;/strong&gt;&lt;/a&gt;, l&apos;autorità gratuita che da anni emette certificati validi 90 giorni proprio perché progettati per essere rinnovati in automatico.&lt;/p&gt;
&lt;p&gt;Il funzionamento, in parole semplici, è questo: un programma installato sul server dimostra all&apos;Autorità di controllare il dominio, riceve il certificato, lo installa e programma da sé il rinnovo prima della scadenza. Tutto senza che nessuno debba ricordarsi nulla. Il client più noto si chiama &lt;code&gt;certbot&lt;/code&gt;, ma quasi tutti i pannelli di controllo, i bilanciatori di carico e i &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;servizi cloud moderni&lt;/a&gt; integrano già il supporto ad ACME. Chi lo usa già non deve fare quasi nulla: la riduzione della durata è, per lui, un dettaglio che il sistema gestisce da solo.&lt;/p&gt;
&lt;p&gt;Un esempio della logica, con &lt;code&gt;certbot&lt;/code&gt;, per ottenere e configurare un certificato su un server web:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;certbot --nginx -d esempio.it -d www.esempio.it
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Da quel momento il rinnovo avviene in automatico, di solito tramite &lt;a href=&quot;/blog/systemd-timer-alternativa-cron&quot;&gt;un&apos;attività pianificata&lt;/a&gt; che gira più volte al giorno e rinnova i certificati quando si avvicinano alla scadenza.&lt;/p&gt;
&lt;h2&gt;Cosa conviene fare adesso&lt;/h2&gt;
&lt;p&gt;Non c&apos;è nessuna urgenza per la giornata di oggi, ma la direzione è chiara e vale la pena portarsi avanti con calma invece di rincorrere le scadenze.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fare un inventario.&lt;/strong&gt; Sapere quanti certificati si gestiscono, dove sono e quando scadono. Spesso ce ne sono più di quanti si ricordi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificare cosa è già automatico e cosa no.&lt;/strong&gt; I certificati ancora rinnovati a mano sono quelli che daranno problemi per primi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adottare ACME dove manca.&lt;/strong&gt; Passare i rinnovi manuali a un client automatico è l&apos;investimento che ripaga di più, perché elimina la parte fragile del processo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non aspettare il 2029.&lt;/strong&gt; Chi si automatizza ora attraversa le tre tappe senza accorgersene. Chi rimanda si troverà a gestire a mano una frequenza che a mano non si gestisce.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;La validità dei certificati TLS scende per gradi fino a 47 giorni entro il 2029, insieme al periodo di riutilizzo delle verifiche del dominio, che arriva a 10 giorni. È una decisione presa, non una proposta. Il motivo è ridurre il tempo in cui un certificato compromesso può fare danni, in un mondo in cui la revoca funziona male. Per chi naviga non cambia nulla. Per chi gestisce siti il messaggio è netto: il rinnovo manuale ha una data di scadenza, e l&apos;automazione tramite ACME è la strada già pronta per non pensarci più.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Pronto a togliere il rinnovo dei certificati dalla lista delle cose da ricordare?&quot; text=&quot;Configuriamo ACME e il rinnovo automatico su server, reverse proxy e bilanciatori di carico, così i certificati si rinnovano da soli anche con scadenze di poche settimane.&quot; button=&quot;Automatizziamo →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/&quot;&gt;Ballot SC081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods - CA/Browser Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.digicert.com/blog/tls-certificate-lifetimes-will-officially-reduce-to-47-days&quot;&gt;TLS Certificate Lifetimes Will Officially Reduce to 47 Days - DigiCert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Chrome non eliminerà i cookie di terze parti: cosa cambia</title><link>https://initd.it/blog/chrome-cookie-terze-parti</link><guid isPermaLink="true">https://initd.it/blog/chrome-cookie-terze-parti</guid><description>Google rinuncia al piano &apos;senza cookie&apos; e ridimensiona la Privacy Sandbox. Cosa sono i cookie di terze parti e cosa cambia per analytics, pubblicità e login tra siti diversi.</description><pubDate>Thu, 24 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Per anni una scadenza ha guidato i piani di mezzo web: Chrome, il browser più usato al mondo, avrebbe smesso di accettare i cookie di terze parti, quelli che permettono di seguire una persona da un sito all&apos;altro. Interi settori - pubblicità online, misurazione del traffico, sistemi di login condivisi - si erano messi a riprogettare i propri strumenti per un mondo &quot;senza cookie&quot;. Il 22 aprile 2025 Google ha annunciato che quel mondo non arriverà: Chrome manterrà l&apos;approccio attuale ai cookie di terze parti e non introdurrà nemmeno la nuova richiesta di scelta che aveva promesso l&apos;anno prima. Per chi naviga non cambia quasi nulla. Per chi lavora con analytics, pubblicità e autenticazione tra siti diversi, cambia il quadro su cui aveva lavorato a lungo.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;L&apos;annuncio è arrivato sul blog della &lt;strong&gt;Privacy Sandbox&lt;/strong&gt;, il progetto con cui Google stava provando a sostituire i cookie di terze parti. In sintesi: Google mantiene l&apos;attuale sistema di scelta sui cookie di terze parti in Chrome e &lt;strong&gt;non introdurrà una nuova richiesta dedicata&lt;/strong&gt; che chieda all&apos;utente se accettarli o rifiutarli. Le persone continuano a gestire questa preferenza dove già possono farlo oggi, cioè nelle impostazioni di privacy e sicurezza del browser.&lt;/p&gt;
&lt;p&gt;Nello stesso testo Google aggiunge due cose. La prima: le tecnologie della Privacy Sandbox &quot;potrebbero avere un ruolo diverso&quot; da quello previsto, e nei mesi successivi verrà condivisa una road map aggiornata. La seconda: le protezioni contro il tracciamento nella navigazione in incognito proseguono, con l&apos;arrivo previsto nel terzo trimestre del 2025 della cosiddetta IP Protection, una funzione che nasconde l&apos;indirizzo di rete in quella modalità. È un annuncio di direzione, non una specifica tecnica: i dettagli del nuovo piano erano, al momento, ancora da definire.&lt;/p&gt;
&lt;h2&gt;Cosa sono i cookie di terze parti&lt;/h2&gt;
&lt;p&gt;Un &lt;strong&gt;cookie&lt;/strong&gt; è un piccolo file che un sito chiede al browser di salvare, per ricordarsi qualcosa tra una visita e l&apos;altra: che hai fatto il login, cosa hai messo nel carrello, la lingua che preferisci. Fin qui è comodo e innocuo.&lt;/p&gt;
&lt;p&gt;La differenza sta in chi imposta il cookie. Un cookie di &lt;strong&gt;prima parte&lt;/strong&gt; appartiene al sito che stai visitando, quello scritto nella barra degli indirizzi. Un cookie di &lt;strong&gt;terze parti&lt;/strong&gt;, invece, viene impostato da un dominio diverso: tipicamente una rete pubblicitaria, uno strumento di statistiche, un pulsante social o un contenuto incorporato (per esempio un video). Siccome lo stesso fornitore è presente su tanti siti diversi, quel cookie gli permette di riconoscere la stessa persona mentre si sposta da un sito all&apos;altro. È questo il meccanismo che rende possibile il &lt;strong&gt;tracciamento tra siti&lt;/strong&gt;: costruire un profilo di ciò che uno guarda in giro per il web, soprattutto a fini pubblicitari.&lt;/p&gt;
&lt;p&gt;Vale la pena essere onesti: i cookie di terze parti non servono solo alla pubblicità invadente. Sostengono anche usi legittimi, come misurare se una campagna ha portato una vendita, evitare di mostrare lo stesso annuncio cento volte, e far funzionare alcuni sistemi di &lt;strong&gt;login unico tra siti diversi&lt;/strong&gt; (in inglese &lt;em&gt;single sign-on&lt;/em&gt;, o SSO), spesso costruiti sopra protocolli come &lt;a href=&quot;/blog/oauth-best-practice-sicurezza&quot;&gt;OAuth&lt;/a&gt;, dove ci si autentica una volta e si resta riconosciuti su più domini collegati. Per questo la loro rimozione toccava tanti equilibri insieme.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo sito dipende ancora da cookie di terze parti per login o misurazioni?&quot; text=&quot;Mappiamo le dipendenze reali (SSO, pixel pubblicitari, analytics) e verifichiamo cosa succede se un browser li blocca.&quot; button=&quot;Chiedi una mappatura →&quot;}&lt;/p&gt;
&lt;h2&gt;Come ci siamo arrivati&lt;/h2&gt;
&lt;p&gt;La storia parte nel 2019, quando Google presenta la Privacy Sandbox con un obiettivo dichiarato: togliere da Chrome i cookie di terze parti e rimpiazzarli con nuove tecnologie pensate per fare le stesse cose (pubblicità mirata, misurazione) senza seguire il singolo utente. L&apos;idea era buona sulla carta, ma il traguardo è stato rinviato più volte, perché costruire alternative accettabili per tutti - inserzionisti, editori, autorità - si è rivelato difficile.&lt;/p&gt;
&lt;p&gt;C&apos;è anche un fronte regolatorio. Nel 2022 Google ha avviato un impegno formale con le autorità britanniche per la concorrenza (la CMA) e per la protezione dei dati (l&apos;ICO). Il timore era che, rimuovendo i cookie di terze parti, Google finisse per favorire il proprio sistema pubblicitario a scapito dei concorrenti più piccoli, che di quei cookie vivono. Un cambiamento venduto come tutela della privacy rischiava così di diventare anche una questione di concorrenza.&lt;/p&gt;
&lt;p&gt;La svolta vera arriva il 22 luglio 2024: invece di eliminare i cookie di terze parti, Google annuncia che introdurrà &quot;una nuova esperienza in Chrome&quot; con cui l&apos;utente sceglie una volta come comportarsi, potendo poi cambiare idea quando vuole. Nove mesi dopo, il 22 aprile 2025, anche quella nuova richiesta viene accantonata: si tiene ciò che c&apos;è già nelle impostazioni, senza aggiungere prompt. In pratica, in poco più di un anno il piano è passato da &quot;rimuoviamo i cookie&quot; a &quot;lasciamo scegliere l&apos;utente&quot; a &quot;non cambiamo l&apos;esperienza attuale&quot;.&lt;/p&gt;
&lt;h2&gt;Perché la giravolta conta&lt;/h2&gt;
&lt;p&gt;Per chi visita i siti, ripetiamolo, l&apos;effetto pratico è minimo. Il peso ricade su chi costruisce e gestisce servizi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pubblicità online.&lt;/strong&gt; Molti operatori avevano investito tempo e denaro per testare le nuove interfacce della Privacy Sandbox - con nomi come Topics, Protected Audience e Attribution Reporting - pensate per rimpiazzare i cookie. Ora che la scadenza che spingeva quella migrazione non c&apos;è più, e che Google stesso dice che quelle tecnologie &quot;potrebbero avere un ruolo diverso&quot;, quegli investimenti restano in un limbo. Non sono buttati, ma non hanno più una data che li rende obbligatori.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Misurazione e analytics.&lt;/strong&gt; Attribuire una conversione seguendo l&apos;utente tra domini diversi, per ora, resta possibile con i cookie di terze parti dove il browser li accetta. Chi aveva già iniziato a spostarsi verso metodi che non dipendono da quei cookie non ha lavorato invano, ma la pressione a completare in fretta il passaggio si allenta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Login tra siti diversi.&lt;/strong&gt; Alcuni flussi di autenticazione condivisa tra domini si appoggiano ai cookie di terze parti. La loro rimozione li avrebbe rotti, costringendo a riscriverli. La decisione di Chrome toglie, almeno per ora, questa urgenza.&lt;/p&gt;
&lt;h2&gt;Non vuol dire &quot;tutto come prima&quot;&lt;/h2&gt;
&lt;p&gt;Sarebbe un errore leggere l&apos;annuncio come un ritorno al passato senza pensieri. Alcuni fatti restano.&lt;/p&gt;
&lt;p&gt;Chrome è il browser più diffuso, ma non è l&apos;unico. &lt;strong&gt;Safari&lt;/strong&gt; di Apple e &lt;strong&gt;Firefox&lt;/strong&gt; di Mozilla bloccano già da tempo i cookie di terze parti in modo predefinito. Significa che una fetta importante del traffico gira comunque senza di essi: appoggiare tutto sui cookie di terze parti resta una scelta fragile, indipendentemente da cosa fa Chrome.&lt;/p&gt;
&lt;p&gt;Restano anche le protezioni di Chrome nella navigazione in incognito, con la IP Protection attesa per il terzo trimestre 2025, dopo che il browser aveva già esteso ad altri ambiti, come la &lt;a href=&quot;/blog/chrome-post-quantum-tls&quot;&gt;cifratura post-quantum delle connessioni&lt;/a&gt;, il proprio lavoro sulla sicurezza. E resta l&apos;incertezza sul futuro della Privacy Sandbox stessa, il cui ruolo verrà ridefinito.&lt;/p&gt;
&lt;p&gt;Infine, un punto che i browser non toccano: le regole sulla privacy. In Europa il &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;GDPR&lt;/a&gt; e la normativa ePrivacy richiedono comunque il consenso dell&apos;utente per i cookie di tracciamento. Che Chrome li accetti o no, chi gestisce un sito deve chiedere il consenso quando previsto. La decisione tecnica di Google non cancella gli obblighi di legge.&lt;/p&gt;
&lt;h2&gt;Cosa conviene fare adesso&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Non smontare quello che si è già fatto.&lt;/strong&gt; La direzione generale del web resta verso meno cookie di terze parti, non di più. Il lavoro fatto per ridurne la dipendenza mantiene valore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Puntare sui dati di prima parte.&lt;/strong&gt; Le informazioni raccolte direttamente dal proprio sito, con il consenso dell&apos;utente, sono più solide e meno esposte alle scelte dei browser.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mappare le dipendenze.&lt;/strong&gt; Sapere quali funzioni - SSO, contenuti incorporati, misurazione - dipendono davvero dai cookie di terze parti, e avere un piano B per ciascuna.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seguire la nuova road map.&lt;/strong&gt; Google ha promesso un aggiornamento nei mesi successivi: vale la pena leggerlo prima di prendere decisioni definitive.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Google ha deciso di non rimuovere i cookie di terze parti da Chrome e di non introdurre nemmeno la richiesta di scelta annunciata nel 2024: resta ciò che c&apos;è già nelle impostazioni. È un cambio di rotta rispetto ad anni di piani &quot;senza cookie&quot;, e ridimensiona il ruolo della Privacy Sandbox, il cui futuro sarà chiarito da una road map successiva. Per chi naviga non cambia quasi nulla. Per chi lavora con pubblicità, analytics e login tra siti, il messaggio è di non correre, ma nemmeno di illudersi: altri browser bloccano già quei cookie e le regole sul consenso restano in piedi. La strada verso meno tracciamento è solo diventata meno ripida, non è sparita.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere il sito al riparo dalle prossime mosse dei browser?&quot; text=&quot;Configuriamo consenso cookie conforme al GDPR, dati di prima parte e alternative alle integrazioni che dipendono da cookie di terze parti, per sistemi Laravel e e-commerce.&quot; button=&quot;Parliamo del tuo sito →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://privacysandbox.google.com/blog/privacy-sandbox-next-steps&quot;&gt;Next steps for Privacy Sandbox and tracking protections in Chrome - Privacy Sandbox (Google)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://privacysandbox.google.com/blog/privacy-sandbox-update&quot;&gt;A new path for Privacy Sandbox on the web - Privacy Sandbox (Google)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è l&apos;Infrastructure as Code e perché conviene</title><link>https://initd.it/blog/cos-e-infrastructure-as-code</link><guid isPermaLink="true">https://initd.it/blog/cos-e-infrastructure-as-code</guid><description>Cos&apos;è l&apos;Infrastructure as Code: descrivere l&apos;infrastruttura in file di testo versionati invece di configurarla a mano, i vantaggi concreti, i concetti di stato desiderato e idempotenza, e il ruolo di Terraform.</description><pubDate>Thu, 15 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi gestisce anche solo un paio di server conosce bene la scena. Si entra nel pannello di controllo di un &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;provider cloud&lt;/a&gt;, si clicca per creare una macchina virtuale, si aprono a mano le porte del firewall, si collega un dominio. Funziona. Poi, sei mesi dopo, serve rifare tutto uguale in un secondo ambiente, oppure ricostruire in fretta qualcosa che si è rotto, e nessuno ricorda più l&apos;esatta sequenza di clic. È esattamente il problema che l&apos;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt; prova a risolvere.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è l&apos;Infrastructure as Code&lt;/h2&gt;
&lt;p&gt;L&apos;Infrastructure as Code - spesso abbreviato in &lt;strong&gt;IaC&lt;/strong&gt;, letteralmente &quot;infrastruttura come codice&quot; - è l&apos;idea di descrivere l&apos;infrastruttura in file di testo, invece di configurarla a mano cliccando in un pannello. Al posto di ricordare quali pulsanti premere, si scrive un documento che dice come deve essere fatto tutto: quante macchine devono esistere, che dimensione hanno, quali reti le collegano, quali regole di firewall si applicano, quali record DNS puntano dove.&lt;/p&gt;
&lt;p&gt;Un programma legge quei file e si occupa di rendere l&apos;infrastruttura reale identica a quanto descritto. Se nel testo c&apos;è scritto che devono esistere due server e ce n&apos;è solo uno, il programma crea il secondo. Se qualcosa non corrisponde più, lo riporta com&apos;è scritto.&lt;/p&gt;
&lt;p&gt;Il punto chiave è che questi file sono testo normale, come il codice di un programma. E come il codice, possono essere conservati in un sistema di &lt;strong&gt;versionamento&lt;/strong&gt; come Git - uno strumento che tiene traccia di ogni modifica, di chi l&apos;ha fatta e quando. L&apos;infrastruttura smette di vivere solo dentro la console del provider e nella testa di chi l&apos;ha creata, e diventa qualcosa che si può leggere, condividere e ricostruire.&lt;/p&gt;
&lt;h2&gt;Perché conviene&lt;/h2&gt;
&lt;p&gt;I vantaggi non sono astratti. Riguardano problemi che si presentano ogni volta che un&apos;infrastruttura cresce o cambia mani.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ripetibilità.&lt;/strong&gt; Lo stesso file produce sempre lo stesso risultato. Serve un ambiente di collaudo identico a quello di produzione? Si riusa la stessa descrizione. Un&apos;intera configurazione va ricreata dopo un guasto? Si riparte dal testo, non dalla memoria. Ciò che era una procedura manuale lunga e soggetta a dimenticanze diventa un&apos;operazione ripetibile.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Revisione.&lt;/strong&gt; Quando l&apos;infrastruttura è testo, ogni modifica si può leggere e discutere prima di applicarla, ed eventualmente far verificare a una macchina come avviene &lt;a href=&quot;/blog/cos-e-una-pipeline-ci-cd&quot;&gt;in una pipeline CI/CD&lt;/a&gt;, esattamente come si fa con il codice di un&apos;applicazione. Si vede in anticipo cosa cambierà, un collega può controllare, e resta uno storico di chi ha cambiato cosa. Un&apos;apertura di porta sul firewall smette di essere un clic invisibile e diventa una riga che qualcuno ha scritto, con una data e un motivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Meno errori umani.&lt;/strong&gt; Configurare tante cose a mano, magari in fretta, è il terreno ideale per le sviste: una regola dimenticata su un server, un parametro diverso tra due ambienti che dovrebbero essere identici. Descrivere tutto in un file e lasciare che sia una macchina ad applicarlo elimina buona parte di questi scarti. La stessa descrizione produce la stessa infrastruttura, senza variazioni introdotte dalla stanchezza o dalla fretta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Documentazione implicita.&lt;/strong&gt; Nella maggior parte dei progetti la documentazione dell&apos;infrastruttura o non esiste, o è vecchia. Con l&apos;IaC il problema si attenua alla radice: i file &lt;em&gt;sono&lt;/em&gt; la descrizione aggiornata di ciò che gira davvero, perché sono la stessa cosa che l&apos;ha creato. Non c&apos;è un documento separato che rischia di divergere dalla realtà: la realtà è il documento.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua infrastruttura esiste solo nei clic di qualcuno?&quot; text=&quot;Verifichiamo insieme cosa succede se quella persona è in ferie o cambia lavoro.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Stato desiderato e idempotenza&lt;/h2&gt;
&lt;p&gt;Due concetti aiutano a capire come funziona un sistema IaC, e ricorrono in quasi tutti gli strumenti.&lt;/p&gt;
&lt;p&gt;Il primo è lo &lt;strong&gt;stato desiderato&lt;/strong&gt;. Con l&apos;approccio manuale si danno comandi imperativi, uno dopo l&apos;altro: &quot;crea questa macchina&quot;, &quot;poi apri questa porta&quot;, &quot;poi installa questo&quot;. Con l&apos;IaC si fa il contrario: si descrive il risultato finale che si vuole ottenere - lo stato desiderato - e si lascia allo strumento il compito di capire quali passi servono per arrivarci. Non si dice &lt;em&gt;come&lt;/em&gt; fare, si dice &lt;em&gt;cosa&lt;/em&gt; deve esistere. Questo modo di ragionare si chiama dichiarativo, e ha un vantaggio pratico: la descrizione resta valida sia che si parta da zero, sia che quasi tutto esista già.&lt;/p&gt;
&lt;p&gt;Il secondo è l&apos;&lt;strong&gt;idempotenza&lt;/strong&gt;. È un termine tecnico per un&apos;idea semplice: applicare la stessa descrizione una volta o dieci volte porta allo stesso risultato. Se l&apos;infrastruttura corrisponde già a quanto scritto, applicare di nuovo non crea doppioni e non cambia nulla. Questa proprietà è ciò che rende gli strumenti IaC sicuri da rieseguire: non c&apos;è il rischio che lanciare due volte lo stesso file raddoppi i server. Lo strumento confronta ciò che c&apos;è con ciò che è descritto, e agisce solo sulla differenza.&lt;/p&gt;
&lt;h2&gt;Come si presenta in pratica&lt;/h2&gt;
&lt;p&gt;Un file IaC assomiglia a una serie di descrizioni ordinate. Ecco, a titolo di esempio, come si potrebbe descrivere una singola macchina virtuale con Terraform, uno degli strumenti più diffusi:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;resource &quot;aws_instance&quot; &quot;web&quot; {
  instance_type = &quot;t3.micro&quot;

  tags = {
    Name = &quot;web-server&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Non serve conoscere la sintassi per cogliere il senso: il blocco dice &quot;deve esistere una macchina virtuale di questo tipo, chiamata web-server&quot;. Non spiega come crearla, dice solo che deve esistere. È testo, quindi si può leggere, commentare, versionare.&lt;/p&gt;
&lt;p&gt;Il ciclo di lavoro tipico è composto da pochi passi ricorrenti. Prima si &lt;strong&gt;scrive&lt;/strong&gt; la descrizione. Poi si chiede allo strumento un&apos;anteprima - spesso chiamata &lt;em&gt;plan&lt;/em&gt; - che confronta il testo con la realtà e mostra esattamente cosa creerebbe, modificherebbe o eliminerebbe, senza toccare ancora niente. Solo dopo aver letto e approvato quell&apos;anteprima si passa ad &lt;strong&gt;applicarla&lt;/strong&gt;, e a quel punto lo strumento esegue le modifiche nell&apos;ordine giusto. Questo passaggio di anteprima è una delle differenze più importanti rispetto al lavoro manuale: si vede cosa succederà prima che succeda.&lt;/p&gt;
&lt;h2&gt;Terraform e l&apos;ecosistema&lt;/h2&gt;
&lt;p&gt;Quando si parla di IaC per infrastrutture cloud, lo strumento più citato è &lt;strong&gt;Terraform&lt;/strong&gt;, sviluppato dall&apos;azienda HashiCorp. La documentazione ufficiale lo descrive come uno strumento che permette di &quot;costruire, cambiare e versionare risorse cloud e on-prem in modo sicuro ed efficiente&quot;, definendole in file di configurazione leggibili.&lt;/p&gt;
&lt;p&gt;Terraform usa un proprio linguaggio, l&apos;&lt;strong&gt;HCL&lt;/strong&gt; (HashiCorp Configuration Language), pensato per essere leggibile anche da chi non lo conosce a fondo. Non parla direttamente con ogni piattaforma: usa dei &lt;strong&gt;provider&lt;/strong&gt;, cioè componenti che traducono la descrizione nelle chiamate specifiche di un servizio - &lt;a href=&quot;/blog/aws-graviton5-arm-nel-cloud&quot;&gt;Amazon Web Services&lt;/a&gt;, &lt;a href=&quot;/blog/gpu-serverless-cloud-run&quot;&gt;Google Cloud&lt;/a&gt;, Azure, e molti altri. HashiCorp e la comunità hanno scritto migliaia di provider, disponibili in un registro pubblico, il che spiega perché lo stesso approccio funzioni su piattaforme molto diverse. Terraform tiene inoltre un file di &lt;em&gt;stato&lt;/em&gt; che gli serve da riferimento su ciò che ha già creato.&lt;/p&gt;
&lt;p&gt;Vale la pena sapere una cosa sul contesto. Nel 2023 HashiCorp ha cambiato la licenza di Terraform, passando da una licenza open source alla Business Source License, più restrittiva. In risposta, parte della comunità ha creato &lt;a href=&quot;/blog/opentofu-alternativa-terraform&quot;&gt;una versione derivata e indipendente chiamata OpenTofu&lt;/a&gt;, oggi ospitata dalla &lt;a href=&quot;/blog/mcp-linux-foundation&quot;&gt;Linux Foundation&lt;/a&gt; e mantenuta open source. Per la maggior parte di chi usa questi strumenti per gestire la propria infrastruttura la differenza pratica quotidiana è minima, ma è utile saperlo per orientarsi: Terraform resta lo strumento più diffuso, e non è più l&apos;unico.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;L&apos;Infrastructure as Code sposta l&apos;infrastruttura da una serie di clic difficili da ricordare a una descrizione in file di testo, leggibile e versionata. I vantaggi sono concreti: si ricrea tutto allo stesso modo, si rivede ogni modifica prima di applicarla, si riducono gli errori manuali e la descrizione diventa essa stessa la documentazione. Alla base ci sono due idee: dichiarare lo stato desiderato invece di dare comandi passo passo, e l&apos;idempotenza, che rende sicuro riapplicare la stessa descrizione. Terraform è oggi lo strumento più diffuso per farlo, ma il valore vero non è lo strumento: è smettere di affidare l&apos;infrastruttura alla memoria e iniziare a scriverla.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi smettere di configurare server a mano?&quot; text=&quot;Scriviamo e gestiamo infrastruttura come codice con Terraform, su AWS, Google Cloud e altri provider, dalla prima configurazione alla migrazione di ambienti esistenti.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.hashicorp.com/terraform/intro&quot;&gt;What is Terraform? - HashiCorp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.hashicorp.com/terraform/language/syntax/configuration&quot;&gt;Terraform - Configuration Syntax (HCL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://opentofu.org/blog/opentofu-announces-fork-of-terraform/&quot;&gt;OpenTofu Announces Fork of Terraform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>L&apos;AI dentro il browser: la Prompt API con Gemini Nano</title><link>https://initd.it/blog/prompt-api-ai-nel-browser</link><guid isPermaLink="true">https://initd.it/blog/prompt-api-ai-nel-browser</guid><description>Chrome espone una Prompt API che parla con un modello AI locale, Gemini Nano. Cosa permette (riassumere, classificare, estrarre senza chiamare il cloud) e perché conta per privacy, latenza e costi.</description><pubDate>Tue, 20 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Quasi ogni funzione &quot;intelligente&quot; che usiamo online - un riassunto automatico, un suggerimento di scrittura, la risposta a una domanda - funziona nello stesso modo. Il testo parte dal dispositivo, viaggia fino a un server, viene elaborato da un modello di intelligenza artificiale e torna indietro. È comodo, ma ha tre prezzi: i dati escono dal dispositivo, c&apos;è un&apos;attesa per il viaggio di andata e ritorno, e ogni richiesta ha un costo per chi offre il servizio. La Prompt API di Chrome prova a cambiare questo schema. Porta il modello dentro il browser, sul computer di chi naviga, così l&apos;elaborazione avviene in locale, senza chiamare il cloud.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è la Prompt API&lt;/h2&gt;
&lt;p&gt;Un&apos;&lt;strong&gt;API&lt;/strong&gt; (in inglese &lt;em&gt;application programming interface&lt;/em&gt;) è un insieme di istruzioni concordate con cui un programma chiede un servizio a un altro. La Prompt API è quindi il modo con cui il codice di una pagina web o di un&apos;estensione può inviare una richiesta a un modello AI già presente in Chrome.&lt;/p&gt;
&lt;p&gt;In parole semplici: si scrive la richiesta come la si scriverebbe a un assistente (&quot;riassumi questo testo&quot;, &quot;estrai nome ed email da questo messaggio&quot;, &quot;questa recensione è positiva o negativa?&quot;) e il modello risponde. La parola &lt;em&gt;prompt&lt;/em&gt; indica proprio quella richiesta in linguaggio naturale.&lt;/p&gt;
&lt;p&gt;Il modello che risponde si chiama &lt;strong&gt;Gemini Nano&lt;/strong&gt;. È una versione compatta dei &lt;a href=&quot;/blog/gemini-3&quot;&gt;modelli Gemini di Google&lt;/a&gt;, pensata per girare su un dispositivo normale invece che in un centro dati. Un dettaglio importante: il modello non è incluso dentro il browser. Viene scaricato a parte la prima volta che un sito o un&apos;estensione lo usa, poi resta sul dispositivo e le richieste successive non ripetono il download.&lt;/p&gt;
&lt;h2&gt;Cosa permette di fare&lt;/h2&gt;
&lt;p&gt;La Prompt API è generica: non è legata a un solo compito. Secondo la documentazione di Chrome, il modello può gestire ragionamento e generazione di testo, classificazione, estrazione e analisi di contenuti. In pratica coincide con i lavori che ricorrono di più su una pagina:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Riassumere&lt;/strong&gt; un articolo lungo o un thread di messaggi in poche righe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Classificare&lt;/strong&gt; un testo, per esempio dividere le richieste in &quot;urgente&quot; e &quot;non urgente&quot; o capire il tono di un commento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estrarre&lt;/strong&gt; informazioni strutturate da testo libero: una data e un luogo da un invito, un contatto da una firma email.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Riscrivere&lt;/strong&gt; o generare brevi testi a partire da istruzioni.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un aspetto meno ovvio: la Prompt API non accetta solo testo. La documentazione indica che può ricevere anche &lt;strong&gt;immagini e audio&lt;/strong&gt; come input. Questo apre casi come descrivere il contenuto di un&apos;immagine o trascrivere una nota vocale, sempre in locale.&lt;/p&gt;
&lt;p&gt;Per i compiti più comuni esistono inoltre API dedicate, più semplici da usare perché già specializzate: tra queste ci sono il Summarizer (riassunti), il Translator (traduzione), il Language Detector (riconoscimento della lingua), oltre a Writer, Rewriter e Proofreader per scrivere, riscrivere e correggere. Fanno parte della stessa famiglia di funzioni AI integrate nel browser, un approccio simile, in fondo, al modo in cui le &lt;a href=&quot;/blog/agent-skills&quot;&gt;Agent Skills incapsulano procedure specifiche&lt;/a&gt; per gli assistenti AI.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;I tuoi dati devono davvero uscire verso un servizio AI esterno?&quot; text=&quot;Valutiamo se le funzioni AI del tuo sito o della tua applicazione possono girare in locale nel browser, senza inviare dati a terzi.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché conta: privacy, latenza, costi&lt;/h2&gt;
&lt;p&gt;Il motivo per cui questa novità merita attenzione non è &quot;c&apos;è l&apos;AI nel browser&quot;, ma dove avviene il calcolo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Privacy.&lt;/strong&gt; Se il modello gira sul dispositivo, il testo (o l&apos;immagine) da elaborare non deve essere spedito a un server esterno. Per contenuti delicati - appunti personali, bozze non ancora pubbliche, messaggi privati - è una differenza sostanziale: il dato non lascia il computer, un aspetto che pesa anche sul fronte della &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;conformità GDPR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Latenza.&lt;/strong&gt; Senza il viaggio verso il cloud e ritorno, la risposta può arrivare prima. E, una volta scaricato il modello, molte richieste possono funzionare anche &lt;strong&gt;offline&lt;/strong&gt;, cosa impossibile quando ogni operazione dipende da un server remoto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Costi.&lt;/strong&gt; Ogni chiamata a un modello nel cloud ha un prezzo per chi sviluppa il servizio. Con l&apos;elaborazione in locale quel costo per singola richiesta non c&apos;è: il lavoro sfrutta il dispositivo di chi naviga. Per funzioni usate spesso, la differenza sul conto finale è concreta.&lt;/p&gt;
&lt;p&gt;Nessuno di questi vantaggi cancella il cloud. &lt;a href=&quot;/blog/gpu-serverless-cloud-run&quot;&gt;I modelli grandi che girano nei data center&lt;/a&gt; restano più capaci. Il punto è avere una scelta: per i compiti semplici e frequenti, l&apos;opzione locale spesso basta.&lt;/p&gt;
&lt;h2&gt;Lo stato: cosa è pronto e cosa no&lt;/h2&gt;
&lt;p&gt;Qui serve onestà, perché lo stato non è uniforme.&lt;/p&gt;
&lt;p&gt;Per le &lt;strong&gt;estensioni di Chrome&lt;/strong&gt; la Prompt API è arrivata alla versione stabile: gli sviluppatori di estensioni possono usarla in produzione. Il percorso è iniziato con un &lt;em&gt;origin trial&lt;/em&gt; (una fase di prova pubblica riservata a chi si iscrive) partito con Chrome 131 ed è poi diventato disponibile in modo stabile.&lt;/p&gt;
&lt;p&gt;Sulle &lt;strong&gt;pagine web normali&lt;/strong&gt;, invece, la situazione è più acerba: l&apos;accesso passa da origin trial o da un flag da attivare a mano. In sostanza, sul web aperto è ancora una tecnologia in evoluzione, non qualcosa su cui costruire senza un piano B.&lt;/p&gt;
&lt;p&gt;Ci sono poi requisiti concreti che limitano la disponibilità. La documentazione parla di dispositivi desktop (Windows 10 o 11, macOS 13 e successivi, Linux; su ChromeOS solo i Chromebook Plus) e &lt;strong&gt;non&lt;/strong&gt; di Chrome per Android o iOS. Servono spazio libero su disco (la documentazione indica circa 22 GB) e una scheda grafica con più di 4 GB di memoria dedicata, oppure abbastanza RAM e core della CPU. Tradotto: non ogni visitatore ha un dispositivo idoneo, e questo va messo in conto.&lt;/p&gt;
&lt;h2&gt;Un esempio minimo&lt;/h2&gt;
&lt;p&gt;Il codice qui sotto mostra lo schema di base: prima si verifica se il modello è disponibile, poi si crea una sessione e si invia la richiesta.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 1. Verifica se il modello è utilizzabile su questo dispositivo
const stato = await LanguageModel.availability();

if (stato !== &quot;unavailable&quot;) {
  // 2. Crea una sessione (può scaricare il modello al primo uso)
  const sessione = await LanguageModel.create();

  // 3. Invia una richiesta e attende la risposta completa
  const risposta = await sessione.prompt(
    &quot;Riassumi in una frase: &quot; + testo
  );

  // 4. Libera le risorse quando hai finito
  sessione.destroy();
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esiste anche &lt;code&gt;promptStreaming()&lt;/code&gt;, che restituisce la risposta poco alla volta man mano che viene generata, utile per mostrare subito qualcosa all&apos;utente su testi lunghi.&lt;/p&gt;
&lt;h2&gt;I limiti da tenere presenti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;È un modello piccolo.&lt;/strong&gt; Gemini Nano è meno capace dei grandi modelli nel cloud. Rende bene su compiti ben definiti (riassunto, classificazione, estrazione), meno su ragionamenti complessi o conoscenza molto specifica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Può sbagliare.&lt;/strong&gt; Come ogni modello di questo tipo, a volte produce risposte errate o inventate. L&apos;output va trattato come una bozza, non come una verità da usare tale e quale per decisioni importanti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La disponibilità varia.&lt;/strong&gt; Serve sempre controllare con &lt;code&gt;availability()&lt;/code&gt; prima di usare l&apos;API e prevedere un&apos;alternativa (per esempio un servizio nel cloud, o un flusso manuale) per chi non ha un dispositivo idoneo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sul web è ancora in movimento.&lt;/strong&gt; L&apos;interfaccia può cambiare durante la fase di prova. Sulle pagine web aperte conviene sperimentare, non ancora dipenderne per funzioni critiche.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;La Prompt API permette al codice di una pagina o di un&apos;estensione di parlare con Gemini Nano, un modello AI che gira dentro Chrome, sul dispositivo. Serve per riassumere, classificare, estrarre e generare testo - e anche per immagini e audio - senza mandare i dati al cloud. I vantaggi sono chiari: più privacy, meno attesa, nessun costo per singola richiesta. Lo stato, però, va letto con precisione: stabile per le estensioni, ancora sperimentale sulle pagine web, con requisiti di dispositivo che escludono una parte degli utenti. Non è la fine del cloud, ma un&apos;opzione in più: portare l&apos;AI dove sta il dato, invece di spedire il dato dove sta l&apos;AI.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi integrare funzioni AI nel tuo sito con giudizio?&quot; text=&quot;Sviluppiamo funzionalità AI su misura per applicazioni web, valutando caso per caso se convenga l&apos;elaborazione locale nel browser o un servizio cloud, con attenzione a privacy e costi.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/docs/ai/prompt-api&quot;&gt;The Prompt API - Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/prompt-api-origin-trial&quot;&gt;Join the Prompt API for Chrome Extensions origin trial - Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/docs/ai/built-in&quot;&gt;Built-in AI - Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Web Bot Auth: identificare i bot con firme crittografiche</title><link>https://initd.it/blog/web-bot-auth</link><guid isPermaLink="true">https://initd.it/blog/web-bot-auth</guid><description>Cloudflare propone Web Bot Auth: i bot legittimi e gli agenti AI firmano le richieste HTTP con una firma crittografica (RFC 9421), invece di farsi riconoscere da IP o User-Agent falsificabili.</description><pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi gestisce un sito riceve ogni giorno molte visite che non arrivano da persone, ma da programmi automatici. Alcuni sono utili - il crawler di un motore di ricerca, un aggregatore di feed, un monitoraggio dell&apos;uptime - altri no, come chi copia i contenuti o cerca falle. A questi si aggiungono ora gli &lt;a href=&quot;/blog/agent-skills&quot;&gt;agenti AI&lt;/a&gt;, cioè assistenti che navigano il web al posto dell&apos;utente per rispondere a una domanda o svolgere un compito. Il problema è vecchio ma sempre più pressante: come si distingue un bot legittimo da uno che finge di esserlo?&lt;/p&gt;
&lt;p&gt;A metà maggio 2025 Cloudflare, uno dei maggiori operatori di rete e CDN al mondo, ha presentato una proposta per rispondere a questa domanda: si chiama &lt;strong&gt;Web Bot Auth&lt;/strong&gt;. L&apos;idea di fondo è semplice. Invece di indovinare chi c&apos;è dietro una richiesta guardando indizi facili da falsificare, si chiede al bot di &lt;em&gt;firmare&lt;/em&gt; le proprie richieste con una firma crittografica verificabile.&lt;/p&gt;
&lt;h2&gt;Il problema: riconoscere i bot oggi è fragile&lt;/h2&gt;
&lt;p&gt;Un &quot;bot&quot; è semplicemente un programma che invia richieste web senza una persona che clicca in tempo reale. Oggi chi vuole capire se un bot è affidabile ha a disposizione strumenti poco solidi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lo User-Agent.&lt;/strong&gt; È una riga di testo che ogni richiesta porta con sé per dichiarare &quot;chi sono&quot; (per esempio il nome del browser o del crawler). Il problema è che è testo libero: chiunque può scriverci quello che vuole. Fingersi il crawler di un motore di ricerca è banale.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gli intervalli di indirizzi IP.&lt;/strong&gt; L&apos;indirizzo IP è il &quot;numero di telefono&quot; da cui parte una richiesta. Alcuni operatori pubblicano gli intervalli di IP usati dai loro bot, così i siti possono creare delle &lt;em&gt;allowlist&lt;/em&gt; (elenchi di indirizzi ammessi). Ma è un meccanismo fragile: gli IP cambiano, sono spesso condivisi tra servizi diversi, e molti strumenti passano da proxy o VPN che ne nascondono l&apos;origine. Mantenere questi elenchi aggiornati è un lavoro continuo e imperfetto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;I token segreti.&lt;/strong&gt; Si potrebbe dare a ogni bot una password da presentare al sito. Non regge su larga scala: servirebbe una credenziale diversa per ogni sito da visitare, e un accordo preventivo con ognuno.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il risultato è che oggi &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;bloccare i bot cattivi&lt;/a&gt; senza colpire quelli buoni è un esercizio di approssimazione.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è Web Bot Auth&lt;/h2&gt;
&lt;p&gt;Web Bot Auth ribalta l&apos;approccio: non si prova a indovinare l&apos;identità del bot, gli si chiede di dimostrarla con la crittografia.&lt;/p&gt;
&lt;p&gt;Serve un breve richiamo su cos&apos;è una firma digitale. Chi firma possiede due chiavi legate tra loro: una &lt;strong&gt;privata&lt;/strong&gt;, tenuta segreta, e una &lt;strong&gt;pubblica&lt;/strong&gt;, condivisa con tutti. Con la chiave privata si &quot;sigilla&quot; un messaggio; con quella pubblica chiunque può verificare che il sigillo sia autentico e che il messaggio non sia stato alterato. La cosa importante è che solo chi possiede la chiave privata può produrre una firma valida: non si può contraffare guardando quella pubblica, lo stesso principio delle coppie di chiavi che regge &lt;a href=&quot;/blog/cos-e-una-vpn-wireguard&quot;&gt;l&apos;autenticazione di WireGuard&lt;/a&gt; al posto delle password.&lt;/p&gt;
&lt;p&gt;Web Bot Auth applica questo principio alle richieste HTTP. Un bot legittimo genera una coppia di chiavi, pubblica quella pubblica in un punto noto e firma ogni richiesta con quella privata. Il sito che riceve la richiesta recupera la chiave pubblica e verifica la firma. Se torna, sa con certezza da quale operatore arriva quella richiesta.&lt;/p&gt;
&lt;p&gt;Alla base c&apos;è uno standard già pubblicato dall&apos;IETF (l&apos;organismo che cura gli standard tecnici di Internet): la &lt;strong&gt;RFC 9421, HTTP Message Signatures&lt;/strong&gt;, del febbraio 2024. Definisce in modo generale come firmare pezzi di un messaggio HTTP e come allegare la firma tramite due intestazioni, &lt;code&gt;Signature-Input&lt;/code&gt; e &lt;code&gt;Signature&lt;/code&gt;. Web Bot Auth non reinventa nulla: è un modo specifico di usare quello standard per il caso dei bot.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai davvero chi c&apos;è dietro alle richieste che ricevi ogni giorno?&quot; text=&quot;Analizziamo il traffico bot e AI sul tuo sito e verifichiamo cosa puoi già filtrare in modo affidabile.&quot; button=&quot;Analizza il tuo traffico →&quot;}&lt;/p&gt;
&lt;h2&gt;Come funziona, in concreto&lt;/h2&gt;
&lt;p&gt;Prima di inviare una richiesta, il bot ne firma alcuni elementi con la propria chiave privata. In particolare firma l&apos;&lt;strong&gt;autorità&lt;/strong&gt; di destinazione, cioè il dominio del sito a cui sta scrivendo: così la firma vale solo per quel destinatario e non può essere riciclata altrove. La richiesta viaggia poi con tre intestazioni aggiuntive:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Signature-Input&lt;/code&gt; - descrive &lt;em&gt;cosa&lt;/em&gt; è stato firmato e con quali parametri: una finestra di validità (i momenti di creazione e di scadenza), un identificativo della chiave usata e un&apos;etichetta che segnala lo scopo, &lt;code&gt;web-bot-auth&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Signature&lt;/code&gt; - contiene la firma vera e propria.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Signature-Agent&lt;/code&gt; - indica &lt;em&gt;dove&lt;/em&gt; trovare le chiavi pubbliche del bot, in un formato standard, così il sito sa dove andare a verificare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In forma semplificata, una richiesta firmata assomiglia a questa:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GET /articolo HTTP/1.1
Host: www.esempio.it
Signature-Agent: signer.esempio-bot.com
Signature-Input: sig=(&quot;@authority&quot; &quot;signature-agent&quot;);
  created=1700000000; expires=1700003600;
  keyid=&quot;ba3e64==&quot;; tag=&quot;web-bot-auth&quot;
Signature: sig=:abc...==:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La finestra di validità è importante: la firma scade in fretta, quindi anche se qualcuno la intercettasse non potrebbe riutilizzarla a lungo. E poiché è legata al dominio di destinazione, non funziona verso un sito diverso da quello previsto.&lt;/p&gt;
&lt;p&gt;Per rendere la cosa adottabile, Cloudflare ha rilasciato esempi pratici già utilizzabili: un pacchetto npm (&lt;code&gt;web-bot-auth&lt;/code&gt;) per generare le firme con chiavi Ed25519, un&apos;estensione per il browser Chrome, un plugin per il web server Caddy che mostra la verifica lato server, e un server di prova pubblico per fare esperimenti.&lt;/p&gt;
&lt;h2&gt;Perché è più affidabile delle allowlist di IP&lt;/h2&gt;
&lt;p&gt;La differenza pratica è netta. Un elenco di IP dice al massimo &quot;questa richiesta arriva da un indirizzo che &lt;em&gt;di solito&lt;/em&gt; appartiene a un certo operatore&quot; - un&apos;informazione indiretta, che invecchia e che si può aggirare. Una firma crittografica dice invece &quot;questa specifica richiesta, verso questo specifico dominio, in questa finestra di tempo, è stata prodotta da chi possiede quella chiave privata&quot;.&lt;/p&gt;
&lt;p&gt;Non serve più inseguire indirizzi che cambiano, né fidarsi di uno User-Agent che chiunque può scrivere. La verifica non dipende dal percorso di rete: funziona anche se il bot passa da proxy o infrastrutture condivise. E l&apos;identità non va concordata sito per sito: il bot pubblica la sua chiave una volta, e chiunque può verificarla.&lt;/p&gt;
&lt;h2&gt;Cosa cambia per chi gestisce un sito&lt;/h2&gt;
&lt;p&gt;Per chi amministra un sito, l&apos;orizzonte è poter decidere in modo più fine chi far entrare. Invece di ragionare per liste di indirizzi, si può ragionare per identità verificate: dare accesso al crawler di un motore di ricerca o a un agente AI a cui si vuole concedere spazio, e trattare diversamente il resto. Cloudflare ha dichiarato l&apos;intenzione di integrare questo meccanismo nei propri strumenti di gestione dei bot e di analisi del traffico AI, sulla stessa linea di altre aperture recenti come &lt;a href=&quot;/blog/cloudflare-oauth-self-managed&quot;&gt;l&apos;OAuth self-managed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Va detto con chiarezza che questa firma dimostra &lt;em&gt;chi&lt;/em&gt; ha mandato la richiesta, non &lt;em&gt;cosa&lt;/em&gt; poi ne farà. Un bot firmato resta soggetto alle regole del sito: l&apos;autenticazione è la premessa per applicare permessi sensati, non un lasciapassare automatico.&lt;/p&gt;
&lt;h2&gt;A che punto è&lt;/h2&gt;
&lt;p&gt;Qui serve prudenza, perché non è ancora tutto stabile. Alla presentazione, Web Bot Auth è partito come &lt;strong&gt;beta chiusa&lt;/strong&gt;, cioè una fase di prova ad accesso limitato.&lt;/p&gt;
&lt;p&gt;Le specifiche che lo descrivono sono &lt;strong&gt;Internet-Draft&lt;/strong&gt; dell&apos;IETF (per esempio la bozza sull&apos;architettura e quella sul formato della directory delle chiavi): documenti di lavoro, ancora in evoluzione e non approvati come standard. Vale la pena ricordare che un Internet-Draft, di per sé, non ha valore ufficiale nel processo IETF finché non completa l&apos;iter. Lo standard che sta &lt;em&gt;sotto&lt;/em&gt;, la RFC 9421, è invece già pubblicato e stabile.&lt;/p&gt;
&lt;p&gt;Cloudflare ha anche descritto un&apos;alternativa più sperimentale basata su mTLS (l&apos;autenticazione reciproca a livello di TLS, con certificati sia lato client che server), ma indica le firme dei messaggi HTTP come via principale, perché più semplice da adottare senza toccare lo strato TLS.&lt;/p&gt;
&lt;p&gt;In sintesi: è una proposta concreta e già sperimentabile, non un prodotto finito. L&apos;idea di identificare i bot con una prova crittografica invece che con indizi falsificabili è solida, e arriva nel momento giusto, con gli agenti AI che moltiplicano il traffico automatico. Ma il suo valore reale dipenderà da quanti operatori di bot inizieranno a firmare e da quanti siti impareranno a verificare. Per ora conviene seguirla, capirne il funzionamento e considerarla un complemento alle difese esistenti, non ancora un loro sostituto.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi gestire bot e agenti AI senza bloccare i visitatori giusti?&quot; text=&quot;Configuriamo regole di accesso, allowlist e strumenti di bot management su misura per il tuo sito o la tua infrastruttura.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/web-bot-auth/&quot;&gt;Forget IPs: using cryptography to verify bot and agent traffic (Cloudflare Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9421.html&quot;&gt;RFC 9421: HTTP Message Signatures (RFC Editor)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/draft-meunier-web-bot-auth-architecture/&quot;&gt;draft-meunier-web-bot-auth-architecture (IETF Datatracker)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Amazon Aurora DSQL: un database SQL distribuito e sempre disponibile</title><link>https://initd.it/blog/aurora-dsql-database-sql-distribuito</link><guid isPermaLink="true">https://initd.it/blog/aurora-dsql-database-sql-distribuito</guid><description>Amazon Aurora DSQL è in disponibilità generale: un database SQL serverless e distribuito, con alta disponibilità multi-regione e consistenza forte. Cos&apos;è e quando conviene.</description><pubDate>Wed, 28 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tenere un database sempre raggiungibile è uno dei problemi più difficili di chi manda avanti servizi online. Un database è il registro dove un&apos;applicazione conserva i suoi dati: ordini, utenti, pagamenti, catalogo. Se si ferma, si ferma tutto. E se quegli stessi dati vanno letti e aggiornati da più parti del mondo nello stesso momento, tenerli coerenti diventa un rompicapo. Il 27 maggio 2025 AWS ha reso disponibile a tutti - in &quot;disponibilità generale&quot;, cioè fuori dalla fase di anteprima riservata - Amazon Aurora DSQL, un database pensato proprio per questo scenario.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è Aurora DSQL&lt;/h2&gt;
&lt;p&gt;Aurora DSQL è un database relazionale: organizza i dati in tabelle con righe e colonne, che si interrogano con il linguaggio SQL, lo stesso usato da decenni per questo tipo di archivi. Ha però due caratteristiche che lo distinguono da un database installato su un server tradizionale.&lt;/p&gt;
&lt;p&gt;È &lt;strong&gt;serverless&lt;/strong&gt;. &quot;Senza server&quot; non significa che i server non esistano, ma che non è chi usa il servizio a doverli scegliere, dimensionare, avviare o aggiornare: se ne occupa AWS dietro le quinte. Chi sviluppa vede solo un indirizzo a cui connettersi e paga per quanto lavoro effettivamente fa il database.&lt;/p&gt;
&lt;p&gt;È &lt;strong&gt;distribuito&lt;/strong&gt;. I dati non stanno su una sola macchina, ma sono replicati in automatico su più zone di disponibilità (data center vicini ma indipendenti all&apos;interno di una regione) e, se si vuole, su più regioni geografiche diverse.&lt;/p&gt;
&lt;p&gt;Un terzo dettaglio conta per chi già lavora con questi strumenti: Aurora DSQL è &lt;strong&gt;compatibile con PostgreSQL&lt;/strong&gt;, uno dei database open source più diffusi. Nella documentazione AWS indica la compatibilità con la versione 16 di PostgreSQL. In pratica ci si collega con i driver, le librerie e gli strumenti che si usano già con PostgreSQL, come il client &lt;code&gt;psql&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Il problema che prova a risolvere&lt;/h2&gt;
&lt;p&gt;Chi gestisce un database tradizionale conosce a memoria una lista di grattacapi.&lt;/p&gt;
&lt;p&gt;Il primo è la &lt;strong&gt;manutenzione&lt;/strong&gt;. Applicare gli aggiornamenti di sicurezza (le cosiddette patch) o passare a una versione nuova spesso richiede una finestra in cui il database è rallentato o fermo. Va pianificata, comunicata, sorvegliata.&lt;/p&gt;
&lt;p&gt;Il secondo è il &lt;strong&gt;failover&lt;/strong&gt;, cioè cosa succede quando la macchina principale si guasta. In un&apos;architettura classica esiste una copia pronta a subentrare, ma il passaggio va gestito e non è mai del tutto indolore: c&apos;è un intervallo in cui il servizio arranca, un tempo di fermo che va tenuto sotto la soglia di &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;quanto ci si può permettere di restare fermi&lt;/a&gt;, e nei casi peggiori si rischia di perdere gli ultimi dati scritti.&lt;/p&gt;
&lt;p&gt;Il terzo è la &lt;strong&gt;crescita&lt;/strong&gt;. Quando i dati o il traffico diventano troppi per una macchina sola, la via classica è lo &lt;em&gt;sharding&lt;/em&gt;: spezzare i dati in tanti pezzi (frammenti) distribuiti su più macchine. Funziona, ma complica tutto. L&apos;applicazione deve sapere su quale frammento sta ogni dato, e le operazioni che ne coinvolgono più di uno diventano lente e fragili.&lt;/p&gt;
&lt;p&gt;Aurora DSQL nasce per togliere questi tre compiti dalle spalle di chi sviluppa: niente patching manuale, niente failover da orchestrare, niente sharding da progettare a mano.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua applicazione gestisce ancora failover e sharding a mano?&quot; text=&quot;Analizziamo l&apos;architettura dati esistente e valutiamo se un database gestito e distribuito riduce davvero il carico operativo.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Alta disponibilità e consistenza forte&lt;/h2&gt;
&lt;p&gt;Sono due promesse diverse, e vale la pena tenerle separate.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;disponibilità&lt;/strong&gt; misura per quanto tempo il servizio resta raggiungibile. Di solito si esprime con una percentuale. AWS dichiara per Aurora DSQL una disponibilità del &lt;strong&gt;99,99% in una singola regione&lt;/strong&gt; e del &lt;strong&gt;99,999% tra più regioni&lt;/strong&gt;. Tradotto in tempo concreto: 99,99% significa lasciar fuori al massimo circa 52 minuti di disservizio in un anno; 99,999% scende a poco più di 5 minuti l&apos;anno. Sono obiettivi dichiarati dal fornitore, non garanzie che nulla possa mai andare storto, ma danno la misura dell&apos;ordine di grandezza.&lt;/p&gt;
&lt;p&gt;Come ci arriva? Con un&apos;architettura che AWS descrive come &lt;strong&gt;attiva-attiva&lt;/strong&gt;. Invece di avere una copia principale che lavora e una di scorta che aspetta, più copie lavorano contemporaneamente e possono accettare sia letture sia scritture. Se un componente si guasta, il traffico viene dirottato in automatico verso quelli sani, senza il failover tradizionale da coordinare. Ogni componente è ridondato su tre zone di disponibilità.&lt;/p&gt;
&lt;p&gt;Nella configurazione &lt;strong&gt;multi-regione&lt;/strong&gt;, due cluster in due regioni diverse si presentano all&apos;applicazione come un unico database logico: entrambi gli indirizzi accettano letture e scritture, un assetto che tocca da vicino anche la &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;conformità GDPR&lt;/a&gt; quando i dati attraversano più aree geografiche. A fare da arbitro c&apos;è una terza regione con un ruolo ridotto, definita &lt;em&gt;log-only witness&lt;/em&gt; (testimone di solo registro), che non serve le richieste ma aiuta a decidere quale sia la versione corretta dei dati in caso di problemi.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;consistenza forte&lt;/strong&gt; è la seconda promessa, ed è la più delicata. In un sistema distribuito, dopo una scrittura, le varie copie del dato possono impiegare un attimo ad allinearsi. Molti sistemi accettano questo ritardo: si parla di &lt;em&gt;consistenza eventuale&lt;/em&gt;, cioè &quot;prima o poi tutte le copie saranno uguali&quot;. Nel frattempo, però, due utenti potrebbero leggere valori diversi. La consistenza forte promette invece che ogni lettura veda sempre l&apos;ultimo dato scritto, anche da un&apos;altra regione. Per un carrello, un saldo o una prenotazione, questa differenza non è un dettaglio: è la differenza tra vendere due volte l&apos;ultimo pezzo di magazzino oppure no. Aurora DSQL offre transazioni ACID (le proprietà che rendono affidabili le operazioni sui database) con consistenza forte anche tra regioni.&lt;/p&gt;
&lt;h2&gt;Serverless: scala senza sharding e senza patch&lt;/h2&gt;
&lt;p&gt;Il lato &quot;serverless&quot; si traduce in due comodità pratiche.&lt;/p&gt;
&lt;p&gt;La prima è la &lt;strong&gt;scalabilità automatica&lt;/strong&gt;. Aurora DSQL adatta da solo &lt;a href=&quot;/blog/aws-graviton5-arm-nel-cloud&quot;&gt;capacità di calcolo&lt;/a&gt;, lettura/scrittura e spazio di archiviazione in base al carico. Se il traffico raddoppia non c&apos;è un server da ingrandire a mano né uno sharding da riprogettare: è il compito che di solito ruba più tempo e che qui, sulla carta, sparisce.&lt;/p&gt;
&lt;p&gt;La seconda è l&apos;&lt;strong&gt;assenza di manutenzione a carico dell&apos;utente&lt;/strong&gt;. Non ci sono server da aggiornare, quindi non ci sono finestre di patching o di upgrade da pianificare, e non c&apos;è il fermo tecnico che di solito le accompagna.&lt;/p&gt;
&lt;h2&gt;Compatibile con PostgreSQL, ma con dei limiti&lt;/h2&gt;
&lt;p&gt;Qui serve onestà, perché &quot;compatibile&quot; non vuol dire &quot;identico&quot;. Aurora DSQL parla il protocollo di PostgreSQL e ne supporta un&apos;ampia parte delle funzionalità, ma non tutte: AWS mantiene una pagina di documentazione dedicata a cosa è supportato e cosa no. Prima di dare per scontato che un&apos;applicazione PostgreSQL esistente giri senza modifiche, conviene controllare quell&apos;elenco.&lt;/p&gt;
&lt;p&gt;Ci sono poi vincoli sull&apos;uso multi-regione. Al momento del lancio i cluster multi-regione si potevano creare solo tra regioni dello stesso raggruppamento geografico, e non erano supportate combinazioni tra continenti diversi. È un limite da mettere in conto se l&apos;obiettivo è servire utenti sparsi su più continenti con un unico cluster.&lt;/p&gt;
&lt;h2&gt;Per quali casi ha senso&lt;/h2&gt;
&lt;p&gt;Aurora DSQL è ottimizzato per i carichi &lt;strong&gt;transazionali&lt;/strong&gt;: tante operazioni piccole e frequenti - inserire un ordine, aggiornare un saldo, registrare un pagamento - dove contano affidabilità e coerenza. AWS lo indica come adatto ad architetture a microservizi, serverless ed event-driven, e cita ambiti come banche, e-commerce, viaggi, retail, piattaforme SaaS multi-tenant, pagamenti e gaming.&lt;/p&gt;
&lt;p&gt;Vale anche il ragionamento opposto, per non usarlo dove non serve. Non è pensato come strumento di analisi su grandi moli di dati storici (i cosiddetti carichi analitici o OLAP), che seguono logiche diverse. E se un&apos;applicazione ha bisogno di una funzione specifica di PostgreSQL non ancora supportata, o se un semplice database gestito su una sola regione copre già il fabbisogno, la complessità di un database distribuito può essere di troppo. La scelta giusta dipende dai requisiti concreti di disponibilità e di distribuzione geografica, non dalla novità in sé.&lt;/p&gt;
&lt;h2&gt;Il prezzo, in breve&lt;/h2&gt;
&lt;p&gt;Il modello di costo è a consumo. Si paga il lavoro svolto tramite delle unità chiamate DPU (Distributed Processing Units), che misurano letture e scritture, più lo spazio di archiviazione a GB-mese. AWS include una fascia gratuita mensile: le prime 100.000 DPU e 1 GB-mese di archiviazione ogni mese non si pagano. Per i conti veri conviene comunque partire dalla pagina prezzi ufficiale, perché il totale dipende molto da come si usa il database, proprio come succede quando si &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;confrontano le offerte di più fornitori cloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi valutare un database distribuito per la tua applicazione?&quot; text=&quot;Progettiamo e gestiamo infrastrutture cloud su AWS e Google Cloud, dalla scelta del database alla migrazione, con attenzione a costi e continuità del servizio.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/aws/amazon-aurora-dsql-is-now-generally-available/&quot;&gt;Amazon Aurora DSQL is now generally available (AWS News Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/aurora-dsql/latest/userguide/what-is-aurora-dsql.html&quot;&gt;What is Amazon Aurora DSQL? (AWS Documentation)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è una VPN e come funziona WireGuard</title><link>https://initd.it/blog/cos-e-una-vpn-wireguard</link><guid isPermaLink="true">https://initd.it/blog/cos-e-una-vpn-wireguard</guid><description>Cos&apos;è una VPN in parole semplici, a cosa serve e perché WireGuard è diventato popolare: semplicità, prestazioni e crittografia moderna rispetto alle soluzioni più vecchie.</description><pubDate>Thu, 12 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Capita di sentire la parola VPN in contesti molto diversi. Chi lavora da casa la usa per collegarsi ai sistemi dell&apos;ufficio, chi gestisce dei server la usa per farli parlare tra loro in modo protetto, e c&apos;è chi la installa sul telefono per stare più tranquillo su una rete Wi-Fi pubblica. Dietro usi così diversi c&apos;è sempre la stessa idea di base. E negli ultimi anni, tra i tanti modi di costruire una VPN, uno in particolare si è fatto notare per la sua semplicità: WireGuard. Vale la pena capire cos&apos;è una VPN e perché WireGuard è diventato un riferimento.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è una VPN, in parole semplici&lt;/h2&gt;
&lt;p&gt;VPN è la sigla di &lt;em&gt;Virtual Private Network&lt;/em&gt;, &quot;rete privata virtuale&quot;. Detta senza tecnicismi, è un &lt;strong&gt;tunnel cifrato tra due punti&lt;/strong&gt; che passa sopra una rete pubblica come Internet. La documentazione di Wikipedia la descrive come una rete che &quot;estende una rete privata attraverso una rete pubblica&quot; usando cifratura e protocolli di tunnel.&lt;/p&gt;
&lt;p&gt;Un paragone aiuta. Internet è come una stanza affollata in cui tanti messaggi viaggiano da un capo all&apos;altro, e in linea di principio chi sta nel mezzo può vederli passare. Una VPN è come far correre quei messaggi dentro un tubo sigillato: chi guarda dall&apos;esterno vede che qualcosa transita, ma non riesce a leggerne il contenuto. Le due parole chiave sono proprio queste. &lt;strong&gt;Cifratura&lt;/strong&gt;: i dati vengono trasformati in modo che solo i due capi del tunnel possano decifrarli. &lt;strong&gt;Tunnel&lt;/strong&gt;: il traffico viene incapsulato, cioè avvolto in un involucro che lo trasporta da un punto all&apos;altro come se i due estremi fossero sulla stessa rete locale, anche se in realtà sono lontani.&lt;/p&gt;
&lt;h2&gt;A cosa serve&lt;/h2&gt;
&lt;p&gt;Gli usi concreti di una VPN si possono raggruppare in tre famiglie, che Wikipedia elenca come casi tipici.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accesso remoto.&lt;/strong&gt; Permette a una persona fuori sede di raggiungere in modo sicuro la rete dell&apos;ufficio attraverso Internet. È il caso del lavoro da casa: si accede a file, applicazioni interne e strumenti aziendali come se si fosse fisicamente in sede. È anche il modo giusto di amministrare gli apparati di rete da remoto, invece di lasciare aperta su Internet l&apos;interfaccia di gestione: &lt;a href=&quot;/blog/vulnerabilita-mikrotik-routeros-ssh&quot;&gt;le falle SSH di MikroTik RouterOS&lt;/a&gt; hanno mostrato cosa succede altrimenti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collegamento tra reti (site-to-site).&lt;/strong&gt; Unisce due reti distinte, per esempio quella di un ufficio e quella di un datacenter, oppure due server in luoghi diversi che devono scambiarsi dati senza esporsi su Internet. È lo scenario più comune quando si parla di &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;infrastruttura&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy sulla connessione.&lt;/strong&gt; Molti servizi commerciali usano una VPN per cifrare il traffico di chi naviga e ridurre il rischio che venga intercettato, tipicamente su reti non fidate. Va detto con onestà che qui la fiducia si sposta sul fornitore della VPN, che vede comunque passare il traffico.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il filo comune è sempre lo stesso: mettere in comunicazione due punti in modo sicuro, senza dover fidarsi della rete che c&apos;è in mezzo.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;I tuoi server si parlano ancora esposti direttamente su Internet?&quot; text=&quot;Verifichiamo come sono collegate le tue macchine e se un tunnel VPN ridurrebbe la superficie esposta.&quot; button=&quot;Verifica la tua rete →&quot;}&lt;/p&gt;
&lt;h2&gt;Cos&apos;è WireGuard&lt;/h2&gt;
&lt;p&gt;Costruire una VPN richiede un &lt;em&gt;protocollo&lt;/em&gt;, cioè un insieme di regole che stabiliscono come i due capi si riconoscono, come cifrano i dati e come li instradano. Per anni gli strumenti più diffusi sono stati OpenVPN e IPsec, entrambi solidi ma anche pesanti da configurare. WireGuard è un progetto più recente, creato da Jason A. Donenfeld, che si presenta con un obiettivo dichiarato: fare le stesse cose in modo molto più semplice.&lt;/p&gt;
&lt;p&gt;La sua stessa pagina ufficiale lo descrive come &quot;una VPN estremamente semplice, ma veloce e moderna, che utilizza crittografia allo stato dell&apos;arte&quot;. Sotto il cofano, WireGuard incapsula i pacchetti IP dentro &lt;strong&gt;UDP&lt;/strong&gt;, uno dei protocolli di trasporto di base di Internet. Dal punto di vista pratico, è diventato parte del kernel Linux con la versione 5.6, rilasciata il 29 marzo 2020, ed è disponibile anche su Windows, macOS, Android, iOS e i sistemi BSD. Un dettaglio che spiega bene la sua filosofia: la documentazione dichiara di voler essere &quot;facile da configurare e mettere in opera quanto SSH&quot;.&lt;/p&gt;
&lt;h2&gt;Perché è diventato popolare&lt;/h2&gt;
&lt;p&gt;Il successo di WireGuard non è dovuto a una singola funzione appariscente, ma a tre scelte di fondo che, messe insieme, cambiano l&apos;esperienza d&apos;uso.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La semplicità.&lt;/strong&gt; OpenVPN e IPsec sono progetti enormi, con basi di codice difficili da verificare a fondo persino per gruppi di esperti. WireGuard nasce con l&apos;idea opposta: poche righe di codice, pensate per essere &quot;revisionabili in modo esaustivo da singoli individui&quot;. Meno codice significa meno superficie in cui possono nascondersi errori e meno cose da configurare a mano.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le prestazioni.&lt;/strong&gt; Sui sistemi Linux WireGuard vive dentro il kernel, il cuore del sistema operativo, invece di girare come programma separato. Questo evita continui passaggi tra i due mondi e si traduce in maggiore velocità, minore latenza e meno lavoro per il processore. La pagina ufficiale lo definisce &quot;notevolmente più performante di OpenVPN&quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La crittografia moderna.&lt;/strong&gt; WireGuard non lascia scegliere tra decine di algoritmi, come fanno i protocolli più vecchi. Ne usa un insieme fisso e aggiornato, basato sul &lt;em&gt;Noise protocol framework&lt;/em&gt; e su primitive come Curve25519, ChaCha20, Poly1305 e BLAKE2. Il vantaggio è sottile ma importante: dove non c&apos;è una negoziazione su quale algoritmo usare, non c&apos;è nemmeno il rischio che un attaccante la forzi verso una scelta debole.&lt;/p&gt;
&lt;h2&gt;Il cuore di WireGuard: chiavi e cryptokey routing&lt;/h2&gt;
&lt;p&gt;Qui sta la differenza più interessante rispetto a tanti sistemi tradizionali. WireGuard non usa username e password, un approccio a coppie di chiavi che si ritrova anche nelle firme crittografiche di &lt;a href=&quot;/blog/web-bot-auth&quot;&gt;Web Bot Auth&lt;/a&gt;. Ogni nodo della rete ha una &lt;strong&gt;coppia di chiavi&lt;/strong&gt;: una privata, che resta sulla macchina e non la lascia mai, e una pubblica, che viene condivisa con gli altri. Il meccanismo è lo stesso delle &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;chiavi SSH&lt;/a&gt;: chi possiede la mia chiave pubblica può cifrare traffico verso di me e verificare che sia davvero io a rispondere, ma non può fingersi me.&lt;/p&gt;
&lt;p&gt;Ogni interlocutore, nel gergo di WireGuard, si chiama &lt;em&gt;peer&lt;/em&gt;, cioè &quot;pari&quot;: non esiste una gerarchia rigida tra client e server, ci sono solo nodi che si parlano. Il collante che tiene insieme il tutto è quello che la documentazione ufficiale chiama &lt;strong&gt;cryptokey routing&lt;/strong&gt;: ogni chiave pubblica viene associata a una lista di indirizzi IP ammessi dentro il tunnel. Questa lista fa due lavori in uno. In uscita si comporta come una tabella di instradamento: decide verso quale peer, e con quale chiave, va cifrato un pacchetto. In ingresso si comporta come una lista di controllo accessi: accetta un pacchetto solo se arriva dal peer giusto e da un indirizzo che gli compete.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Peer]
PublicKey = &amp;lt;chiave-pubblica-dell-altro-nodo&amp;gt;
AllowedIPs = 10.0.0.2/32
Endpoint = altro-nodo.esempio.net:51820
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In poche righe c&apos;è tutto: chi è l&apos;altro nodo (la sua chiave), quali indirizzi gli spettano e dove raggiungerlo. Da questo legame tra chiave e indirizzo nasce un&apos;altra comodità, il &lt;em&gt;roaming&lt;/em&gt;: siccome un peer è identificato dalla sua chiave e non dal suo indirizzo di rete, se cambia connessione - per esempio un portatile che passa dal Wi-Fi alla rete mobile - il tunnel non si rompe. WireGuard scopre il nuovo indirizzo semplicemente dal punto da cui arrivano i dati correttamente cifrati.&lt;/p&gt;
&lt;h2&gt;WireGuard rispetto a OpenVPN e IPsec&lt;/h2&gt;
&lt;p&gt;La pagina ufficiale non gira intorno alla questione: WireGuard punta a essere &quot;più veloce, più semplice, più snello e più utile di IPsec&quot;. La stessa idea vale nel confronto con OpenVPN, con il vantaggio aggiuntivo di una base di codice molto più piccola e quindi più facile da controllare.&lt;/p&gt;
&lt;p&gt;Questo non vuol dire che le soluzioni più vecchie siano da buttare. IPsec resta lo standard più diffuso per far dialogare apparati di rete di produttori diversi, e OpenVPN sa attraversare firewall ostili facendosi passare per normale traffico web. Sono strumenti maturi, con anni di esperienza alle spalle. Il punto di WireGuard è un altro: per il caso comune di collegare in modo sicuro dei sistemi che si controllano, offre lo stesso risultato con meno codice, meno configurazione e meno modi di sbagliare.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Una VPN è un tunnel cifrato tra due punti che passa sopra Internet, e serve a metterli in comunicazione in modo sicuro: accesso remoto, collegamento tra reti o protezione della connessione. WireGuard è un modo recente di realizzarla, diventato popolare perché mette insieme tre cose difficili da avere tutte insieme: semplicità, prestazioni e crittografia moderna. Al posto di password usa coppie di chiavi come SSH, e lega ogni chiave agli indirizzi ammessi nel tunnel. Non rende obsoleti IPsec e OpenVPN, ma per molti scenari è oggi la strada più diretta.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi collegare uffici, server e sedi remote in modo sicuro?&quot; text=&quot;Progettiamo e gestiamo VPN WireGuard per accesso remoto e collegamenti site-to-site, dalla generazione delle chiavi alla configurazione dei peer.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.wireguard.com/&quot;&gt;WireGuard: fast, modern, secure VPN tunnel - sito ufficiale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.wireguard.com/protocol/&quot;&gt;WireGuard - Protocol &amp;amp; Cryptography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Virtual_private_network&quot;&gt;Virtual private network - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/WireGuard&quot;&gt;WireGuard - Wikipedia (kernel 5.6, piattaforme, autore)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cloudflare porta i container accanto ai Workers (beta pubblica)</title><link>https://initd.it/blog/cloudflare-workers-containers</link><guid isPermaLink="true">https://initd.it/blog/cloudflare-workers-containers</guid><description>Cloudflare ha aperto la beta pubblica dei Container: si possono eseguire carichi containerizzati vicino ai Workers, orchestrati dal codice, senza dover gestire cluster e regioni. Ecco cos&apos;è, a cosa serve e a che punto è.</description><pubDate>Wed, 25 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi sviluppa applicazioni web conosce due mondi che finora è stato scomodo tenere insieme. Da un lato le funzioni &quot;serverless&quot;, programmi piccoli e leggeri che partono all&apos;istante e reggono bene tanto traffico, ma con poca memoria e tempi di esecuzione stretti. Dall&apos;altro le applicazioni &quot;vere&quot;, quelle che hanno bisogno di un ambiente completo - un sistema operativo, librerie di sistema, un runtime specifico - e che di solito si impacchettano in un &lt;em&gt;container&lt;/em&gt;. Il 24 giugno 2025 Cloudflare, uno dei maggiori operatori di rete e CDN al mondo, ha aperto la &lt;strong&gt;beta pubblica&lt;/strong&gt; di un servizio che prova ad avvicinare questi due mondi: i Container, eseguibili accanto ai Workers e comandati dallo stesso codice.&lt;/p&gt;
&lt;h2&gt;Prima un ripasso: Worker e container&lt;/h2&gt;
&lt;p&gt;Vale la pena chiarire i due termini, perché è lì che sta la notizia.&lt;/p&gt;
&lt;p&gt;Un &lt;strong&gt;Worker&lt;/strong&gt; è un programmino che gira sui server di Cloudflare distribuiti nel mondo. È &quot;serverless&quot;: non c&apos;è un server da amministrare, il codice viene eseguito vicino a chi fa la richiesta, parte in una frazione di secondo e scala senza sforzo. In cambio è volutamente limitato: poca memoria, poco tempo di CPU, un ambiente ristretto pensato per JavaScript o WebAssembly. Perfetto per smistare richieste, applicare regole, comporre risposte; poco adatto a un lavoro pesante e prolungato.&lt;/p&gt;
&lt;p&gt;Un &lt;strong&gt;container&lt;/strong&gt; è invece un modo di impacchettare un&apos;applicazione insieme a tutto ciò che le serve per funzionare: il suo runtime, le librerie, i file di sistema. Il vantaggio è che gira uguale ovunque, indipendentemente dalla macchina sottostante. È il formato con cui oggi si distribuisce gran parte del software, dai backend agli strumenti a riga di comando.&lt;/p&gt;
&lt;p&gt;Il limite storico è che i Worker, da soli, non potevano ospitare un container: per quello serviva un&apos;infrastruttura separata, con le sue complessità. La novità è proprio questa: ora le due cose stanno sulla stessa piattaforma.&lt;/p&gt;
&lt;h2&gt;Cosa ha annunciato Cloudflare&lt;/h2&gt;
&lt;p&gt;In sintesi: si possono ora &lt;strong&gt;eseguire container accanto ai Workers&lt;/strong&gt;, sulla rete globale di Cloudflare, senza doversi occupare di orchestratori, cluster o regioni. Il servizio è disponibile in beta pubblica per chi ha un piano a pagamento.&lt;/p&gt;
&lt;p&gt;L&apos;idea di fondo la descrive bene la stessa Cloudflare: si usa un Worker quando serve essere leggeri e scalabili; si usa un container quando serve più potenza e libertà. I due non sono in concorrenza, lavorano insieme. Il Worker resta la porta d&apos;ingresso - riceve la richiesta, decide cosa farne - e quando c&apos;è da svolgere un compito impegnativo la passa a un container.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Hai un carico troppo pesante per il serverless ma non vuoi un intero cluster?&quot; text=&quot;Valutiamo se Worker, container o una VM dedicata sono la soluzione più adatta al tuo caso, senza sovradimensionare l&apos;infrastruttura.&quot; button=&quot;Valuta il tuo caso →&quot;}&lt;/p&gt;
&lt;h2&gt;Come si incastrano Worker e container&lt;/h2&gt;
&lt;p&gt;La parte interessante è che il container non si gestisce da un pannello a parte: lo si comanda dal codice del Worker. Un container viene descritto nel file di configurazione del progetto (&lt;code&gt;wrangler.jsonc&lt;/code&gt;) indicando l&apos;immagine da usare, e da lì il Worker lo può avviare, raggiungere e spegnere.&lt;/p&gt;
&lt;p&gt;Sotto il cofano l&apos;architettura si appoggia ai &lt;strong&gt;Durable Object&lt;/strong&gt;, un altro mattone di Cloudflare che serve a coordinare stato e istanze in modo ordinato. Il meccanismo è semplice da capire: a ogni identificativo diverso passato al container corrisponde un&apos;istanza isolata e dedicata. Serve un container per ogni utente, o per ogni lavoro? Basta usare un identificativo diverso e la piattaforma ne crea uno separato. È Cloudflare a scegliere in quali punti della rete far partire le istanze, con avvii nell&apos;ordine di pochi secondi.&lt;/p&gt;
&lt;p&gt;Anche il flusso di lavoro è pensato per essere corto. In locale si sviluppa con &lt;code&gt;wrangler dev&lt;/code&gt;, che costruisce l&apos;immagine del container automaticamente; per pubblicare si usa &lt;code&gt;wrangler deploy&lt;/code&gt;, senza dover gestire a mano un registro di immagini separato.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// wrangler.jsonc, in forma semplificata
{
  &quot;containers&quot;: [
    {
      &quot;class_name&quot;: &quot;MioContainer&quot;,
      &quot;image&quot;: &quot;./Dockerfile&quot;,
      &quot;instance_type&quot;: &quot;basic&quot;
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;A cosa serve&lt;/h2&gt;
&lt;p&gt;Gli usi tipici sono quelli in cui un Worker da solo non basta e finora si sarebbe dovuto tirare su un server dedicato:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Strumenti a riga di comando e lavori &quot;batch&quot;.&lt;/strong&gt; Programmi già esistenti, magari scritti in un linguaggio qualsiasi, che elaborano qualcosa e restituiscono un risultato.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elaborazione di media e dati.&lt;/strong&gt; Convertire un video o un&apos;immagine, trasformare file, eseguire pipeline che richiedono CPU, memoria e un disco vero: compiti che sforerebbero i limiti di un Worker, un po&apos; come succede quando un&apos;applicazione ha bisogno di una &lt;a href=&quot;/blog/gpu-serverless-cloud-run&quot;&gt;GPU per l&apos;inferenza AI&lt;/a&gt; e non basta più una funzione leggera.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backend in qualunque linguaggio.&lt;/strong&gt; Un&apos;applicazione già impacchettata come container può girare così com&apos;è, con un Worker davanti che fa da instradatore.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ambienti isolati per codice non fidato.&lt;/strong&gt; Dare a ogni utente un container separato, ad esempio per eseguire codice generato o inviato da terzi senza che si influenzino a vicenda. È uno scenario citato anche per gli agenti AI e i &lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;server MCP&lt;/a&gt; a cui si collegano, che spesso hanno bisogno di uno spazio isolato in cui operare.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Perché abbassa la barriera&lt;/h2&gt;
&lt;p&gt;Il punto pratico è qui. Far girare container in tante parti del mondo, oggi, significa in genere occuparsi di parecchia infrastruttura, la stessa che di solito si descrive e si versiona con strumenti di &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;Infrastructure as Code&lt;/a&gt;: scegliere le regioni, mettere in piedi un orchestratore (spesso Kubernetes), configurare il bilanciamento, gestire la scalabilità e gli aggiornamenti. È un lavoro che richiede competenze specifiche e tempo continuo di manutenzione.&lt;/p&gt;
&lt;p&gt;L&apos;approccio proposto sposta questo peso sulla piattaforma. Non si scelgono le regioni: è la rete a decidere dove eseguire. Non si configura un cluster: si dichiara un container e lo si comanda da codice. Per chi ha un carico che oggi non entra in una funzione serverless ma non giustifica la gestione di un intero cluster, è un modo per stare nel mezzo con meno attrito.&lt;/p&gt;
&lt;p&gt;Va detto con onestà che &quot;meno infrastruttura da gestire&quot; significa anche meno controllo fine e un legame più stretto con una singola piattaforma, lo stesso compromesso da mettere sul piatto quando si &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;sceglie un provider cloud&lt;/a&gt;. È un compromesso, non un pasto gratis: conviene valutarlo caso per caso.&lt;/p&gt;
&lt;h2&gt;Come si paga e quali limiti ci sono&lt;/h2&gt;
&lt;p&gt;Il modello di costo è a consumo e a grana fine: si paga solo mentre il container è effettivamente in esecuzione, misurato a intervalli molto brevi (nell&apos;ordine dei 10 millisecondi), con CPU, memoria e disco conteggiati separatamente. Dopo un periodo di inattività il container va in pausa da solo, così non si paga per tempo morto. Il piano a pagamento include una quota mensile; i numeri esatti sono sulla pagina dei prezzi.&lt;/p&gt;
&lt;p&gt;Alla partenza sono previste tre taglie di istanza - indicativamente da 256 MiB fino a qualche GiB di memoria, con quote di CPU e disco crescenti - e, trattandosi di una beta, ci sono tetti complessivi per account. Sono limiti pensati per la fase di prova e destinati a crescere: Cloudflare ha indicato tra i lavori futuri istanze più grandi, numeri più alti e uno scaling automatico con instradamento sensibile alla latenza, oltre a un&apos;integrazione più stretta con gli altri servizi della piattaforma (archiviazione, database, chiavi-valore).&lt;/p&gt;
&lt;h2&gt;A che punto è&lt;/h2&gt;
&lt;p&gt;Serve la solita prudenza. Si tratta di una &lt;strong&gt;beta pubblica&lt;/strong&gt;: aperta a chiunque abbia un piano a pagamento, ma pur sempre una fase di prova, con limiti stretti e funzionalità ancora in evoluzione. Alcune cose che ci si aspetta da una piattaforma matura - lo scaling automatico, le istanze più capienti, alcune integrazioni - sono dichiarate come in arrivo, non come già presenti.&lt;/p&gt;
&lt;p&gt;L&apos;idea di fondo, però, è concreta e già sperimentabile: portare i container dove già girano i Workers, e comandarli con lo stesso codice, invece di tenere due infrastrutture separate. Per chi oggi fatica a incastrare carichi pesanti in un ambiente serverless, vale la pena provarla su un progetto piccolo, tenendo conto che è ancora una beta e che il conto va guardato con attenzione mentre si sperimenta.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi portare in produzione un carico containerizzato senza gestire un cluster?&quot; text=&quot;Progettiamo e gestiamo infrastrutture cloud su misura, dai Worker ai container fino ai server tradizionali, scegliendo lo strumento giusto per ogni componente.&quot; button=&quot;Parliamo del progetto →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/containers-are-available-in-public-beta-for-simple-global-and-programmable/&quot;&gt;Containers are available in public beta for simple, global, and programmable compute (Cloudflare Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/containers/&quot;&gt;Cloudflare Containers - Overview (Cloudflare Docs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/cloudflare-containers-coming-2025/&quot;&gt;Simple, scalable, and global: Containers are coming to Cloudflare Workers in 2025 (Cloudflare Blog)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Gemini CLI: un assistente AI open source nel terminale</title><link>https://initd.it/blog/gemini-cli-assistente-ai-terminale</link><guid isPermaLink="true">https://initd.it/blog/gemini-cli-assistente-ai-terminale</guid><description>Google ha rilasciato Gemini CLI, un agente AI open source che vive nel terminale. Cosa fa, com&apos;è la licenza, i limiti gratuiti e le cautele per chi amministra server e scrive codice.</description><pubDate>Wed, 25 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi amministra server o scrive codice passa gran parte della giornata nel terminale: la finestra a testo dove si digitano comandi per far lavorare il computer. Molti assistenti basati sull&apos;intelligenza artificiale, invece, vivono nel browser o dentro l&apos;editor. C&apos;è quindi un salto continuo tra il posto dove si fa il lavoro e il posto dove si chiede aiuto. Gemini CLI, annunciato da Google il 25 giugno 2025, prova a togliere quel salto: porta un assistente AI dentro il terminale, dove il lavoro succede davvero.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è Gemini CLI&lt;/h2&gt;
&lt;p&gt;Partiamo dai termini. &lt;strong&gt;CLI&lt;/strong&gt; sta per &lt;em&gt;command-line interface&lt;/em&gt;, cioè interfaccia a riga di comando: il modo di usare un programma scrivendo comandi testuali invece di cliccare su pulsanti. Un &lt;strong&gt;agente AI&lt;/strong&gt; è un programma che, oltre a rispondere a domande, può compiere azioni concrete per conto di chi lo usa: leggere file, eseguire comandi, cercare informazioni.&lt;/p&gt;
&lt;p&gt;Gemini CLI mette insieme le due cose. Si installa sul proprio computer, si avvia dal terminale e si dialoga con esso in linguaggio naturale, come si scriverebbe a un collega. Dietro le quinte usa &lt;strong&gt;Gemini&lt;/strong&gt;, la famiglia di modelli AI di Google. Al momento del lancio l&apos;assistente si appoggia a Gemini 2.5 Pro, un modello con una &lt;strong&gt;finestra di contesto&lt;/strong&gt; da un milione di token, poi affiancato dalla generazione successiva descritta in &lt;a href=&quot;/blog/gemini-3&quot;&gt;Gemini 3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vale la pena spiegare quest&apos;ultimo punto. Un &lt;em&gt;token&lt;/em&gt; è un pezzetto di testo, più o meno una sillaba o una parola breve; la finestra di contesto è la quantità di testo che il modello riesce a tenere presente in una sola conversazione. Un milione di token è molto: significa poter passare al modello interi progetti, file di log lunghi o documentazione estesa senza doverli spezzare a mano.&lt;/p&gt;
&lt;h2&gt;Cosa sa fare&lt;/h2&gt;
&lt;p&gt;L&apos;annuncio e la documentazione descrivono un assistente generico, non legato a un solo compito. Le cose principali che sa fare:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Leggere e capire il codice&lt;/strong&gt; di un progetto, spiegarlo, proporre modifiche.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eseguire comandi&lt;/strong&gt; nel terminale e &lt;strong&gt;modificare file&lt;/strong&gt;, sempre nella cartella su cui si sta lavorando.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cercare sul web&lt;/strong&gt; tramite Google Search per basare le risposte su informazioni aggiornate, invece che solo sulla conoscenza con cui il modello è stato addestrato.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Farsi guidare da istruzioni scritte&lt;/strong&gt;: si può creare un file chiamato &lt;code&gt;GEMINI.md&lt;/code&gt; con regole e contesto specifici del progetto, così l&apos;assistente le tiene sempre presenti, un&apos;idea vicina a quella degli &lt;a href=&quot;/blog/agent-skills&quot;&gt;Agent Skills&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Due caratteristiche meritano attenzione perché contano soprattutto per chi lavora con i server.&lt;/p&gt;
&lt;p&gt;La prima è il supporto a &lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;&lt;strong&gt;MCP&lt;/strong&gt;&lt;/a&gt;, sigla di &lt;em&gt;Model Context Protocol&lt;/em&gt;. È uno standard aperto, nato per collegare gli assistenti AI a strumenti e sorgenti di dati esterni in modo uniforme. In pratica MCP fa da spina universale: permette di aggiungere a Gemini CLI la capacità di parlare con altri sistemi (un database, un servizio interno, un&apos;API aziendale) senza reinventare ogni volta il collegamento.&lt;/p&gt;
&lt;p&gt;La seconda è l&apos;&lt;strong&gt;uso non interattivo&lt;/strong&gt;. Oltre alla modalità a dialogo, l&apos;assistente si può richiamare dentro uno script passandogli la richiesta direttamente. Questo lo rende un pezzo utilizzabile dentro l&apos;automazione, non solo uno strumento da usare a mano.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Avviarlo senza installare nulla in modo permanente
npx @google/gemini-cli

# Richiesta singola, senza interfaccia, adatta agli script
gemini -p &quot;Spiega l&apos;architettura di questo progetto&quot;

# Output in formato JSON, più facile da elaborare in automatico
gemini -p &quot;Elenca i servizi definiti&quot; --output-format json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Vuoi capire se un agente da riga di comando ha senso nel tuo flusso di lavoro?&quot; text=&quot;Valutiamo dove inserirlo, quali dati può vedere e con quali limiti d&apos;uso.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Open source, con una precisazione&lt;/h2&gt;
&lt;p&gt;Il codice di Gemini CLI è pubblicato su GitHub con &lt;strong&gt;licenza Apache 2.0&lt;/strong&gt;. È una licenza open source permissiva molto diffusa: consente di usare, modificare e ridistribuire il programma, anche in contesti commerciali, con obblighi minimi. Concretamente vuol dire che chiunque può leggere il codice per capire cosa fa, segnalare problemi, proporre correzioni o adattarlo alle proprie esigenze. Per uno strumento che esegue comandi sul proprio computer, poter ispezionare il codice non è un dettaglio.&lt;/p&gt;
&lt;p&gt;Serve però una precisazione onesta, perché la parola &quot;open source&quot; qui riguarda una parte sola. Ad essere aperto è il programma che si installa in locale, cioè l&apos;agente. Il &lt;strong&gt;modello Gemini&lt;/strong&gt;, invece, resta un servizio di Google che gira sui suoi data center: non è open source e non è scaricabile. Detto altrimenti, le richieste e il contesto (il testo, il codice, i file che si condividono) vengono inviati ai server di Google per essere elaborati. Il calcolo avviene nel cloud, non sul proprio computer.&lt;/p&gt;
&lt;h2&gt;Quanto costa e i limiti d&apos;uso&lt;/h2&gt;
&lt;p&gt;Al lancio Google offre un accesso gratuito legato al proprio account Google personale. I limiti dichiarati sono 60 richieste al minuto e 1.000 richieste al giorno, senza costi. Nel pacchetto gratuito è inclusa anche una licenza base di Gemini Code Assist, il servizio di assistenza al codice della stessa famiglia.&lt;/p&gt;
&lt;p&gt;Per chi ha bisogno di più - per esempio un&apos;azienda o un uso intensivo - ci sono le alternative a pagamento: si possono usare le chiavi di Google AI Studio o di Vertex AI, con fatturazione a consumo, oppure le licenze Gemini Code Assist Standard ed Enterprise. La versione gratuita basta per provarlo e per un uso personale; oltre una certa soglia si passa a un piano a pagamento.&lt;/p&gt;
&lt;h2&gt;Perché interessa a sistemisti e sviluppatori&lt;/h2&gt;
&lt;p&gt;Il valore non sta nella novità in sé, ma in dove si colloca lo strumento. Chi gestisce sistemi ha già il terminale aperto: avere lì un assistente evita di cambiare contesto. Alcuni usi pratici che ricorrono nel lavoro quotidiano:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Farsi spiegare un messaggio di errore o un pezzo di file di log senza incollarlo altrove.&lt;/li&gt;
&lt;li&gt;Ottenere una bozza di comando o di configurazione da rivedere, invece di scriverla da zero.&lt;/li&gt;
&lt;li&gt;Capire in fretta un progetto ereditato da altri, chiedendo una descrizione della sua struttura.&lt;/li&gt;
&lt;li&gt;Inserire una richiesta all&apos;assistente dentro uno script, sfruttando la modalità non interattiva.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il fatto di essere open source e basato su uno standard aperto come MCP riduce inoltre il rischio di restare legati a un solo fornitore per la parte client: il programma si può leggere, adattare e, in teoria, collegare ad altri strumenti.&lt;/p&gt;
&lt;h2&gt;I limiti e le cautele&lt;/h2&gt;
&lt;p&gt;Prima di adottarlo conviene tenere presenti alcuni punti, senza entusiasmi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;È in preview.&lt;/strong&gt; Google lo descrive come versione in anteprima: può contenere errori, comportamenti che cambiano e funzioni ancora instabili. Non è il caso di costruirci sopra processi critici senza un&apos;alternativa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I dati escono dal computer.&lt;/strong&gt; Poiché il modello gira nel cloud, ciò che si condivide con l&apos;assistente viene inviato a Google. Per contenuti riservati - codice proprietario, credenziali, dati di clienti - è un aspetto da valutare con attenzione e da regolare secondo le proprie politiche, anche alla luce dei requisiti del &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;GDPR lato infrastruttura&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Esegue comandi e modifica file.&lt;/strong&gt; È la sua forza, ma anche il suo rischio. Un agente che può lanciare comandi va supervisionato: conviene rivedere ciò che propone prima di autorizzarlo, soprattutto su sistemi in produzione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Può sbagliare.&lt;/strong&gt; Come ogni modello di questo tipo, a volte produce risposte errate o inventate. L&apos;output va trattato come una bozza da verificare, non come una verità da applicare così com&apos;è.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Gemini CLI è un agente AI che vive nel terminale: legge codice, esegue comandi, cerca sul web e si può richiamare dentro gli script. Il programma è open source con licenza Apache 2.0, mentre il modello Gemini che lo alimenta resta un servizio nel cloud di Google. C&apos;è un piano gratuito con limiti generosi e opzioni a pagamento per usi più intensi. È utile perché mette l&apos;assistente dove sistemisti e sviluppatori già lavorano, ma va usato con giudizio: è in anteprima, invia i dati al cloud e può eseguire azioni sul sistema. Uno strumento in più, da tenere sotto controllo, non un pilota automatico.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi automatizzare compiti sistemistici con un agente AI, in sicurezza?&quot; text=&quot;Integriamo strumenti come Gemini CLI nei flussi di lavoro dei server che gestiamo, definendo cosa può eseguire e quali dati non deve mai vedere.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.google/innovation-and-ai/technology/developers-tools/introducing-gemini-cli-open-source-ai-agent/&quot;&gt;Introducing Gemini CLI: your open-source AI agent - The Keyword, Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/google-gemini/gemini-cli&quot;&gt;google-gemini/gemini-cli - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>GPU serverless su Cloud Run: pagare l&apos;inferenza solo quando serve</title><link>https://initd.it/blog/gpu-serverless-cloud-run</link><guid isPermaLink="true">https://initd.it/blog/gpu-serverless-cloud-run</guid><description>Google ha reso disponibile a tutti il supporto GPU su Cloud Run, con scale-to-zero e pagamento al secondo. Cosa vuol dire servire modelli AI senza tenere acceso un cluster, e cosa valutare.</description><pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A giugno 2025 Google ha portato alla disponibilità generale il supporto alle GPU su Cloud Run, il suo servizio &quot;serverless&quot;. In pratica: si può servire un modello di intelligenza artificiale su una scheda grafica che si accende solo quando arriva una richiesta e si spegne quando non c&apos;è nulla da fare, pagando solo i secondi effettivamente usati. Sembra un dettaglio tecnico, ma tocca una voce di spesa che oggi pesa parecchio. Vale la pena spiegare, senza tecnicismi inutili, cosa cambia e quando conviene davvero.&lt;/p&gt;
&lt;h2&gt;Due parole sui termini: &quot;GPU&quot;, &quot;inferenza&quot;, &quot;serverless&quot;&lt;/h2&gt;
&lt;p&gt;Una &lt;strong&gt;GPU&lt;/strong&gt; è una scheda grafica: un tipo di processore nato per i videogiochi, capace di fare tantissimi calcoli in parallelo. Proprio per questo è diventata lo strumento standard per l&apos;intelligenza artificiale, che è fatta in gran parte di calcoli ripetuti su grandi quantità di numeri.&lt;/p&gt;
&lt;p&gt;Con &lt;strong&gt;inferenza&lt;/strong&gt; si intende l&apos;uso di un modello già addestrato: non lo si sta insegnando, gli si fa solo una domanda e si aspetta la risposta. Quando si scrive a un assistente e questo risponde, quello è un lavoro di inferenza. Serve una GPU perché avvenga in fretta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Serverless&lt;/strong&gt; è il modello di noleggio dietro tutto questo. Non significa &quot;senza server&quot;: i server ci sono, ma non li si affitta a tempo fisso. Si consegna il proprio programma al fornitore, che lo avvia quando arriva una richiesta e lo spegne quando il traffico cala, addebitando solo il tempo di calcolo consumato. &lt;strong&gt;Cloud Run&lt;/strong&gt; è il servizio serverless di Google: finora lavorava con i normali processori, ora sa usare anche le GPU, un&apos;evoluzione non lontana da quella che ha portato &lt;a href=&quot;/blog/cloudflare-workers-containers&quot;&gt;i container accanto ai Worker di Cloudflare&lt;/a&gt; sul fronte dei carichi più pesanti.&lt;/p&gt;
&lt;h2&gt;Perché conta: il costo di una GPU sempre accesa&lt;/h2&gt;
&lt;p&gt;Il problema che questo annuncio affronta è concreto e riguarda chiunque voglia offrire una funzione basata sull&apos;AI: una chat, un generatore di immagini, un sistema che analizza testi o foto, magari collegato a strumenti esterni tramite standard come &lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;MCP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nel modo tradizionale si affitta una macchina con GPU e la si tiene accesa. Il punto è che si paga anche mentre non arriva nessuna richiesta. Una scheda grafica da data center costa parecchio all&apos;ora, e il traffico di quasi ogni servizio non è costante: ci sono i picchi e ci sono le ore morte, la notte, i giorni festivi. Tenere il &quot;motore&quot; acceso h24 per servire richieste concentrate in poche ore vuol dire pagare soprattutto il tempo in cui la GPU sta ferma ad aspettare.&lt;/p&gt;
&lt;p&gt;L&apos;alternativa era spegnere e riaccendere a mano, oppure gestire da soli un sistema che aggiunge e toglie macchine a seconda del carico: fattibile, ma è lavoro da mantenere. L&apos;idea del serverless con GPU è togliere di mezzo tutto questo: se non ci sono richieste, non c&apos;è nulla acceso e non si paga nulla.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Stai pagando una GPU accesa anche quando nessuno la usa?&quot; text=&quot;Verifichiamo il traffico reale del tuo servizio AI e valutiamo se il serverless con GPU riduce davvero il conto nel tuo caso.&quot; button=&quot;Verifica il tuo caso →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa ha annunciato Google&lt;/h2&gt;
&lt;p&gt;Il supporto GPU su Cloud Run è passato dalla fase di anteprima alla &lt;strong&gt;disponibilità generale&lt;/strong&gt;, cioè è considerato pronto per l&apos;uso in produzione ed è coperto dagli impegni di servizio del prodotto. I punti principali:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La GPU offerta è la &lt;strong&gt;NVIDIA L4&lt;/strong&gt;, con &lt;strong&gt;24 GB di memoria dedicata&lt;/strong&gt; alla scheda. È un modello pensato proprio per l&apos;inferenza, non per l&apos;addestramento dei modelli più grandi.&lt;/li&gt;
&lt;li&gt;Vale il principio del serverless: &lt;strong&gt;scale-to-zero&lt;/strong&gt;, cioè quando non arrivano richieste il numero di istanze scende a zero e i costi della GPU si azzerano; e &lt;strong&gt;pagamento al secondo&lt;/strong&gt;, si paga solo la GPU effettivamente consumata.&lt;/li&gt;
&lt;li&gt;Non serve più fare una &lt;strong&gt;richiesta di quota&lt;/strong&gt;: la GPU L4 è disponibile a tutti gli account, basta attivarla.&lt;/li&gt;
&lt;li&gt;Google dichiara che un&apos;istanza con GPU e driver già installati &lt;strong&gt;si avvia in circa 5 secondi&lt;/strong&gt;. È il tempo per rendere la scheda pronta; a questo va poi aggiunto il caricamento del modello.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Per dare un&apos;idea del tempo complessivo, Google riporta un esempio con un modello linguistico di piccole dimensioni in cui la prima risposta arriva in circa 19 secondi partendo da zero istanze: dentro quei secondi ci sono l&apos;avvio, il caricamento del modello e la generazione. È un numero d&apos;esempio del fornitore, legato a quel modello specifico, non una garanzia valida per ogni caso.&lt;/p&gt;
&lt;h2&gt;Come si usa, in breve&lt;/h2&gt;
&lt;p&gt;Chi ha già dimestichezza con Cloud Run trova la GPU come un&apos;opzione in più. Attivarla via console è una casella da spuntare; da riga di comando è un parametro. Un esempio di distribuzione di un modello con lo strumento Ollama:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcloud run deploy mio-servizio \
  --image ollama/ollama --port 11434 \
  --gpu 1 --cpu 4 --memory 16Gi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Per la GPU L4 è richiesto un minimo di &lt;strong&gt;4 CPU e 16 GiB di memoria&lt;/strong&gt; per istanza. Il servizio supporta lo streaming della risposta sia su HTTP sia su WebSocket: significa che il testo può arrivare all&apos;utente man mano che viene generato, come nelle chat, invece di comparire tutto insieme alla fine.&lt;/p&gt;
&lt;h2&gt;Dove è disponibile e con quali condizioni&lt;/h2&gt;
&lt;p&gt;Al momento del lancio le GPU su Cloud Run sono attive in &lt;strong&gt;cinque regioni&lt;/strong&gt;: Iowa (Stati Uniti), Belgio e Paesi Bassi (Europa), Singapore e Mumbai (Asia). La copertura è quindi ancora parziale, come è normale per una funzione appena arrivata alla disponibilità generale; Google indica altre regioni in arrivo.&lt;/p&gt;
&lt;p&gt;Di base le istanze con GPU sono distribuite su più zone della stessa regione, per resistere al guasto di una singola zona. Si può rinunciare a questa ridondanza per spendere meno, accettando un ripristino &quot;best effort&quot;, cioè non garantito, in caso di problema di zona.&lt;/p&gt;
&lt;p&gt;Oltre ai servizi che rispondono a richieste in tempo reale, Google sta estendendo le GPU anche ai &lt;strong&gt;job di Cloud Run&lt;/strong&gt;, cioè le elaborazioni a lotti che partono, fanno un lavoro e finiscono: ritocco di un modello su dati propri, inferenza su grandi quantità di immagini o testi, conversione di video. Al momento dell&apos;annuncio questa parte è in anteprima privata, quindi non ancora aperta a tutti.&lt;/p&gt;
&lt;h2&gt;Cosa valutare prima di adottarlo&lt;/h2&gt;
&lt;p&gt;Il serverless con GPU risolve un problema preciso, ma non è la risposta a tutto. Alcuni punti da tenere presenti.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;L&apos;avvio a freddo ha un costo di tempo.&lt;/strong&gt; Se il servizio è sceso a zero, la prima richiesta dopo una pausa deve aspettare l&apos;accensione dell&apos;istanza e il caricamento del modello. Per un uso interattivo qualche secondo di attesa iniziale può dare fastidio. Chi ha bisogno di risposte sempre immediate può tenere una istanza minima sempre attiva, ma così rinuncia in parte al risparmio dello scale-to-zero. È un compromesso da tarare sul proprio traffico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La L4 è una scheda da inferenza.&lt;/strong&gt; Ha 24 GB di memoria: va bene per modelli di dimensioni piccole e medie e per servire richieste. Non è pensata per addestrare da zero i modelli più grandi, che richiedono schede diverse e ben più memoria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Il conto va fatto sul proprio caso.&lt;/strong&gt; Il serverless conviene quando il traffico è discontinuo, con picchi e lunghe pause. Se invece la GPU è usata quasi in continuazione, una macchina affittata a tempo fisso può costare meno. La domanda giusta non è &quot;quanto costa un secondo di GPU&quot;, ma &quot;quante ore reali al giorno la userei davvero&quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attenzione al legame con il fornitore.&lt;/strong&gt; Impacchettare il proprio servizio per Cloud Run è semplice, ma il modo in cui si scala, si fattura e si configura è specifico di Google. Spostare tutto altrove in futuro richiede lavoro. Non è un difetto, è un dato da mettere in conto, lo stesso genere di valutazione utile quando si &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;confrontano i provider cloud&lt;/a&gt; in generale.&lt;/p&gt;
&lt;p&gt;In sintesi, l&apos;idea di fondo è ragionevole e affronta una spesa reale: pagare una GPU solo mentre lavora, invece di tenerla accesa a vuoto. Per servizi AI con traffico irregolare può ridurre il costo in modo sensibile e togliere la fatica di gestire l&apos;accensione delle macchine. Per carichi costanti o modelli molto grandi, invece, restano più adatte le soluzioni tradizionali. Come sempre, la scelta giusta è quella misurata sul proprio caso, non sul numero d&apos;esempio del comunicato.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere in produzione un servizio AI senza sovrapagare l&apos;infrastruttura?&quot; text=&quot;Progettiamo e gestiamo backend AI su Google Cloud, dal deploy su Cloud Run al monitoraggio dei costi, misurando la scelta sul tuo traffico reale.&quot; button=&quot;Ottimizza i costi →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://cloud.google.com/blog/products/serverless/cloud-run-gpus-are-now-generally-available&quot;&gt;Cloud Run GPUs are now generally available (Google Cloud Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.cloud.google.com/run/docs/configuring/services/gpu&quot;&gt;GPU support for services (Cloud Run Documentation)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è un bastion host e perché rende l&apos;accesso SSH più sicuro</title><link>https://initd.it/blog/bastion-host-accesso-ssh-sicuro</link><guid isPermaLink="true">https://initd.it/blog/bastion-host-accesso-ssh-sicuro</guid><description>Cos&apos;è un bastion host (o jump host): l&apos;unico punto d&apos;ingresso controllato verso una rete privata, perché riduce la superficie d&apos;attacco e come si colloca in un&apos;architettura SSH.</description><pubDate>Tue, 08 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Per amministrare un server a distanza si usa quasi sempre &lt;strong&gt;SSH&lt;/strong&gt; (&lt;em&gt;Secure Shell&lt;/em&gt;), un protocollo che permette di collegarsi a una macchina e impartire comandi da un altro computer, in modo cifrato. Finché i server sono uno o due, gestire questi accessi è semplice. Il problema nasce quando diventano dieci, cinquanta o cento. Aprire l&apos;accesso SSH di ognuno verso Internet significa lasciare tante porte, e ogni porta è qualcosa da sorvegliare. Il &lt;strong&gt;bastion host&lt;/strong&gt; è la risposta più diffusa a questo problema: invece di esporre tutti i server, se ne espone uno solo, controllato, e si passa da lì.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è un bastion host&lt;/h2&gt;
&lt;p&gt;Un bastion host (in italiano &quot;host bastione&quot;, spesso chiamato anche &lt;em&gt;jump host&lt;/em&gt; o &lt;em&gt;jump box&lt;/em&gt;, cioè &quot;host di salto&quot;) è una macchina che fa da unico punto d&apos;ingresso verso una rete privata. Il glossario del &lt;strong&gt;NIST&lt;/strong&gt;, l&apos;ente statunitense che pubblica standard di sicurezza informatica, lo definisce come un computer con uno scopo specifico su una rete, progettato e configurato appositamente per resistere agli attacchi.&lt;/p&gt;
&lt;p&gt;L&apos;idea di fondo è semplice. Nessuno si collega direttamente ai server interni. Ci si collega prima al bastion e, da lì, si raggiunge la destinazione. I server interni, dal canto loro, accettano connessioni SSH soltanto dal bastion e da nessun altro. È la macchina in prima linea: l&apos;unica raggiungibile dall&apos;esterno e, proprio per questo, quella tenuta con più cura.&lt;/p&gt;
&lt;h2&gt;Il problema: esporre tutti i server&lt;/h2&gt;
&lt;p&gt;Per capire perché serve, aiuta il concetto di &lt;strong&gt;superficie d&apos;attacco&lt;/strong&gt;: l&apos;insieme di tutti i punti da cui qualcuno potrebbe tentare di entrare. Ogni server con la porta SSH aperta verso Internet è uno di questi punti. E non è un rischio teorico: qualsiasi indirizzo pubblico riceve di continuo &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;tentativi automatici di accesso, condotti da programmi che provano credenziali in sequenza&lt;/a&gt; sperando di indovinarne una.&lt;/p&gt;
&lt;p&gt;Con un solo server è un problema gestibile. Con venti diventa ingovernabile, per tre motivi che si sommano:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manutenzione.&lt;/strong&gt; Ogni macchina esposta va aggiornata, sorvegliata e mantenuta allineata alle stesse regole. Tenere venti server perfettamente in pari è molto più difficile che tenerne uno.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracciabilità.&lt;/strong&gt; Se l&apos;accesso è possibile ovunque, la traccia di chi è entrato è sparsa su venti sistemi diversi. Rispondere alla domanda &quot;chi si è collegato a quel server ieri sera?&quot; diventa una piccola indagine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autenticazione.&lt;/strong&gt; Alzare le difese, per esempio aggiungendo un secondo fattore di verifica, va fatto su ogni macchina. Venti volte lo stesso lavoro, con venti occasioni di sbagliare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La superficie d&apos;attacco, insomma, cresce con il numero di porte aperte. Ridurne il numero è già di per sé una difesa.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Quanti server della tua azienda hanno ancora la porta SSH aperta su internet?&quot; text=&quot;Verifichiamo quali macchine sono esposte direttamente e valutiamo se un bastion host ridurrebbe davvero il rischio.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Un solo punto d&apos;ingresso: come funziona&lt;/h2&gt;
&lt;p&gt;Un paragone utile è la reception di un edificio con molti uffici. I visitatori non entrano da qualsiasi porta: passano dalla reception, si identificano, firmano il registro. Solo dopo raggiungono l&apos;ufficio giusto. Se qualcuno vuole controllare chi è entrato e quando, guarda un registro solo, non venti.&lt;/p&gt;
&lt;p&gt;Il bastion host è quella reception. Concentra in un unico punto le operazioni che altrimenti andrebbero replicate ovunque: verificare l&apos;identità di chi si collega, decidere chi può entrare e da dove, registrare ogni accesso. I server interni non hanno bisogno di occuparsene, perché si fidano del fatto che chiunque arrivi da loro è già passato dal controllo alla frontiera.&lt;/p&gt;
&lt;h2&gt;Perché riduce la superficie d&apos;attacco&lt;/h2&gt;
&lt;p&gt;Il vantaggio principale è proprio questo: da tante porte esposte si passa a una sola. Invece di difendere venti macchine allo stesso livello, se ne difende bene una, e le altre restano irraggiungibili dall&apos;esterno.&lt;/p&gt;
&lt;p&gt;Su quella macchina, poi, conviene tenere il minimo indispensabile. Un bastion ben fatto non ospita siti, database o altri servizi: il suo unico compito è far passare le connessioni. Meno software gira su una macchina, meno sono i possibili punti deboli. Lo nota anche il NIST: i bastion host, dovendo stare in prima linea, sono di norma configurati con il minor numero possibile di servizi attivi, lo stesso principio che porta a &lt;a href=&quot;/blog/aws-s3-sse-c-default&quot;&gt;disattivare per difetto le funzioni usate raramente&lt;/a&gt;, proprio per ridurre la superficie d&apos;attacco.&lt;/p&gt;
&lt;h2&gt;Accessi tracciati e verificati in un punto solo&lt;/h2&gt;
&lt;p&gt;Concentrare l&apos;ingresso porta due benefici che valgono da soli lo sforzo.&lt;/p&gt;
&lt;p&gt;Il primo è la &lt;strong&gt;tracciabilità&lt;/strong&gt;. Se ogni accesso passa da un unico host, i registri (i &lt;em&gt;log&lt;/em&gt;) di chi entra, quando e con quale identità sono tutti in un posto, un requisito che si allinea bene ai principi di &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;accountability richiesti anche dal GDPR&lt;/a&gt;. Spedendoli in tempo reale verso un sistema di raccolta separato, la traccia resta al sicuro anche se il bastion venisse compromesso. La domanda &quot;chi si è collegato ieri sera?&quot; diventa una ricerca nei log, non un&apos;indagine.&lt;/p&gt;
&lt;p&gt;Il secondo è l&apos;&lt;strong&gt;autenticazione forte&lt;/strong&gt;. Un metodo molto usato per rendere più sicuro un accesso è l&apos;&lt;strong&gt;MFA&lt;/strong&gt; (&lt;em&gt;Multi-Factor Authentication&lt;/em&gt;, autenticazione a più fattori): oltre alla credenziale abituale, si richiede un secondo elemento, per esempio un codice temporaneo generato da un&apos;app sul telefono. Anche se qualcuno rubasse la password, senza il secondo fattore non entrerebbe. Con un bastion, questa protezione si imposta una volta sola, nel punto d&apos;ingresso, invece di configurarla su ogni server. Discorso a parte meritano gli accessi automatici, quelli di uno script o di una procedura di rilascio, che un secondo fattore non possono digitarlo: lì la strada è un&apos;altra, e la trovi in &lt;a href=&quot;/blog/secrets-nelle-pipeline&quot;&gt;come si conservano le credenziali di una pipeline&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;ProxyJump: attraversare il bastion nel modo giusto&lt;/h2&gt;
&lt;p&gt;Per anni il &quot;salto&quot; attraverso il bastion si faceva a mano: ci si collegava al bastion e da lì si lanciava un secondo comando SSH verso il server interno. Funziona, ma è scomodo e non è la scelta migliore dal punto di vista della sicurezza, perché la connessione verso la destinazione finale nasce e vive sulla macchina più esposta.&lt;/p&gt;
&lt;p&gt;Dalla versione 7.3, OpenSSH (l&apos;implementazione di SSH più diffusa) offre un&apos;opzione dedicata, &lt;strong&gt;ProxyJump&lt;/strong&gt;, con il relativo flag &lt;code&gt;-J&lt;/code&gt;. Le note di rilascio la descrivono in modo diretto: aggiunge l&apos;opzione ProxyJump e il comando &lt;code&gt;-J&lt;/code&gt; per semplificare l&apos;accesso indiretto attraverso uno o più bastion, o &quot;jump host&quot;. Dal lato di chi si collega, il salto diventa un dettaglio invisibile:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Un solo comando: il passaggio dal bastion è automatico
ssh -J bastion.example.com server-interno.lan
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Meglio ancora, si può salvare la configurazione nel file &lt;code&gt;~/.ssh/config&lt;/code&gt; del proprio computer e dimenticarsene:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Host server-interno
    HostName 10.0.5.20
    ProxyJump bastion.example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La differenza non è solo di comodità. Con ProxyJump il bastion si limita a inoltrare i dati verso la destinazione, mentre la connessione SSH resta cifrata da un capo all&apos;altro tra il proprio computer e il server interno. In pratica il bastion fa passare dati che non è in grado di leggere. Da evitare, invece, la scorciatoia dell&apos;&lt;em&gt;agent forwarding&lt;/em&gt;, che renderebbe la propria chiave di accesso utilizzabile dal bastion stesso: la documentazione ufficiale invita a usarla con cautela, ed è per questo che di default è disattivata.&lt;/p&gt;
&lt;h2&gt;Dove si colloca in un&apos;architettura&lt;/h2&gt;
&lt;p&gt;Il bastion funziona solo se la rete è organizzata di conseguenza. L&apos;assetto tipico prevede la &lt;strong&gt;segmentazione&lt;/strong&gt;: il bastion vive in una zona esposta e controllata (spesso chiamata DMZ o sottorete pubblica), mentre i server veri e propri stanno in una zona privata, non raggiungibile direttamente da Internet. Un firewall applica la regola che rende vero tutto il resto: verso quei server, le connessioni SSH sono accettate solo se provengono dal bastion.&lt;/p&gt;
&lt;p&gt;Senza questa separazione, il bastion sarebbe una porta blindata accanto a una finestra aperta: chiunque potrebbe aggirarlo collegandosi direttamente. Con la segmentazione, invece, l&apos;unica strada verso l&apos;interno passa dalla frontiera controllata.&lt;/p&gt;
&lt;p&gt;C&apos;è un rovescio della medaglia da tenere presente: concentrando tutto in un punto, quel punto diventa critico. Se il bastion è mal configurato o smette di funzionare, si blocca l&apos;accesso a tutto. Per questo va tenuto minimale, aggiornato e sorvegliato con attenzione particolare: vale anche per i router, come mostra il caso delle &lt;a href=&quot;/blog/vulnerabilita-mikrotik-routeros-ssh&quot;&gt;falle SSH di MikroTik RouterOS&lt;/a&gt; sfruttate su apparati con la gestione esposta. Il bastion non è l&apos;unico modo di risolvere il problema - &lt;a href=&quot;/blog/cos-e-una-vpn-wireguard&quot;&gt;una VPN&lt;/a&gt;, per esempio, affronta la stessa esigenza da un&apos;altra angolazione - ma resta uno dei più semplici e diffusi.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Un bastion host è un imbuto: costringe ogni accesso a passare da un punto solo, dove si concentrano le difese che sarebbe assurdo replicare ovunque. Riduce la superficie d&apos;attacco perché al posto di tante porte esposte ne lascia una sola, ben protetta; rende gli accessi tracciabili perché li raccoglie in un unico registro; e permette di alzare l&apos;autenticazione una volta per tutte invece che macchina per macchina. Attraversarlo con ProxyJump lo rende anche comodo e sicuro da usare. Non è una soluzione magica, e va inserito in una rete segmentata per funzionare davvero, ma è uno dei modi più solidi per mettere ordine in un accesso cresciuto senza controllo.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere in sicurezza l&apos;accesso SSH alla tua infrastruttura?&quot; text=&quot;Progettiamo e gestiamo architetture di accesso con bastion host, segmentazione di rete e autenticazione a più fattori per i server Linux dei nostri clienti.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/glossary/term/bastion_host&quot;&gt;Bastion host - NIST Computer Security Resource Center Glossary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.openssh.com/txt/release-7.3&quot;&gt;OpenSSH 7.3 release notes - introduzione di ProxyJump e del flag -J&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://man.openbsd.org/ssh_config&quot;&gt;ssh_config(5) - opzioni ProxyJump e ForwardAgent, man page OpenSSH&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Pay per crawl: far pagare i crawler AI con l&apos;HTTP 402</title><link>https://initd.it/blog/pay-per-crawl</link><guid isPermaLink="true">https://initd.it/blog/pay-per-crawl</guid><description>Cloudflare propone una terza via oltre a bloccare o consentire i crawler AI: farli pagare per l&apos;accesso ai contenuti usando lo status HTTP 402. Come funziona e perché conta.</description><pubDate>Tue, 08 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi pubblica contenuti online si trova da tempo davanti a una scelta secca quando arrivano i &quot;crawler&quot; delle intelligenze artificiali. Un crawler è un programma automatico che scarica pagine web: quelli delle aziende di IA lo fanno per addestrare i modelli o per raccogliere materiale con cui rispondere alle domande degli utenti. Fino a poco fa le opzioni per chi gestisce un sito erano solo due: lasciarli passare gratis, oppure sbarrargli la strada. A inizio luglio 2025 Cloudflare - una grande azienda di infrastruttura di rete, che fa da intermediario per una fetta enorme del traffico web - ha proposto una terza via: far pagare l&apos;accesso. Il meccanismo si chiama &quot;pay per crawl&quot; e riporta in vita un codice HTTP quasi mai usato, il 402 &quot;Payment Required&quot; (&quot;pagamento richiesto&quot;).&lt;/p&gt;
&lt;h2&gt;Il problema: o si blocca tutto, o si regala tutto&lt;/h2&gt;
&lt;p&gt;Per capire perché la cosa interessa chi produce contenuti, conviene partire dal contesto. Un sito che ospita articoli, foto o dati ha un costo per prodursi e per stare online. Quando un crawler di un&apos;azienda di IA scarica quel materiale, di fatto lo preleva senza lasciare nulla in cambio: nessuna visita di un lettore, nessuna pubblicità vista, nessun abbonamento.&lt;/p&gt;
&lt;p&gt;Lo strumento storico per gestire i crawler è il file &lt;code&gt;robots.txt&lt;/code&gt;, un semplice elenco di regole con cui un sito dichiara &quot;questo puoi scaricarlo, questo no&quot;. Ha però due limiti. Il primo è che è solo una richiesta di cortesia: non impedisce nulla a chi decide di ignorarla. Il secondo è che parla una lingua binaria: sì o no. Non esiste una casella &quot;sì, ma pagando&quot;.&lt;/p&gt;
&lt;p&gt;Il risultato è che chi pubblica si trova con un aut-aut poco comodo. Bloccare del tutto i crawler significa rinunciare a qualsiasi ritorno e, a volte, sparire dalle risposte generate dall&apos;IA. Lasciarli liberi significa regalare il proprio lavoro. Cloudflare racconta di aver raccolto questa insoddisfazione parlando con testate giornalistiche, editori e grandi piattaforme: molti vorrebbero una terza opzione, cioè permettere l&apos;accesso ma essere ricompensati.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è pay per crawl&lt;/h2&gt;
&lt;p&gt;Pay per crawl è esattamente quella terza opzione. Per ogni crawler, chi gestisce il sito può scegliere tra tre comportamenti:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consenti&lt;/strong&gt; - accesso libero e gratuito, come sempre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fai pagare&lt;/strong&gt; - l&apos;accesso è permesso, ma a un prezzo fissato.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blocca&lt;/strong&gt; - accesso negato, senza possibilità di pagare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&apos;idea di fondo è semplice: trasformare l&apos;accesso da parte dei crawler in una piccola transazione economica, senza dover trattare caso per caso con ogni azienda di IA. Il prezzo, al momento, è unico e vale per l&apos;intero dominio: si stabilisce una cifra per ogni richiesta andata a buon fine e quella si applica a tutte le pagine.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai davvero quali crawler AI stanno scaricando i contenuti del tuo sito?&quot; text=&quot;Verifichiamo la configurazione di robots.txt, WAF e regole Cloudflare per capire chi accede ai tuoi contenuti.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Come funziona: il ritorno dell&apos;HTTP 402&lt;/h2&gt;
&lt;p&gt;Qui entra in gioco la parte tecnica, spiegata in modo semplice. Ogni volta che un browser o un programma chiede una pagina a un server, il server risponde con un &quot;codice di stato&quot;: un numero che riassume com&apos;è andata. Il 200 vuol dire &quot;tutto bene, ecco il contenuto&quot;; il 404 &quot;non trovato&quot;; il 403 &quot;vietato&quot;. Tra questi ne esiste uno, il &lt;strong&gt;402 &quot;Payment Required&quot;&lt;/strong&gt;, previsto fin dalle prime versioni dello standard HTTP ma di fatto tenuto in disparte per anni, &lt;a href=&quot;/blog/http-deprecation-header&quot;&gt;in attesa di un uso concreto&lt;/a&gt;. Pay per crawl è proprio uno di questi usi.&lt;/p&gt;
&lt;p&gt;Lo scambio, semplificando, funziona così. Un crawler chiede una pagina a pagamento senza offrire nulla: il server risponde con un &lt;strong&gt;402&lt;/strong&gt; e aggiunge un&apos;intestazione (una riga di metadati che accompagna la risposta) chiamata &lt;code&gt;crawler-price&lt;/code&gt;, cioè il prezzo richiesto. A questo punto il crawler, se accetta, ripete la richiesta dichiarando quanto è disposto a pagare tramite l&apos;intestazione &lt;code&gt;crawler-exact-price&lt;/code&gt;. Se tutto è in ordine, il server risponde con un &lt;strong&gt;200&lt;/strong&gt; e il contenuto, aggiungendo &lt;code&gt;crawler-charged&lt;/code&gt; per confermare la cifra addebitata.&lt;/p&gt;
&lt;p&gt;Esiste anche una via più diretta: il crawler può indicare fin dalla prima richiesta un tetto di spesa con l&apos;intestazione &lt;code&gt;crawler-max-price&lt;/code&gt;. Se il prezzo del sito rientra in quel tetto, il contenuto arriva subito, con l&apos;addebito confermato. In pratica il 402 non è un errore da evitare, ma un modo per dire &quot;questo si può avere, ma costa X&quot;: una specie di listino restituito al volo dal server.&lt;/p&gt;
&lt;h2&gt;Come si distingue un crawler che paga&lt;/h2&gt;
&lt;p&gt;Un meccanismo del genere regge solo se il server sa con certezza chi ha di fronte: altrimenti chiunque potrebbe spacciarsi per un crawler autorizzato. Per questo pay per crawl si appoggia a &lt;a href=&quot;/blog/web-bot-auth&quot;&gt;firme crittografiche&lt;/a&gt;. Ogni crawler aderente possiede una coppia di chiavi (una privata, segreta, e una pubblica, nota) e firma le proprie richieste con quella privata; il server verifica la firma con la chiave pubblica. È lo stesso principio che rende affidabili molte comunicazioni sicure in rete: la firma dimostra l&apos;identità e garantisce che la richiesta non sia stata alterata lungo il percorso. Questo lega l&apos;addebito a un mittente riconosciuto, non a un anonimo.&lt;/p&gt;
&lt;h2&gt;Chi incassa e chi paga: Cloudflare come intermediario&lt;/h2&gt;
&lt;p&gt;Restava un problema pratico: nessun editore vuole gestire micro-pagamenti verso decine di aziende di IA, e nessuna azienda di IA vuole aprire un conto con ogni singolo sito. Cloudflare si mette in mezzo con il ruolo di &quot;merchant of record&quot;, cioè il soggetto che compare come venditore ufficiale nella transazione. In concreto raccoglie gli addebiti maturati, li fattura alle aziende dei crawler e gira il ricavato a chi pubblica. Per il sito significa non dover costruire da zero un sistema di pagamenti; per il crawler significa un solo interlocutore invece di mille.&lt;/p&gt;
&lt;p&gt;Va detto con chiarezza: per usare pay per crawl bisogna essere clienti di Cloudflare e far transitare il proprio sito dalla sua rete. È una scelta di campo, non uno standard aperto a cui chiunque possa aderire da solo.&lt;/p&gt;
&lt;h2&gt;Cosa cambia per chi produce contenuti&lt;/h2&gt;
&lt;p&gt;Il valore della proposta non è il singolo pagamento, che preso da solo sarà spesso minuscolo, ma il fatto di dare finalmente un prezzo a qualcosa che prima si poteva solo regalare o negare. Per una testata o per chi gestisce un archivio ricco e aggiornato, poter dire &quot;sei il benvenuto, ma questo lavoro ha un costo&quot; è un cambio di prospettiva, anche solo come leva negoziale.&lt;/p&gt;
&lt;p&gt;Conviene però mantenere le aspettative sobrie. Il meccanismo funziona solo se le aziende di IA decidono di partecipare e di pagare, invece di limitarsi a non scaricare il sito. Il prezzo unico per l&apos;intero dominio è ancora poco flessibile. E l&apos;intera impalcatura vive dentro l&apos;infrastruttura di un singolo fornitore. Sono elementi che ne fanno un esperimento interessante più che una soluzione già matura.&lt;/p&gt;
&lt;h2&gt;È una beta, e guarda agli &quot;agenti&quot;&lt;/h2&gt;
&lt;p&gt;Su questo punto serve precisione: al momento dell&apos;annuncio pay per crawl è in &lt;strong&gt;beta privata&lt;/strong&gt;. Non è un servizio aperto a tutti né uno standard consolidato: per provarlo occorre iscriversi e passare da un accesso riservato. Le intestazioni, i prezzi e le regole descritte qui sono quelle della fase iniziale e possono cambiare man mano che la sperimentazione va avanti.&lt;/p&gt;
&lt;p&gt;C&apos;è però una direzione di fondo che spiega perché la notizia ha fatto discutere. Cloudflare la inquadra in uno scenario più ampio, quello degli &quot;&lt;a href=&quot;/blog/agent-skills&quot;&gt;agenti&lt;/a&gt;&quot; - programmi di IA che agiscono per conto di una persona. L&apos;idea, dichiaratamente prospettica, è che un giorno si possa dare a un assistente un budget e lasciargli acquistare in autonomia i contenuti migliori per svolgere un compito. Che quel futuro arrivi o meno, il segnale concreto di oggi è più modesto ma non banale: prendere un pezzo dimenticato dello standard HTTP, il codice 402, e provare a usarlo per rimettere un prezzo sull&apos;accesso automatico ai contenuti.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi gestire l&apos;accesso dei crawler AI al tuo sito?&quot; text=&quot;Configuriamo Cloudflare, regole di accesso e monitoraggio del traffico per i siti e gli e-commerce che gestiamo.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/introducing-pay-per-crawl/&quot;&gt;Introducing pay per crawl (Cloudflare Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/ai-crawl-control/features/manage-ai-crawlers/&quot;&gt;Manage AI crawlers (Cloudflare AI Crawl Control docs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cloudflare.com/paypercrawl-signup/&quot;&gt;Cloudflare Pay Per Crawl - Private Beta (iscrizione)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è LVM e perché semplifica la gestione dei dischi su Linux</title><link>https://initd.it/blog/cos-e-lvm-gestione-dischi-linux</link><guid isPermaLink="true">https://initd.it/blog/cos-e-lvm-gestione-dischi-linux</guid><description>Cos&apos;è LVM, il livello che si mette tra i dischi e i dati: volume fisico, gruppo e volume logico spiegati con un&apos;analogia, e i vantaggi rispetto alle partizioni classiche.</description><pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi installa un server o un computer Linux, prima o poi, si trova davanti a una domanda solo in apparenza banale: come dividere lo spazio del disco. Con il metodo tradizionale quella decisione va presa quasi subito ed è scomoda da correggere dopo. Basta che una parte del disco si riempia mentre un&apos;altra resta mezza vuota per capirne il limite. LVM nasce proprio per rendere quella scelta reversibile. Capire cos&apos;è aiuta a ragionare sullo spazio disco senza trattarlo come una gabbia decisa una volta per tutte.&lt;/p&gt;
&lt;h2&gt;Prima di LVM: il problema delle partizioni fisse&lt;/h2&gt;
&lt;p&gt;Un disco, di solito, non si usa tutto intero: si divide in &lt;strong&gt;partizioni&lt;/strong&gt;, cioè fette di spazio con un confine ben preciso. Una fetta per il sistema, una per i dati, una per l&apos;area di scambio, e così via. Il problema è che quel confine, con le partizioni classiche, è scolpito nel disco: dice &quot;questa fetta arriva fino a qui e non oltre&quot;. Finché le previsioni fatte all&apos;inizio reggono, va tutto bene. Quando non reggono più, spostare un confine su un sistema in funzione è un&apos;operazione delicata, spesso da fare a computer spento, con il rischio concreto di perdere dati.&lt;/p&gt;
&lt;p&gt;Il risultato tipico è uno spreco che chiunque abbia gestito un disco conosce: una partizione piena al 100% che blocca un servizio, mentre accanto ce n&apos;è un&apos;altra usata a metà. Lo spazio libero c&apos;è, ma è dalla parte sbagliata del muro.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è LVM in parole semplici&lt;/h2&gt;
&lt;p&gt;LVM sta per &lt;em&gt;Logical Volume Manager&lt;/em&gt;, cioè &quot;gestore di volumi logici&quot;. È un componente incluso di serie nelle distribuzioni Linux più diffuse, e la sua idea è semplice: mettere uno &lt;strong&gt;strato intermedio&lt;/strong&gt; tra i dischi fisici e i filesystem (il modo in cui i dati vengono organizzati, scritti e letti). Invece di far parlare i dati direttamente con il disco, ci si rivolge a LVM, che tiene la contabilità dello spazio e decide come distribuirlo.&lt;/p&gt;
&lt;p&gt;Questo strato in più è tutto il punto. Aggiungendo un livello di astrazione, i confini dello spazio smettono di essere fissi: diventano numeri gestiti via software, che si possono spostare mentre il sistema continua a lavorare. La documentazione di Oracle Linux lo riassume bene quando descrive LVM come una tecnologia &quot;non disruptive and transparent to users&quot;, per cui operazioni come ingrandire un volume o riorganizzare i dischi &quot;don&apos;t require any system down time&quot; (non richiedono alcun fermo del sistema).&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Rischi di ritrovarti con un disco pieno mentre un altro resta a metà?&quot; text=&quot;Controlliamo lo storage dei tuoi server e valutiamo se passare a LVM senza fermare i servizi.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;I tre concetti base: volume fisico, gruppo, volume logico&lt;/h2&gt;
&lt;p&gt;LVM si regge su tre concetti impilati uno sopra l&apos;altro. Chiarirli subito toglie gran parte della confusione. Un&apos;analogia utile è quella di un magazzino.&lt;/p&gt;
&lt;p&gt;Il &lt;strong&gt;volume fisico&lt;/strong&gt; (in inglese &lt;em&gt;physical volume&lt;/em&gt;, PV) è il livello più basso: un disco o una partizione che si dichiara &quot;utilizzabile da LVM&quot;. È come portare in magazzino delle scatole di merce grezza. LVM ne suddivide lo spazio in tanti blocchetti tutti uguali, i cosiddetti &lt;em&gt;extent&lt;/em&gt; (la documentazione Oracle indica una dimensione predefinita di 4 MB), che sono l&apos;unità con cui poi conta ogni cosa.&lt;/p&gt;
&lt;p&gt;Il &lt;strong&gt;gruppo di volumi&lt;/strong&gt; (&lt;em&gt;volume group&lt;/em&gt;, VG) è il magazzino vero e proprio: mette insieme uno o più volumi fisici in un unico grande serbatoio di spazio. Qui sta il cuore della flessibilità. Al serbatoio non importa se lo spazio arriva da un disco solo o da cinque dischi diversi: li vede come un&apos;unica riserva.&lt;/p&gt;
&lt;p&gt;Il &lt;strong&gt;volume logico&lt;/strong&gt; (&lt;em&gt;logical volume&lt;/em&gt;, LV) è ciò che si usa davvero: dal serbatoio si ritaglia un volume della dimensione voluta, ci si mette sopra un filesystem e lo si monta come una normale unità. Per il sistema è indistinguibile da una partizione, con la differenza sostanziale che i suoi confini non sono fissi. Restando all&apos;analogia: le pareti tra le stanze del magazzino non sono muri di mattoni, ma pannelli mobili che si spostano quando serve, senza svuotare tutto.&lt;/p&gt;
&lt;p&gt;Il percorso completo, dai dischi allo spazio pronto all&apos;uso, è una sequenza di tre passi:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pvcreate /dev/sdb /dev/sdc      # marca due dischi come volumi fisici
vgcreate dati /dev/sdb /dev/sdc # li unisce in un gruppo chiamato &quot;dati&quot;
lvcreate -L 50G -n web dati     # ritaglia un volume logico da 50 GB
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Da qui in poi si crea un filesystem sul volume e lo si monta, esattamente come si farebbe con una partizione.&lt;/p&gt;
&lt;h2&gt;Cosa cambia rispetto alle partizioni classiche&lt;/h2&gt;
&lt;p&gt;I vantaggi pratici di questo modello sono pochi e concreti.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ridimensionare a caldo.&lt;/strong&gt; Se un volume logico si riempie e nel gruppo c&apos;è ancora spazio libero, lo si può allargare mentre il sistema è in funzione, senza smontare nulla e senza fermare i servizi. In molti casi, con una sola opzione, anche il filesystem sopra viene ingrandito nello stesso momento. Un dettaglio da conoscere: allargare un filesystem si può fare quasi sempre a caldo, ma &lt;em&gt;rimpicciolirlo&lt;/em&gt; è più delicato e spesso richiede di smontarlo prima. Alcuni filesystem, come XFS, si possono solo far crescere e non ridurre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unire più dischi in un unico spazio.&lt;/strong&gt; Poiché il gruppo somma la capacità di tutti i volumi fisici che contiene, un filesystem può estendersi su più dischi come se fossero uno solo. Quando lo spazio scarseggia, basta aggiungere un disco al gruppo per aumentarne la capacità, senza rifare la struttura esistente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Snapshot.&lt;/strong&gt; Uno &lt;em&gt;snapshot&lt;/em&gt; è un&apos;istantanea congelata di un volume in un preciso momento. La pagina di manuale di LVM lo descrive come una &quot;frozen image of an origin LV&quot; (immagine congelata di un volume di origine) utilizzabile, per esempio, per i backup mentre il volume originale continua a essere usato, secondo la stessa logica di ridondanza descritta nella &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;regola del backup 3-2-1&lt;/a&gt;. È utile per copiare un database o un sistema senza fermarlo, evitando di salvare file che cambiano mentre la copia è ancora in corso, un&apos;operazione che in produzione conviene pianificare con &lt;a href=&quot;/blog/systemd-timer-alternativa-cron&quot;&gt;un timer schedulato&lt;/a&gt; invece che avviarla a mano. In LVM uno snapshot si può anche &quot;riassorbire&quot; nell&apos;origine, riportando il volume allo stato di quando era stato creato: una rete di sicurezza comoda prima di un aggiornamento a rischio. Nel mondo della virtualizzazione gli snapshot sui volumi LVM condivisi sono stati a lungo un limite, superato solo di recente: è una delle novità di cui parliamo a proposito del &lt;a href=&quot;/blog/proxmox-8-fine-vita-aggiornare&quot;&gt;passaggio da Proxmox VE 8 alla 9&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spostare i dati tra dischi senza fermare nulla.&lt;/strong&gt; Se un disco inizia a dare segni di cedimento, o se si passa da un disco meccanico a uno a stato solido, LVM permette di trasferire i dati da un volume fisico a un altro mentre i volumi restano montati e in uso. A trasferimento concluso, il vecchio disco si toglie dal gruppo ed è fisicamente estraibile.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Quando conviene usarlo (e quando no)&lt;/h2&gt;
&lt;p&gt;LVM non è gratis: aggiunge uno strato in più da capire e, all&apos;occorrenza, da saper recuperare se qualcosa va storto. Su una chiavetta USB o su un disco monouso a dimensione fissa è complessità inutile, che non ripaga. Va anche ricordato che la piccola partizione di avvio del sistema (boot ed EFI) resta comunque una partizione classica: LVM non la sostituisce.&lt;/p&gt;
&lt;p&gt;Sui server, però, la bilancia pende quasi sempre dall&apos;altra parte. Ogni volta che si prevede di dover far crescere lo spazio nel tempo, spostare dati tra dischi o fare backup coerenti senza fermare i servizi, la flessibilità di LVM ripaga il piccolo costo iniziale, lo stesso ragionamento che porta a preferire &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;un&apos;infrastruttura descritta in file versionati&lt;/a&gt; invece che configurata a mano una volta per tutte. La regola pratica più diffusa è semplice: partizione classica solo dove è obbligatoria, tutto il resto sotto LVM. Meglio avere la flessibilità e non usarla che scoprirne il bisogno a disco pieno.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;LVM è un livello di astrazione che si mette tra i dischi fisici e i dati. Trasforma i confini rigidi delle partizioni in numeri gestiti via software: i dischi diventano volumi fisici, si uniscono in un gruppo che fa da serbatoio, e da lì si ritagliano volumi logici con pareti mobili. Il guadagno concreto è poter ridimensionare a caldo, unire più dischi, congelare istantanee per i backup e spostare dati senza downtime. Non serve ovunque, ma dove lo spazio deve poter cambiare nel tempo, evita di trattare una decisione presa il primo giorno come se fosse definitiva.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi gestire lo storage dei tuoi server senza il rischio di restare senza spazio?&quot; text=&quot;Gestiamo dischi e volumi Linux su server e cloud: migrazione a LVM, snapshot per i backup e ridimensionamento a caldo, senza downtime.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.oracle.com/en/operating-systems/oracle-linux/8/stordev/stordev-WorkingWithLogicalVolumeManager.html&quot;&gt;Working With Logical Volume Manager - Oracle Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ubuntu.com/server/docs/how-to/storage/manage-logical-volumes/&quot;&gt;How to manage logical volumes - Ubuntu Server documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://man7.org/linux/man-pages/man8/lvcreate.8.html&quot;&gt;lvcreate(8) - man7.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Passkey portabili: uno standard per spostarle tra gestori diversi</title><link>https://initd.it/blog/passkey-portabili-credential-exchange</link><guid isPermaLink="true">https://initd.it/blog/passkey-portabili-credential-exchange</guid><description>La FIDO Alliance ha pubblicato le specifiche Credential Exchange (CXF e CXP) per esportare e importare passkey e altre credenziali tra gestori diversi in modo sicuro. Ecco cosa sono e perché contano contro il timore del lock-in.</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi ha iniziato a usare le passkey al posto delle password si è trovato presto davanti a una domanda pratica: se decido di cambiare gestore, le mie credenziali vengono con me? Fino a poco tempo fa la risposta era scomoda. Le passkey tendevano a restare intrappolate nel servizio dove erano nate, e non esisteva un modo sicuro e condiviso per spostarle altrove. La FIDO Alliance, l&apos;organizzazione che cura gli standard alla base delle passkey, ha pubblicato le specifiche che affrontano proprio questo punto.&lt;/p&gt;
&lt;h2&gt;Perché conta&lt;/h2&gt;
&lt;p&gt;Il timore di restare legati a un fornitore ha un nome ricorrente: &quot;lock-in&quot;. Se cambiare strumento significa perdere le proprie credenziali, oppure esportarle in modo insicuro, molti preferiscono non muoversi affatto. Oppure tengono la vecchia password come rete di sicurezza. E finché la password resta come riserva, gran parte dei benefici delle passkey resta sulla carta. Rendere il trasferimento delle credenziali un&apos;operazione prevista e sicura non è un dettaglio tecnico: è uno dei nodi che decidono se le passkey diventano &lt;a href=&quot;/blog/passkey-multipiattaforma&quot;&gt;un metodo di accesso diffuso&lt;/a&gt; o restano una comodità per pochi.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è una passkey, in breve&lt;/h2&gt;
&lt;p&gt;Una passkey è un modo per accedere a un sito o a un&apos;app senza digitare una password. Al posto di una parola segreta usa una coppia di chiavi crittografiche: due valori matematici legati tra loro. Uno, la chiave privata, resta sul dispositivo dell&apos;utente e non viene mai condiviso. L&apos;altro, la chiave pubblica, viene consegnato al sito in fase di registrazione. Al momento dell&apos;accesso il dispositivo firma una piccola &quot;sfida&quot; inviata dal sito, ma solo dopo che l&apos;utente si è sbloccato come al solito: impronta, riconoscimento del volto o PIN.&lt;/p&gt;
&lt;p&gt;Il vantaggio è doppio. Non c&apos;è più una password da rubare, perché il sito conserva solo la chiave pubblica, che da sola non fa entrare nessuno né si presta a un &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;attacco a forza bruta&lt;/a&gt;. E i tentativi di phishing, cioè le pagine finte che imitano un servizio per farsi digitare le credenziali, smettono di funzionare, perché la passkey è legata all&apos;indirizzo reale del sito. Le passkey vengono in genere salvate e sincronizzate da un &quot;gestore di credenziali&quot;: può essere quello del sistema operativo, come Apple Passwords o Google Password Manager, oppure un&apos;applicazione dedicata come 1Password o Bitwarden.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua applicazione supporta già le passkey per l&apos;accesso?&quot; text=&quot;Valutiamo l&apos;autenticazione attuale e cosa serve per affiancare o sostituire le password.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Il problema: nessun modo sicuro di spostarle&lt;/h2&gt;
&lt;p&gt;Fin qui la parte solida. Il punto debole era la portabilità. Ogni gestore custodiva le passkey dentro il proprio recinto, e passare da uno all&apos;altro era complicato. Con le vecchie password esisteva almeno una via, ma pessima: esportarle in un file di testo, spesso in chiaro, cioè leggibile da chiunque aprisse quel file. Per le passkey non c&apos;era nemmeno quello. Mancava del tutto uno standard, cioè un formato e una procedura condivisi che tutti i gestori potessero adottare.&lt;/p&gt;
&lt;p&gt;Il risultato è proprio il lock-in di cui sopra. Senza una via d&apos;uscita sicura, l&apos;utente si sente in trappola, e la fiducia verso una tecnologia nuova ne risente.&lt;/p&gt;
&lt;h2&gt;Cosa ha pubblicato la FIDO Alliance&lt;/h2&gt;
&lt;p&gt;Per rispondere a questo problema la FIDO Alliance ha definito due specifiche complementari, riunite sotto il nome di Credential Exchange (scambio di credenziali).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Credential Exchange Format (CXF)&lt;/strong&gt;: è il formato. Stabilisce come devono essere descritti i dati da trasferire, con una struttura comune basata su JSON (un modo diffuso e leggibile di organizzare dati). Non riguarda solo le passkey: copre anche password, chiavi SSH, credenziali Wi-Fi e altri tipi di segreto. L&apos;idea è che un dato esportato risulti uguale a prescindere dal gestore che lo ha prodotto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Credential Exchange Protocol (CXP)&lt;/strong&gt;: è il protocollo, cioè il &quot;come&quot;. Definisce il modo in cui il trasferimento avviene tra due gestori, in forma cifrata e sicura per impostazione predefinita, lo stesso principio della &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;cifratura dei dati in transito&lt;/a&gt; richiesto ai sistemi che trattano dati personali. L&apos;obiettivo dichiarato è che le credenziali non viaggino più in chiaro.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In sintesi: CXF dice &lt;em&gt;cosa&lt;/em&gt; si trasferisce, CXP dice &lt;em&gt;come&lt;/em&gt; lo si trasferisce.&lt;/p&gt;
&lt;p&gt;Un punto importante da capire: queste specifiche non spostano le passkey al posto dell&apos;utente. Sono un linguaggio comune. Servono perché due gestori diversi, di aziende diverse, possano parlarsi e passarsi le credenziali senza inventare ogni volta un metodo proprio.&lt;/p&gt;
&lt;h2&gt;A che punto sono le specifiche&lt;/h2&gt;
&lt;p&gt;Qui serve onestà sui tempi, perché le due specifiche non sono allo stesso stadio.&lt;/p&gt;
&lt;p&gt;Le prime bozze di CXF e CXP sono state pubblicate il 14 ottobre 2024, aperte ai commenti della comunità e non ancora pronte per l&apos;uso reale. Da lì il lavoro è proseguito. Il 14 agosto 2025 il formato CXF è stato pubblicato come Proposed Standard, cioè una prima versione stabile (la 1.0) che i gestori possono iniziare a implementare. È un passaggio diverso da una semplice bozza: segna un punto fermo su cui costruire.&lt;/p&gt;
&lt;p&gt;Il protocollo CXP, invece, al momento in cui si scrive è ancora in fase di bozza. In pratica il formato con cui descrivere le credenziali c&apos;è ed è consolidato; la procedura sicura di trasferimento diretto tra gestori è ancora in via di definizione. È una distinzione utile per non leggere l&apos;annuncio come &quot;da domani sposto tutto con un clic&quot;.&lt;/p&gt;
&lt;p&gt;Vale la pena notare chi c&apos;è dietro. Le specifiche nascono da un gruppo di lavoro della FIDO Alliance dedicato ai fornitori di credenziali, a cui hanno contribuito nomi molto diffusi: tra gli altri 1Password, Apple, Bitwarden, Dashlane, Enpass, Google, Microsoft, NordPass, Okta, Samsung e SK Telecom. È un dettaglio che conta: uno standard di portabilità ha senso solo se lo adottano proprio i gestori tra cui gli utenti vogliono spostarsi.&lt;/p&gt;
&lt;h2&gt;Cosa aspettarsi, con realismo&lt;/h2&gt;
&lt;p&gt;Uno standard pubblicato non è ancora una funzione pronta nel proprio gestore. Perché diventi qualcosa che si usa davvero, ogni fornitore deve implementarlo nei propri prodotti, e i tempi variano da uno all&apos;altro. Detto questo, la direzione è chiara: rendere l&apos;esportazione e l&apos;importazione delle credenziali un&apos;operazione sicura e prevista, invece di un percorso a ostacoli o di un file leggibile in chiaro.&lt;/p&gt;
&lt;p&gt;Per l&apos;utente comune il beneficio, quando arriverà a regime, è concreto: poter cambiare gestore di credenziali con la stessa libertà con cui oggi si cambia operatore telefonico mantenendo il numero. È proprio la mancanza di questa libertà che teneva molti fermi.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;La FIDO Alliance ha definito uno standard per spostare le credenziali tra gestori diversi in modo sicuro: CXF per il formato dei dati e CXP per il protocollo di trasferimento. Il formato è arrivato a una prima versione stabile nell&apos;agosto 2025; il protocollo è ancora in lavorazione. Non è una funzione già disponibile ovunque, ma è il tassello che mancava per togliere di mezzo il timore del lock-in, uno dei freni principali alla diffusione delle passkey.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi portare le passkey nella tua applicazione?&quot; text=&quot;Progettiamo e integriamo l&apos;autenticazione senza password nelle applicazioni Laravel e Vue che sviluppiamo, valutando sicurezza e compatibilità con i gestori più diffusi.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://fidoalliance.org/specifications-credential-exchange-specifications/&quot;&gt;FIDO Credential Exchange Specifications (FIDO Alliance)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fidoalliance.org/fido-alliance-publishes-new-specifications-to-promote-user-choice-and-enhanced-ux-for-passkeys/&quot;&gt;FIDO Alliance Publishes New Specifications to Promote User Choice and Enhanced UX for Passkeys (FIDO Alliance)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.1password.community/blog/developer-blog/portability-without-compromise-1password-helps-author-a-new-standard-for-secure-/163208&quot;&gt;Portability without compromise: 1Password helps author a new standard for secure credential transfer (1Password)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è systemd e cosa sono i timer (l&apos;alternativa moderna a cron)</title><link>https://initd.it/blog/systemd-timer-alternativa-cron</link><guid isPermaLink="true">https://initd.it/blog/systemd-timer-alternativa-cron</guid><description>systemd è il gestore di sistema e servizi di Linux: cos&apos;è, cosa sono le unit e i timer, e perché rispetto a cron aggiungono log integrati, dipendenze e recupero.</description><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Un server Linux non è mai davvero fermo: dietro le quinte decine di programmi partono all&apos;avvio, restano in ascolto e vengono riavviati se qualcosa va storto. Qualcuno deve coordinare tutto questo, decidere cosa avviare e in che ordine, e cosa fare quando un programma smette di funzionare. Su gran parte dei sistemi Linux moderni quel &quot;qualcuno&quot; si chiama &lt;strong&gt;systemd&lt;/strong&gt;. Capire cos&apos;è, e cosa sono i suoi &lt;em&gt;timer&lt;/em&gt;, aiuta a ragionare su come una macchina Linux fa girare i propri servizi e pianifica le attività ricorrenti.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è systemd&lt;/h2&gt;
&lt;p&gt;La documentazione ufficiale lo definisce in modo asciutto: systemd è &quot;un gestore di sistema e di servizi per sistemi operativi Linux&quot;. In pratica è il primo programma che parte all&apos;accensione, tecnicamente il processo numero 1 (o &lt;em&gt;PID 1&lt;/em&gt;), e da lì avvia e mantiene in vita tutti gli altri. È quello che in gergo si chiama &lt;em&gt;init system&lt;/em&gt;: il capostipite da cui discende ogni altro processo del sistema.&lt;/p&gt;
&lt;p&gt;Serve una parola su cosa si intende per &quot;servizio&quot;. Un servizio (o &lt;em&gt;daemon&lt;/em&gt;) è un programma che gira in sottofondo senza un&apos;interfaccia con cui interagire direttamente: &lt;a href=&quot;/blog/cos-e-un-reverse-proxy&quot;&gt;il web server che risponde alle pagine&lt;/a&gt;, il database, il sistema che invia le email. Non lo si &quot;apre&quot; come un&apos;app: parte da solo e resta attivo. Il compito di systemd è avviare questi programmi nell&apos;ordine giusto, tenerli d&apos;occhio e, quando serve, riavviarli.&lt;/p&gt;
&lt;p&gt;systemd è adottato dalla maggior parte delle distribuzioni Linux più diffuse, ed è per questo che conoscerlo anche solo a grandi linee è utile: è il punto di partenza per capire come una macchina Linux si comporta all&apos;avvio e durante il funzionamento.&lt;/p&gt;
&lt;h2&gt;Le unit: i mattoncini di systemd&lt;/h2&gt;
&lt;p&gt;Tutto ciò che systemd gestisce è descritto da un&apos;&lt;strong&gt;unit&lt;/strong&gt;. Un&apos;unit è semplicemente un file di testo che descrive un oggetto del sistema e come trattarlo. La documentazione ne elenca undici tipi diversi; per farsi un&apos;idea bastano i più comuni:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le unit &lt;strong&gt;.service&lt;/strong&gt; avviano e controllano i servizi (i daemon di cui sopra);&lt;/li&gt;
&lt;li&gt;le unit &lt;strong&gt;.socket&lt;/strong&gt; gestiscono le connessioni di rete o locali;&lt;/li&gt;
&lt;li&gt;le unit &lt;strong&gt;.mount&lt;/strong&gt; si occupano dei &lt;a href=&quot;/blog/cos-e-lvm-gestione-dischi-linux&quot;&gt;punti di montaggio dei dischi&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;le unit &lt;strong&gt;.target&lt;/strong&gt; raggruppano altre unit o segnano tappe note dell&apos;avvio (per esempio &quot;il sistema è pronto per la rete&quot;);&lt;/li&gt;
&lt;li&gt;le unit &lt;strong&gt;.timer&lt;/strong&gt;, tema di questo articolo, fanno scattare l&apos;attivazione di altre unit in base al tempo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il vantaggio di questo schema è l&apos;uniformità. Che si tratti di un disco, di un servizio o di un&apos;attività pianificata, la logica è sempre la stessa: &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;un file che descrive l&apos;oggetto&lt;/a&gt; e un unico insieme di comandi per gestirlo.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;I tuoi job pianificati su cron falliscono in silenzio, senza che nessuno se ne accorga?&quot; text=&quot;Verifichiamo come sono pianificati i task ricorrenti sui tuoi server e se i fallimenti vengono davvero notificati.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa sono i timer&lt;/h2&gt;
&lt;p&gt;Ecco il punto chiave, spiegato con calma. Un timer di systemd &lt;strong&gt;non esegue un comando&lt;/strong&gt;: fa partire un&apos;altra unit a un certo momento. Per convenzione un timer attiva il servizio con lo stesso nome (&lt;code&gt;backup.timer&lt;/code&gt; fa partire &lt;code&gt;backup.service&lt;/code&gt;), e il lavoro vero, cioè il comando da eseguire, sta in quel servizio. Il timer dice soltanto &lt;em&gt;quando&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I timer si dividono in due famiglie.&lt;/p&gt;
&lt;p&gt;I &lt;strong&gt;timer di calendario&lt;/strong&gt; scattano a un orario dell&apos;orologio, come &quot;ogni giorno alle 3:30&quot;. Si configurano con l&apos;opzione &lt;code&gt;OnCalendar=&lt;/code&gt;, la cui sintassi ricalca l&apos;idea dei campi di cron ma in forma più esplicita: giorno della settimana, anno-mese-giorno, ora:minuto:secondo. Un asterisco significa &quot;qualsiasi valore&quot;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;OnCalendar=*-*-* 03:30:00    # ogni giorno alle 3:30
OnCalendar=Mon..Fri 09:00    # dal lunedì al venerdì alle 9:00
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esistono anche scorciatoie comode come &lt;code&gt;hourly&lt;/code&gt;, &lt;code&gt;daily&lt;/code&gt;, &lt;code&gt;weekly&lt;/code&gt;, &lt;code&gt;monthly&lt;/code&gt;: per esempio &lt;code&gt;daily&lt;/code&gt; corrisponde a &lt;code&gt;*-*-* 00:00:00&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I &lt;strong&gt;timer monotonici&lt;/strong&gt;, invece, non guardano l&apos;orologio ma il tempo trascorso da un evento: &lt;code&gt;OnBootSec=&lt;/code&gt; misura da quando la macchina è accesa, &lt;code&gt;OnUnitActiveSec=&lt;/code&gt; da quando l&apos;unit collegata è stata avviata l&apos;ultima volta. Servono per esprimere cose come &quot;15 minuti dopo l&apos;avvio, poi ogni ora&quot;.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è cron e perché si parla di alternativa&lt;/h2&gt;
&lt;p&gt;Per capire perché i timer piacciono, serve ricordare cosa fa &lt;strong&gt;cron&lt;/strong&gt;. cron è il programma storico di Linux (e Unix) per pianificare attività ricorrenti: un daemon che, con le parole del suo manuale, &quot;esegue questo comando a quest&apos;ora in questa data&quot;. La pianificazione si scrive in un file, la &lt;em&gt;crontab&lt;/em&gt;, con cinque campi che indicano minuto, ora, giorno del mese, mese e giorno della settimana.&lt;/p&gt;
&lt;p&gt;cron fa una cosa sola, e la fa da decenni con affidabilità: esegue un comando a un orario. Il punto è tutto il resto, cioè dove finisce l&apos;output, cosa succede se la macchina era spenta all&apos;orario previsto, come sapere quando ripartirà. Sono aspetti che a cron non competono. I timer di systemd nascono proprio per coprire quel &quot;resto&quot;.&lt;/p&gt;
&lt;h2&gt;I vantaggi dei timer&lt;/h2&gt;
&lt;h3&gt;I log finiscono nel journal&lt;/h3&gt;
&lt;p&gt;systemd tiene un registro centralizzato degli eventi, il &lt;em&gt;journal&lt;/em&gt;, gestito da un servizio chiamato journald. Per impostazione predefinita l&apos;output di ogni servizio, sia quello normale sia i messaggi di errore, viene raccolto lì e ordinato per unit. Con cron, tradizionalmente, l&apos;output di un&apos;attività veniva spedito per email (tramite l&apos;opzione &lt;code&gt;MAILTO&lt;/code&gt;) o rischiava di perdersi. Con un timer basta un comando per rileggere l&apos;intera storia di un&apos;attività:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;journalctl -u backup.service     # storico completo del job
systemctl list-timers            # tutti i timer e la prossima esecuzione
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Recuperare le esecuzioni perse&lt;/h3&gt;
&lt;p&gt;Con cron, se la macchina era spenta all&apos;orario previsto, quel giro salta e nessuno lo registra. I timer offrono l&apos;opzione &lt;code&gt;Persistent=true&lt;/code&gt;: systemd salva su disco quando l&apos;attività è stata eseguita l&apos;ultima volta e, alla riaccensione, se nel frattempo sarebbe dovuta partire almeno una volta, la avvia subito. È un comportamento pensato per &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;recuperare le esecuzioni perse dopo un periodo di spegnimento&lt;/a&gt;, e vale per i timer di calendario.&lt;/p&gt;
&lt;h3&gt;Dipendenze e ordine&lt;/h3&gt;
&lt;p&gt;Un timer avvia un&apos;unit, e un&apos;unit vive nel grafo delle dipendenze di systemd. Si può quindi chiedere di eseguire un&apos;attività &quot;solo dopo che la rete è pronta&quot; oppure &quot;solo dopo che un disco è montato&quot;. cron, invece, scatta all&apos;orario e basta, che le condizioni siano soddisfatte o no.&lt;/p&gt;
&lt;h3&gt;Verificabilità&lt;/h3&gt;
&lt;p&gt;C&apos;è un ultimo vantaggio pratico: si può controllare tutto senza aspettare l&apos;orario. &lt;code&gt;systemctl list-timers&lt;/code&gt; mostra ogni timer con la sua prossima esecuzione, e il servizio collegato si può avviare a mano per provarlo, indipendentemente dalla pianificazione.&lt;/p&gt;
&lt;h2&gt;Quando cron va ancora bene&lt;/h2&gt;
&lt;p&gt;Non è una gara. Per un&apos;attività semplice, senza bisogno di log strutturati, dipendenze o recupero, cron resta più breve da scrivere ed è disponibile anche su sistemi che non usano systemd. Ma quando conta sapere &lt;em&gt;cosa è successo&lt;/em&gt;, cioè l&apos;output, l&apos;esito e la prossima esecuzione, oppure servono ordine e recupero dopo un&apos;interruzione, i timer offrono molto di più a fronte di un file in più da scrivere.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;systemd è il gestore di sistema e servizi che, su gran parte dei Linux moderni, avvia e sorveglia i programmi della macchina. Descrive ogni cosa come un&apos;unit, e tra queste ci sono i timer: un modo per pianificare attività ricorrenti che, rispetto a cron, aggiunge log integrati nel journal, recupero delle esecuzioni perse e dipendenze. cron non è obsoleto, ma per chi ha bisogno di sapere davvero cosa fanno i propri job pianificati, i timer sono l&apos;alternativa moderna.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi backup e task pianificati che si possono davvero monitorare?&quot; text=&quot;Configuriamo systemd timer, log centralizzati e allarmi sui server Linux che gestiamo, backup compresi.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://manpages.debian.org/testing/systemd/systemd.1.en.html&quot;&gt;systemd(1) - man page (Debian Manpages)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://manpages.debian.org/testing/systemd/systemd.timer.5.en.html&quot;&gt;systemd.timer(5) - man page (Debian Manpages)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://manpages.debian.org/testing/systemd/systemd.time.7.en.html&quot;&gt;systemd.time(7) - sintassi di OnCalendar (Debian Manpages)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://manpages.debian.org/testing/systemd/systemd-journald.service.8.en.html&quot;&gt;systemd-journald.service(8) - il journal (Debian Manpages)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://manpages.debian.org/testing/cron/crontab.5.en.html&quot;&gt;crontab(5) - formato della crontab (Debian Manpages)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>GDPR lato infrastruttura: cosa significa in pratica</title><link>https://initd.it/blog/gdpr-lato-infrastruttura</link><guid isPermaLink="true">https://initd.it/blog/gdpr-lato-infrastruttura</guid><description>Cosa comporta il GDPR sul piano tecnico: cifratura dei dati a riposo e in transito, minimizzazione e conservazione dei log, controllo degli accessi, backup sicuri e dove risiedono i dati. Non è consulenza legale.</description><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Il GDPR viene spesso vissuto come una questione di moduli da firmare e informative da pubblicare. È una parte della storia, ma non tutta. Molte delle regole del regolamento si giocano sui server, nei database e nei backup: cioè sull&apos;infrastruttura. Chi gestisce sistemi non deve dare pareri legali, ma è utile che capisca quali scelte tecniche il regolamento chiede di prendere. Questo articolo prova a spiegarlo in modo semplice.&lt;/p&gt;
&lt;p&gt;Una precisazione doverosa prima di iniziare: &lt;strong&gt;questo non è un parere legale&lt;/strong&gt;. È una spiegazione generale del lato tecnico. Per gli obblighi specifici del proprio caso servono un consulente o il proprio responsabile della protezione dei dati.&lt;/p&gt;
&lt;h2&gt;Di cosa parliamo&lt;/h2&gt;
&lt;p&gt;GDPR sta per &lt;em&gt;General Data Protection Regulation&lt;/em&gt;, in italiano Regolamento generale sulla protezione dei dati. È il Regolamento (UE) 2016/679, approvato il 27 aprile 2016 e applicabile dal 25 maggio 2018. Riguarda il trattamento dei &lt;em&gt;dati personali&lt;/em&gt;, cioè qualsiasi informazione che si riferisce a una persona identificata o identificabile: un nome, un&apos;email, un indirizzo IP, i dati di un ordine.&lt;/p&gt;
&lt;p&gt;Il punto di partenza è semplice. Se un sistema conserva o muove dati di persone, il modo in cui lo fa non è indifferente. Il regolamento chiede che sia fatto con criterio e, in caso di problemi, chiede di poterlo dimostrare.&lt;/p&gt;
&lt;h2&gt;I principi che riguardano chi gestisce i sistemi&lt;/h2&gt;
&lt;p&gt;L&apos;articolo 5 elenca i principi di fondo del trattamento. Tre di questi toccano da vicino l&apos;infrastruttura.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Minimizzazione dei dati.&lt;/strong&gt; I dati raccolti devono essere «adeguati, pertinenti e limitati a quanto necessario» rispetto allo scopo. Tradotto: non si raccoglie tutto per ogni evenienza, ma solo ciò che serve davvero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitazione della conservazione.&lt;/strong&gt; I dati vanno tenuti «per un arco di tempo non superiore» a quello necessario. Cioè: hanno una scadenza, non si accumulano all&apos;infinito.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrità e riservatezza.&lt;/strong&gt; I dati vanno trattati in modo da garantire un&apos;adeguata sicurezza, compresa la protezione da accessi non autorizzati e da perdite o distruzioni accidentali.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C&apos;è poi un quarto principio che fa da cornice, la &lt;strong&gt;responsabilizzazione&lt;/strong&gt; (in inglese &lt;em&gt;accountability&lt;/em&gt;): chi tratta i dati deve non solo rispettare le regole, ma essere «in grado di comprovarlo». È il motivo per cui tante scelte tecniche vanno documentate.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua infrastruttura rispetta questi principi tecnici del GDPR?&quot; text=&quot;Verifichiamo cifratura, log, backup e controllo degli accessi sui sistemi che gestisci.&quot; button=&quot;Chiedi un audit →&quot;}&lt;/p&gt;
&lt;h2&gt;Cifratura: dati a riposo e in transito&lt;/h2&gt;
&lt;p&gt;L&apos;articolo 32 riguarda la sicurezza del trattamento. Tra le misure che cita per nome ci sono «la pseudonimizzazione e la cifratura dei dati personali».&lt;/p&gt;
&lt;p&gt;Cifrare vuol dire trasformare i dati in modo che siano leggibili solo con la chiave giusta. Nella pratica si distinguono due momenti.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;In transito&lt;/strong&gt;, cioè mentre i dati viaggiano in rete. È il caso di un sito che usa HTTPS invece di HTTP, o di un collegamento tra due server dentro un &lt;a href=&quot;/blog/cos-e-una-vpn-wireguard&quot;&gt;tunnel cifrato&lt;/a&gt;. Chi intercetta il traffico vede passare qualcosa, ma non riesce a leggerlo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A riposo&lt;/strong&gt;, cioè mentre i dati stanno fermi su un disco. Se il supporto viene rubato o una copia finisce nelle mani sbagliate, senza la chiave resta illeggibile, un principio che vale anche sullo storage cloud, dove per esempio &lt;a href=&quot;/blog/aws-s3-sse-c-default&quot;&gt;S3 ha cambiato le impostazioni predefinite di cifratura&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo stesso articolo considera i rischi legati alla distruzione, perdita, modifica, divulgazione o accesso non autorizzato a dati «trasmessi, conservati o comunque trattati». Da qui la distinzione pratica tra dati in movimento e dati fermi.&lt;/p&gt;
&lt;h2&gt;Log: utili, ma non per sempre&lt;/h2&gt;
&lt;p&gt;I log - i registri di ciò che accade su un sistema - sono preziosi per capire i problemi e ricostruire un incidente. Ma spesso contengono dati personali: un indirizzo IP, un nome utente, l&apos;orario di un accesso.&lt;/p&gt;
&lt;p&gt;Questo significa che anche ai log si applicano gli stessi principi. &lt;strong&gt;Minimizzazione&lt;/strong&gt;: registrare ciò che serve, non tutto per abitudine. &lt;strong&gt;Limitazione della conservazione&lt;/strong&gt;: definire per quanto tempo tenerli e poi cancellarli o anonimizzarli. Tenere i log all&apos;infinito «per sicurezza» va nella direzione opposta a quella che il regolamento indica.&lt;/p&gt;
&lt;h2&gt;Controllo e tracciamento degli accessi&lt;/h2&gt;
&lt;p&gt;Un&apos;idea ricorrente è che a un dato debba poter accedere solo chi ne ha davvero bisogno, e per il tempo in cui ne ha bisogno. Sul piano tecnico questo si traduce in cose concrete: account personali invece di credenziali condivise, permessi assegnati per ruolo, revoca degli accessi quando una persona cambia mansione o lascia l&apos;organizzazione, magari partendo da un unico punto di ingresso sorvegliato come un &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;bastion host&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Accanto al controllo c&apos;è il tracciamento: sapere chi ha fatto cosa e quando. Serve sia a scoraggiare gli abusi sia, in caso di incidente, a capire cosa è successo. È anche uno degli strumenti con cui si dimostra di aver agito con criterio.&lt;/p&gt;
&lt;h2&gt;Backup sicuri&lt;/h2&gt;
&lt;p&gt;L&apos;articolo 32 cita anche la capacità di ripristinare tempestivamente la disponibilità e l&apos;accesso ai dati dopo un incidente fisico o tecnico. In altre parole: i backup non sono solo una buona pratica, sono parte della sicurezza richiesta.&lt;/p&gt;
&lt;p&gt;Ma un backup è a tutti gli effetti una copia dei dati, e va protetto come l&apos;originale, idealmente seguendo una strategia strutturata come &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;la regola del 3-2-1&lt;/a&gt;. Se i dati in produzione sono cifrati e le copie no, la protezione ha un buco. Per questo un backup andrebbe cifrato, conservato in un luogo sicuro e testato: una copia che non si riesce a ripristinare non protegge nessuno. Lo stesso criterio, con copie anche offline, ritorna nei requisiti NIS2 che le aziende obbligate chiedono ai propri fornitori: ne parliamo in &lt;a href=&quot;/blog/nis2-fornitori-pmi-cosa-fare&quot;&gt;NIS2 e fornitori&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Dove risiedono i dati&lt;/h2&gt;
&lt;p&gt;Un&apos;altra domanda che il regolamento rende rilevante è semplice: dove si trovano fisicamente i dati? Il GDPR pone condizioni specifiche per il trasferimento di dati personali fuori dall&apos;Unione europea. Non è un divieto, ma richiede garanzie.&lt;/p&gt;
&lt;p&gt;Per chi gestisce infrastruttura questo si traduce in scelte concrete su &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;come scegliere il fornitore cloud&lt;/a&gt; e sulla regione in cui girano i server e vengono conservati i backup. Sapere in quale Paese risiedono i dati non è un dettaglio burocratico: è un&apos;informazione tecnica che conviene conoscere.&lt;/p&gt;
&lt;h2&gt;Un approccio, non una lista di regole&lt;/h2&gt;
&lt;p&gt;Verrebbe voglia di avere una checklist fissa di «misure minime». Il regolamento non funziona così. Come ricorda anche il Garante per la protezione dei dati personali, l&apos;elenco dell&apos;articolo 32 è aperto e non esaustivo, e dopo il 25 maggio 2018 non esistono obblighi generalizzati di misure minime: la scelta è rimessa caso per caso al titolare, in rapporto ai rischi concreti. Un punto fermo però c&apos;è: difendere come adeguato &lt;a href=&quot;/blog/php-fine-vita-cosa-rischi&quot;&gt;un software abbandonato dal produttore&lt;/a&gt; è quasi impossibile.&lt;/p&gt;
&lt;p&gt;Questo è il concetto di protezione «fin dalla progettazione», previsto dall&apos;articolo 25: la tutela dei dati va pensata all&apos;inizio, quando si progetta un sistema, non aggiunta alla fine. E va proporzionata al rischio: i dati di un forum di quartiere e quelli sanitari di una clinica non richiedono le stesse cautele.&lt;/p&gt;
&lt;p&gt;Un ultimo punto pratico. Se avviene una violazione dei dati che comporta un rischio per le persone, il titolare deve notificarla all&apos;autorità di controllo «senza ingiustificato ritardo e, ove possibile, entro 72 ore». Avere in anticipo log, backup e un minimo di procedura rende questa scadenza gestibile invece che un&apos;emergenza.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Sul piano infrastrutturale il GDPR chiede cose ragionevoli: cifrare i dati fermi e in movimento, raccogliere e conservare solo il necessario, controllare e tracciare gli accessi, proteggere i backup, sapere dove risiedono i dati. Non è una lista da spuntare una volta sola, ma un modo di progettare i sistemi proporzionato al rischio e capace di rendere conto delle proprie scelte. Il lato legale resta un altro mestiere: per gli obblighi del proprio caso serve un consulente.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi adeguare l&apos;infrastruttura ai requisiti tecnici del GDPR?&quot; text=&quot;Interveniamo su cifratura dei dati, gestione dei log, backup e controllo degli accessi dei server che amministriamo, in coordinamento con il tuo responsabile della protezione dei dati.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://eur-lex.europa.eu/eli/reg/2016/679/oj/ita&quot;&gt;Regolamento (UE) 2016/679 - testo ufficiale su EUR-Lex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.garanteprivacy.it/gdpr&quot;&gt;Garante per la protezione dei dati personali - GDPR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.garanteprivacy.it/misure-di-sicurezza&quot;&gt;Garante - Misure di sicurezza (articolo 32, lista aperta)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gdpr-info.eu/art-32-gdpr/&quot;&gt;Art. 32 GDPR - Sicurezza del trattamento&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gdpr-info.eu/art-5-gdpr/&quot;&gt;Art. 5 GDPR - Principi del trattamento&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Oltre metà del traffico web è ormai post-quantum: cosa significa</title><link>https://initd.it/blog/traffico-web-post-quantum</link><guid isPermaLink="true">https://initd.it/blog/traffico-web-post-quantum</guid><description>A fine ottobre 2025 più della metà del traffico web umano verso Cloudflare usa crittografia post-quantum. Cosa vuol dire, contro quale minaccia protegge e cosa manca ancora.</description><pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A fine ottobre 2025 Cloudflare, una delle grandi reti che smistano una fetta importante del traffico di Internet, ha annunciato un traguardo: oltre la metà del traffico web avviato da persone che passa dai suoi server è ormai protetto con crittografia &lt;strong&gt;post-quantum&lt;/strong&gt;. È un termine che sa di laboratorio, ma la questione riguarda chiunque usi un sito, faccia acquisti online o mandi un messaggio. Vale la pena capire cosa vuol dire, contro quale minaccia protegge e cosa resta ancora da fare.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;L&apos;annuncio segna un punto di svolta silenzioso. Fino a pochi anni fa la crittografia post-quantum era confinata agli esperimenti; oggi è attiva per impostazione predefinita in buona parte dei browser più diffusi. &lt;a href=&quot;/blog/chrome-post-quantum-tls&quot;&gt;Chrome l&apos;ha abilitata sui computer&lt;/a&gt; da marzo 2024 e su Android da novembre 2024; nel corso del 2025 si sono aggiunti Firefox e i sistemi di Apple, su iPhone, iPad e Mac. Il risultato è che, senza che l&apos;utente debba fare nulla, più di una connessione su due parte già protetta contro un attacco che oggi non è ancora possibile, ma che potrebbe diventarlo.&lt;/p&gt;
&lt;h2&gt;Il problema: &quot;raccogli ora, decifra dopo&quot;&lt;/h2&gt;
&lt;p&gt;Per capire perché tutto questo conta bisogna partire da una minaccia dal nome poco rassicurante: &lt;strong&gt;harvest now, decrypt later&lt;/strong&gt;, cioè &quot;raccogli ora, decifra dopo&quot;. L&apos;idea è semplice e sgradevole. Oggi il traffico su Internet è cifrato: quando nel browser compare il lucchetto, i dati che viaggiano tra il dispositivo e il sito sono resi illeggibili a chi li intercetta. Questa protezione regge perché i computer attuali non hanno la potenza di calcolo per forzarla in tempi ragionevoli.&lt;/p&gt;
&lt;p&gt;Il punto è che i &lt;strong&gt;computer quantistici&lt;/strong&gt; - una tecnologia ancora in sviluppo, basata su principi diversi da quelli dei computer tradizionali - potrebbero un giorno rompere buona parte della crittografia che usiamo adesso. Quel momento ipotetico viene chiamato &quot;Q-day&quot;. Nessuno sa con certezza se e quando arriverà: le stime degli esperti vanno da poco più di dieci anni a diversi decenni. C&apos;è però un dettaglio che rende il problema attuale e non futuro: chi intercetta traffico cifrato oggi può conservarlo e archiviarlo, in attesa di poterlo decifrare quando la tecnologia lo permetterà. Dati che restano sensibili per anni - cartelle cliniche, segreti industriali, comunicazioni riservate - sono quindi a rischio già ora, anche se il computer capace di aprirli non esiste ancora.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai se i tuoi server supportano già lo scambio di chiavi post-quantum?&quot; text=&quot;Verifichiamo la configurazione TLS dei tuoi server e la compatibilità con gli algoritmi post-quantum.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;La risposta: crittografia post-quantum&lt;/h2&gt;
&lt;p&gt;La contromisura si chiama &lt;strong&gt;crittografia post-quantum&lt;/strong&gt;: nuovi algoritmi progettati per resistere anche a un computer quantistico. Non richiedono hardware speciale, sono normale software e possono girare sui dispositivi di tutti i giorni. La parte arrivata per prima riguarda lo &lt;strong&gt;scambio di chiavi&lt;/strong&gt; (in inglese &lt;em&gt;key exchange&lt;/em&gt; o &lt;em&gt;key agreement&lt;/em&gt;): il momento iniziale di una connessione sicura in cui il browser e il sito si mettono d&apos;accordo su una chiave segreta condivisa, che poi serve a cifrare tutto il resto della conversazione. È proprio questo passaggio a essere esposto all&apos;attacco &quot;raccogli ora, decifra dopo&quot;, ed è quindi il primo da mettere in sicurezza.&lt;/p&gt;
&lt;h2&gt;Lo scambio di chiavi ibrido&lt;/h2&gt;
&lt;p&gt;Nella pratica non si è buttata via la crittografia di prima per sostituirla con quella nuova. Si usa un approccio &lt;strong&gt;ibrido&lt;/strong&gt;: si combinano un algoritmo classico, collaudato da anni, e uno post-quantum. La connessione resta protetta se almeno uno dei due regge. Così, se in futuro si scoprisse una debolezza nel nuovo algoritmo - cosa non impossibile, visto che è recente - resterebbe comunque la protezione di quello tradizionale; e all&apos;inverso, contro un attacco quantistico, protegge la parte nuova. In pratica, cintura e bretelle insieme.&lt;/p&gt;
&lt;p&gt;Lo schema più diffuso in questo momento si chiama &lt;strong&gt;X25519MLKEM768&lt;/strong&gt;. Il nome è ostico, ma dice esattamente cosa contiene: &lt;em&gt;X25519&lt;/em&gt; è l&apos;algoritmo classico usato da anni per lo scambio di chiavi, &lt;em&gt;ML-KEM-768&lt;/em&gt; è la parte post-quantum. ML-KEM (sigla di &lt;em&gt;Module-Lattice-Based Key-Encapsulation Mechanism&lt;/em&gt;, in precedenza noto come Kyber) è stato standardizzato ufficialmente dall&apos;ente statunitense NIST il 13 agosto 2024, con il nome di &lt;strong&gt;FIPS 203&lt;/strong&gt;. Non è quindi la sperimentazione di un singolo fornitore, ma uno standard pubblico su cui l&apos;industria si sta allineando. Il tutto viaggia dentro &lt;strong&gt;&lt;a href=&quot;/blog/tls-encrypted-client-hello&quot;&gt;TLS 1.3&lt;/a&gt;&lt;/strong&gt;, il protocollo che sta dietro all&apos;&lt;code&gt;https&lt;/code&gt; e al lucchetto del browser.&lt;/p&gt;
&lt;h2&gt;Perché &quot;oltre il 50%&quot; è una tappa concreta&lt;/h2&gt;
&lt;p&gt;Che una fetta così ampia del traffico usi già questi algoritmi non è un dettaglio da addetti ai lavori. Superare la metà significa che la protezione non è più un&apos;eccezione, ma sta diventando la norma, in modo trasparente per chi naviga. Il merito è soprattutto dei browser, che l&apos;hanno attivata di default: l&apos;utente non ha dovuto installare o configurare niente. Sul lato dei siti la diffusione è più indietro - scansioni di settembre 2025 indicavano circa il 39% dei server web pubblici pronti a usarla - ma la direzione è chiara. Va anche ricordato che il dato di Cloudflare riguarda il traffico &quot;avviato da persone&quot;, cioè le connessioni di browser reali, tenute distinte da quelle automatiche dei bot.&lt;/p&gt;
&lt;h2&gt;Cosa manca ancora: firme e certificati&lt;/h2&gt;
&lt;p&gt;Il quadro, però, è a metà. La crittografia serve a due cose diverse, ed entrambe vanno rese post-quantum. La prima è tenere segreti i dati: è lo scambio di chiavi di cui si è parlato, ed è la parte già in produzione. La seconda è l&apos;&lt;strong&gt;autenticazione&lt;/strong&gt;: assicurarsi di parlare davvero con il sito giusto e non con un impostore. Questo si basa sui &lt;strong&gt;certificati&lt;/strong&gt; e sulle &lt;strong&gt;firme digitali&lt;/strong&gt;, ed è la parte ancora indietro.&lt;/p&gt;
&lt;p&gt;Il motivo è tecnico ma comprensibile: le firme post-quantum occupano molto più spazio di quelle attuali, e questo crea problemi di prestazioni e di compatibilità con sistemi pensati per dimensioni più piccole. Al momento della notizia, a ottobre 2025, gli standard per i certificati post-quantum non erano ancora definitivi; il lavoro sui certificati &quot;ibridi&quot; era in corso, con la speranza di chiuderlo all&apos;inizio del 2026. Difficilmente si vedranno certificati simili in uso diffuso prima del 2027. Restano intanto pronti altri standard NIST per le firme - ML-DSA (FIPS 204) e SLH-DSA (FIPS 205), pubblicati anch&apos;essi nel 2024 - e un algoritmo di riserva per lo scambio di chiavi, &lt;a href=&quot;/blog/nist-hqc-post-quantum&quot;&gt;HQC&lt;/a&gt;, scelto a marzo 2025 come alternativa basata su principi matematici diversi.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Per la maggior parte delle persone non c&apos;è nulla da fare: basta tenere aggiornati browser e sistema operativo, e la protezione arriva da sola. Per chi gestisce siti e server il messaggio è di prepararsi senza fretta ma senza rimandare: verificare che il proprio stack supporti lo scambio di chiavi post-quantum, tenere aggiornato il software e, guardando più avanti, abituarsi all&apos;idea che &lt;a href=&quot;/blog/tls-certificati-47-giorni&quot;&gt;i certificati andranno rinnovati con nuovi formati&lt;/a&gt;. Diverse autorità - statunitensi, europee, britanniche, australiane - indicano scadenze di migrazione tra il 2030 e il 2035: c&apos;è tempo, ma non è una buona ragione per aspettare in modo passivo.&lt;/p&gt;
&lt;p&gt;Il superamento del 50% non risolve il problema, ma segna che la transizione è iniziata sul serio e sta procedendo in silenzio, un aggiornamento del browser alla volta.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi adeguare la tua infrastruttura alla crittografia post-quantum?&quot; text=&quot;Aggiorniamo e gestiamo la configurazione TLS dei server che seguiamo, con attenzione a certificati e algoritmi supportati.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/pq-2025/&quot;&gt;State of the post-quantum Internet in 2025 - Cloudflare Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/pubs/fips/203/final&quot;&gt;FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard - NIST&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Agent Skills: impacchettare il know-how per gli assistenti AI</title><link>https://initd.it/blog/agent-skills</link><guid isPermaLink="true">https://initd.it/blog/agent-skills</guid><description>Anthropic ha presentato le Agent Skills: cartelle con un file SKILL.md che raccolgono istruzioni e script riutilizzabili per gli agenti. Cosa sono, che problema risolvono e perché contano, spiegato in modo semplice.</description><pubDate>Thu, 16 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gli assistenti basati sull&apos;intelligenza artificiale sono bravi a rispondere a domande e a scrivere testi. Quando però devono seguire una procedura precisa - il modo in cui una certa azienda prepara un report, applica una convenzione sui nomi dei file o compila un modulo - vanno guidati ogni volta. Di solito si finisce per reincollare le stesse istruzioni in ogni conversazione, oppure per costruire un assistente su misura per ciascun compito. Il 16 ottobre 2025 Anthropic, l&apos;azienda che sviluppa l&apos;assistente Claude, ha presentato le &lt;strong&gt;Agent Skills&lt;/strong&gt;: un modo per impacchettare quelle istruzioni, e gli eventuali script, in cartelle riutilizzabili che l&apos;assistente carica solo quando servono.&lt;/p&gt;
&lt;p&gt;Dietro il nome tecnico c&apos;è un&apos;idea semplice, che riguarda chiunque usi l&apos;AI per compiti che si ripetono. Vale la pena capirla.&lt;/p&gt;
&lt;h2&gt;Prima, un chiarimento sui termini&lt;/h2&gt;
&lt;p&gt;Qui per &lt;strong&gt;agente&lt;/strong&gt; si intende un assistente AI che non si limita a rispondere, ma può &lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;usare strumenti&lt;/a&gt; e compiere più passi per portare a termine un&apos;attività: leggere un file, eseguire un piccolo programma, produrre un documento. Un altro termine utile è &lt;strong&gt;contesto&lt;/strong&gt;: è tutto ciò che l&apos;assistente &quot;ha davanti&quot; mentre lavora, cioè la richiesta dell&apos;utente più le istruzioni e le informazioni caricate in quel momento. Il contesto ha uno spazio limitato: più roba ci si mette, più diventa dispersivo e costoso. Tenere a mente questo limite aiuta a capire perché le Skills sono fatte come sono.&lt;/p&gt;
&lt;h2&gt;Il problema: ogni procedura riscritta da capo&lt;/h2&gt;
&lt;p&gt;Un&apos;azienda accumula col tempo un patrimonio di &quot;come si fa qui&quot;: il formato standard di una fattura, i passaggi per generare un bilancio mensile, le regole di stile per un testo, la sequenza esatta per preparare un pacchetto software. Sono conoscenze procedurali, spesso non scritte da nessuna parte in modo ordinato.&lt;/p&gt;
&lt;p&gt;Per far seguire una di queste procedure a un assistente AI ci sono due strade, entrambe scomode. La prima è incollare le istruzioni nella conversazione ogni volta: funziona, ma è ripetitivo e facile da sbagliare, e occupa spazio prezioso nel contesto. La seconda è costruire un assistente dedicato per ogni singolo compito: preciso, ma richiede lavoro tecnico e va rifatto per ognuna delle tante procedure. In entrambi i casi il know-how resta difficile da riutilizzare e da condividere.&lt;/p&gt;
&lt;p&gt;Le Agent Skills nascono per togliere di mezzo proprio questa frizione: scrivere una procedura una volta, in un formato ordinato, e poterla poi richiamare quando serve senza reincollarla.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Le procedure della tua azienda vivono solo nella testa di qualcuno?&quot; text=&quot;Valutiamo con te quali processi ripetitivi convertire in automazioni o Skill riutilizzabili, con giudizio su sicurezza e costi.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Cos&apos;è una Skill: una cartella con dentro le istruzioni&lt;/h2&gt;
&lt;p&gt;Nella pratica una Skill è semplicemente una &lt;strong&gt;cartella&lt;/strong&gt;. Dentro c&apos;è un file obbligatorio chiamato &lt;code&gt;SKILL.md&lt;/code&gt; e, se servono, altri file: documenti di approfondimento, esempi, oppure piccoli script pronti all&apos;uso.&lt;/p&gt;
&lt;p&gt;Il file &lt;code&gt;SKILL.md&lt;/code&gt; è scritto in un formato leggibile anche da una persona. In cima ha poche righe di metadati in YAML - un modo essenziale per annotare coppie &quot;etichetta: valore&quot; - con almeno un &lt;strong&gt;nome&lt;/strong&gt; e una &lt;strong&gt;descrizione&lt;/strong&gt; di cosa fa la Skill. Sotto, in Markdown (lo stesso testo semplice di tanti file di appunti), ci sono le istruzioni vere e proprie: i passaggi da seguire, le convenzioni da rispettare, gli esempi. In sostanza è un foglio di istruzioni ordinato. Anthropic usa un&apos;analogia efficace: costruire una Skill è come preparare la guida di benvenuto per una persona appena assunta.&lt;/p&gt;
&lt;p&gt;Una struttura minima somiglia a questa:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;report-mensile/
  SKILL.md        # cosa fa e come si fa, passo per passo
  esempio.md      # un caso già svolto, come riferimento
  genera.py       # uno script opzionale per i passaggi ripetitivi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il fatto che sia una cartella con file di testo ha un vantaggio pratico non piccolo: una Skill si può salvare, versionare come si fa con il codice, e passare a un collega semplicemente condividendo la cartella.&lt;/p&gt;
&lt;h2&gt;Il trucco: caricare le informazioni a strati&lt;/h2&gt;
&lt;p&gt;Se ogni Skill venisse caricata per intero e sempre, si tornerebbe al problema del contesto ingombro. Le Agent Skills evitano questo con un caricamento &lt;strong&gt;progressivo&lt;/strong&gt;, cioè a strati, per mettere davanti all&apos;assistente solo ciò che serve al momento.&lt;/p&gt;
&lt;p&gt;Funziona così, in tre livelli:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All&apos;avvio l&apos;assistente conosce soltanto &lt;strong&gt;nome e descrizione&lt;/strong&gt; di ogni Skill disponibile. Poche righe a testa: giusto abbastanza per sapere che quella Skill esiste e a cosa serve.&lt;/li&gt;
&lt;li&gt;Quando la richiesta dell&apos;utente combacia con una Skill, l&apos;assistente apre e legge il &lt;strong&gt;contenuto completo&lt;/strong&gt; del relativo &lt;code&gt;SKILL.md&lt;/code&gt;, con tutte le istruzioni.&lt;/li&gt;
&lt;li&gt;Se il &lt;code&gt;SKILL.md&lt;/code&gt; rimanda ad altri file - un documento di dettaglio, un esempio lungo - quelli vengono aperti &lt;strong&gt;solo se davvero necessari&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il risultato è che si possono tenere a disposizione molte Skills, anche corpose, senza appesantire ogni conversazione. L&apos;assistente &quot;sfoglia l&apos;indice&quot; e va a leggere il capitolo giusto solo quando gli serve, invece di tenere tutti i manuali aperti sulla scrivania.&lt;/p&gt;
&lt;p&gt;C&apos;è un secondo elemento utile: una Skill può includere &lt;strong&gt;script già scritti&lt;/strong&gt;, per esempio in Python. Per i passaggi ripetitivi e meccanici, l&apos;assistente può eseguire quel codice invece di improvvisare la procedura ogni volta, un po&apos; come si affida a un &lt;a href=&quot;/blog/systemd-timer-alternativa-cron&quot;&gt;timer automatico&lt;/a&gt; un compito che altrimenti andrebbe rilanciato a mano. Per certi compiti è più affidabile e più economico far girare uno script collaudato che chiedere al modello di rifare tutto a mano.&lt;/p&gt;
&lt;h2&gt;Dove si possono usare&lt;/h2&gt;
&lt;p&gt;Le Agent Skills funzionano nello stesso formato in più contesti: l&apos;app di Claude (per i piani Pro, Max, Team ed Enterprise), lo strumento per sviluppatori Claude Code, l&apos;API rivolta agli sviluppatori e l&apos;Agent SDK, cioè il kit per costruire i propri agenti. Lo stesso pacchetto, quindi, si sposta da un ambiente all&apos;altro senza doverlo riscrivere.&lt;/p&gt;
&lt;p&gt;Al lancio Anthropic ha messo a disposizione alcune Skills pronte per compiti d&apos;ufficio molto comuni: creare fogli di calcolo Excel con le formule, presentazioni PowerPoint, documenti Word e moduli PDF compilabili. C&apos;è poi una Skill particolare, la &lt;strong&gt;skill-creator&lt;/strong&gt;, che aiuta a costruirne di nuove in modo guidato: fa domande sul flusso di lavoro, prepara la struttura di cartelle e imposta il file &lt;code&gt;SKILL.md&lt;/code&gt;. Un modo per iniziare senza partire dal foglio bianco.&lt;/p&gt;
&lt;p&gt;Sul piano della disponibilità, va detto per correttezza che non tutto è identico ovunque: l&apos;uso via API, per esempio, si appoggia alla funzione di esecuzione del codice, ancora in fase beta, e negli account aziendali un amministratore deve abilitare la funzione per l&apos;organizzazione. Dettagli, ma utili per non farsi trovare impreparati.&lt;/p&gt;
&lt;h2&gt;Perché è utile a chi ha procedure ricorrenti&lt;/h2&gt;
&lt;p&gt;Il valore vero non sta in una singola funzione, ma nello spostamento di lavoro che rende possibile. Una procedura scritta bene una volta smette di essere un&apos;istruzione da ripetere a voce e diventa un pezzo riutilizzabile: si richiama quando serve, si può migliorare nel tempo modificando un file, si passa a un collega condividendo una cartella. In pratica è un modo per &lt;strong&gt;capitalizzare&lt;/strong&gt; il know-how che oggi vive nella testa delle persone o sparso in appunti diversi.&lt;/p&gt;
&lt;p&gt;Per chi gestisce sistemi e infrastrutture il paragone è immediato: è la stessa logica per cui una procedura ripetitiva conviene metterla in uno script o in un &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;playbook&lt;/a&gt;, invece di eseguirla a memoria ogni volta. Qui il &quot;playbook&quot; è scritto in modo che possa seguirlo un assistente AI, con la possibilità di includere anche il codice per i passaggi meccanici.&lt;/p&gt;
&lt;h2&gt;Attenzione alla provenienza&lt;/h2&gt;
&lt;p&gt;Una nota di prudenza, che Anthropic stessa mette in evidenza. Una Skill può contenere istruzioni e codice che vengono eseguiti, e può indicare all&apos;assistente di accedere a risorse esterne. Vanno quindi installate solo da fonti di cui ci si fida, e quelle di provenienza incerta è bene esaminarle prima: cosa contengono i file, se il codice si collega a servizi esterni, se ci sono istruzioni che potrebbero portare dati fuori dove non dovrebbero. È la stessa cautela che si userebbe prima di far girare &lt;a href=&quot;/blog/pacchetti-npm-compromessi-quarantena&quot;&gt;uno script scaricato da internet&lt;/a&gt;. La comodità non toglie la responsabilità di controllare.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Le Agent Skills, presentate da Anthropic il 16 ottobre 2025, sono cartelle che raccolgono istruzioni e script riutilizzabili per gli assistenti AI, con al centro un file &lt;code&gt;SKILL.md&lt;/code&gt; in testo semplice. Risolvono un problema concreto e quotidiano: non dover riscrivere ogni volta le stesse procedure. Il caricamento a strati permette di tenerne a disposizione molte senza ingombrare il contesto, e la possibilità di includere script rende più affidabili i passaggi ripetitivi. Funzionano nell&apos;app, in Claude Code, via API e con l&apos;Agent SDK. Quanto diventerà uno strumento diffuso lo diranno i mesi a venire; l&apos;idea di fondo, però, è chiara e sensata: mettere il know-how in un formato ordinato e riutilizzabile, invece di ripeterlo a voce ogni volta.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi portare l&apos;AI dentro i flussi di lavoro della tua azienda?&quot; text=&quot;Progettiamo integrazioni AI su misura nei vostri applicativi Laravel e Vue, valutando sicurezza dei dati e costi prima di andare in produzione.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills&quot;&gt;Equipping agents for the real world with Agent Skills - Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://claude.com/blog/skills&quot;&gt;Agent Skills - Claude (Anthropic)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Transizioni animate native nel browser: le View Transitions diventano Baseline</title><link>https://initd.it/blog/view-transitions-baseline</link><guid isPermaLink="true">https://initd.it/blog/view-transitions-baseline</guid><description>Le View Transitions same-document sono ora supportate da tutti i browser principali. Cosa sono, quale problema risolvono e perché semplificano le animazioni tra gli stati di una pagina, senza librerie JavaScript.</description><pubDate>Tue, 21 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cambiare schermata su un sito è quasi sempre uno scatto secco: un contenuto sparisce, un altro appare, senza alcun passaggio morbido. Per ottenere quelle animazioni fluide che si vedono nelle app - un&apos;immagine che si ingrandisce, un elenco che scorre in modo ordinato - di solito servono librerie JavaScript dedicate, con codice da scrivere e mantenere. A metà ottobre 2025 è arrivata una novità che riguarda chi costruisce siti: le View Transitions same-document, cioè le transizioni animate all&apos;interno della stessa pagina, sono diventate Baseline. In parole semplici, ora funzionano in modo affidabile su tutti i principali browser, e il grosso del lavoro lo fa il browser stesso.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;Il 14 ottobre 2025 le View Transitions same-document hanno raggiunto lo stato &quot;Baseline Newly available&quot;. Il passaggio è avvenuto con l&apos;uscita di Firefox 144, l&apos;ultimo dei tre principali motori di browser a supportare la funzione. Google Chrome la offre dal 2023 (dalla versione 111) e Safari di Apple dalla versione 18, uscita a settembre 2024. Con Firefox il cerchio si chiude: la stessa funzione, scritta una volta, si comporta allo stesso modo ovunque. Il traguardo rientra in Interop 2025, l&apos;iniziativa con cui i produttori di browser concordano un elenco di funzioni web da rendere compatibili tra loro nell&apos;arco dell&apos;anno.&lt;/p&gt;
&lt;h2&gt;Cosa vuol dire &quot;Baseline&quot;&lt;/h2&gt;
&lt;p&gt;Baseline è un&apos;etichetta pensata per rispondere a una domanda pratica: posso usare questa funzione senza il timore di lasciare fuori una fetta di visitatori? Una funzione è Baseline quando è supportata dalle versioni recenti dei browser costruiti sui tre motori più diffusi: Chromium (Chrome, Edge e altri), WebKit (Safari) e Gecko (Firefox).&lt;/p&gt;
&lt;p&gt;Lo stato &quot;Newly available&quot; indica che il traguardo è stato appena raggiunto: la funzione è pronta all&apos;uso, ma i dispositivi più datati potrebbero avere versioni di browser ancora prive del supporto. Con il tempo, quando gli aggiornamenti si diffondono, lo stato passa a &quot;Widely available&quot;. Sapere che una funzione è Baseline aiuta a decidere con serenità se adottarla in un progetto reale.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo sito cambia schermata con uno scatto secco invece che con una transizione morbida?&quot; text=&quot;Verifichiamo se puoi già sfruttare le View Transitions native senza aggiungere librerie.&quot; button=&quot;Verifica il tuo sito →&quot;}&lt;/p&gt;
&lt;h2&gt;Che cos&apos;è una view transition&lt;/h2&gt;
&lt;p&gt;Una view transition è un&apos;animazione che collega due stati di una pagina. Immagina una galleria di foto: si tocca una miniatura e la si vede crescere fino a diventare l&apos;immagine grande, invece di comparire di colpo. Prima, un effetto del genere andava costruito a mano.&lt;/p&gt;
&lt;p&gt;Il meccanismo, dal punto di vista del browser, è semplice da raccontare. Quando si avvia una transizione, il browser scatta una &quot;fotografia&quot; della pagina com&apos;è adesso, lascia che il contenuto cambi, scatta una seconda fotografia del nuovo stato e anima il passaggio dalla prima alla seconda. L&apos;effetto predefinito è una dissolvenza incrociata: il vecchio aspetto sfuma mentre il nuovo compare. Con poche righe di stile CSS si possono poi ottenere movimenti più elaborati, come uno scorrimento o un ingrandimento.&lt;/p&gt;
&lt;p&gt;La novità di ottobre riguarda le transizioni same-document, cioè quelle che avvengono senza cambiare pagina, mentre il contenuto viene aggiornato via JavaScript. È lo scenario tipico delle applicazioni a pagina singola (in inglese single-page application), dove il sito riscrive parti della schermata senza ricaricare tutto. Esiste anche una variante cross-document, pensata per le transizioni tra pagine diverse durante la normale navigazione: è una funzione collegata ma distinta, che segue un percorso a sé e non è l&apos;oggetto di questo annuncio.&lt;/p&gt;
&lt;h2&gt;Il problema che risolve&lt;/h2&gt;
&lt;p&gt;Fino a ieri, per animare in modo curato il passaggio tra due stati servivano quasi sempre librerie JavaScript specializzate, un po&apos; come succedeva per posizionare tooltip e menu prima del &lt;a href=&quot;/blog/css-anchor-positioning&quot;&gt;CSS Anchor Positioning&lt;/a&gt;. Sono strumenti validi, ma hanno un costo: codice in più da caricare e mantenere, animazioni da sincronizzare a mano, e il rischio di appesantire la pagina. C&apos;è anche un tema di coerenza, perché ogni libreria fa le cose a modo suo.&lt;/p&gt;
&lt;p&gt;Spostando questo lavoro dentro il browser, gran parte di quel codice non serve più. Il browser conosce la posizione e l&apos;aspetto degli elementi prima e dopo il cambiamento, quindi può calcolare l&apos;animazione in modo efficiente. Per molti casi comuni si ottiene così una transizione gradevole senza aggiungere alcuna libreria, con un beneficio indiretto anche sulla reattività della pagina alle interazioni, la stessa che misura l&apos;&lt;a href=&quot;/blog/inp-core-web-vital&quot;&gt;INP&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Come funziona, in pratica&lt;/h2&gt;
&lt;p&gt;Il cuore della funzione è un solo metodo, &lt;code&gt;document.startViewTransition()&lt;/code&gt;. Gli si passa la funzione che modifica il contenuto della pagina, e il browser si occupa dell&apos;animazione.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Aggiornamento senza animazione
function aggiornaPagina() {
  // ... qui si modifica il contenuto della pagina ...
}

// Con una transizione animata, quando il browser la supporta
function aggiornaConTransizione() {
  if (!document.startViewTransition) {
    aggiornaPagina(); // ripiego: aggiorna e basta
    return;
  }
  document.startViewTransition(() =&amp;gt; aggiornaPagina());
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il punto chiave è il controllo &lt;code&gt;if (!document.startViewTransition)&lt;/code&gt;: se il browser non conosce la funzione, il contenuto viene aggiornato lo stesso, solo senza animazione. Questo approccio, chiamato miglioramento progressivo, fa sì che il sito resti pienamente funzionante ovunque, con l&apos;animazione come extra dove è disponibile.&lt;/p&gt;
&lt;p&gt;Per animare un singolo elemento in modo indipendente dal resto - per esempio far &quot;viaggiare&quot; un&apos;immagine dalla miniatura alla sua versione grande - si assegna un nome tramite la proprietà CSS &lt;code&gt;view-transition-name&lt;/code&gt;. Il browser riconosce che quell&apos;elemento è lo stesso prima e dopo il cambiamento, e lo anima di conseguenza invece di limitarsi alla dissolvenza generale.&lt;/p&gt;
&lt;h2&gt;Cosa cambia per chi fa frontend, e qualche avvertenza&lt;/h2&gt;
&lt;p&gt;Per chi sviluppa interfacce, il vantaggio principale è meno codice da scrivere per un risultato più fluido. Restano però un paio di dettagli da tenere presenti.&lt;/p&gt;
&lt;p&gt;Il primo riguarda Firefox: la sua prima versione con questa funzione non include ancora le cosiddette tipologie di transizione (view transition types), uno strumento più avanzato per applicare animazioni diverse a seconda del contesto. Chi ne ha bisogno può prevedere un comportamento di ripiego, esattamente come nel controllo mostrato sopra.&lt;/p&gt;
&lt;p&gt;Il secondo è l&apos;accessibilità. Non tutti gradiscono le animazioni, e alcune persone le trovano fastidiose o fonte di disagio. I sistemi operativi offrono un&apos;impostazione per ridurre il movimento, che sul web si legge con la regola CSS &lt;code&gt;prefers-reduced-motion&lt;/code&gt;. È buona norma rispettarla, riducendo o togliendo l&apos;animazione a chi l&apos;ha richiesta.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Le View Transitions same-document sono diventate Baseline il 14 ottobre 2025, con l&apos;arrivo del supporto in Firefox 144 accanto a Chrome e Safari. In pratica, il browser può ora animare da solo il passaggio tra due stati di una pagina, un compito che prima richiedeva quasi sempre librerie JavaScript, proprio come sta succedendo con altre funzioni portate nativamente nel browser, ad esempio &lt;a href=&quot;/blog/prompt-api-ai-nel-browser&quot;&gt;l&apos;intelligenza artificiale eseguita direttamente lì dentro&lt;/a&gt;. Per chi costruisce siti significa meno codice, animazioni più coerenti e pagine potenzialmente più leggere, a patto di gestire con cura i browser più datati e le preferenze di chi non vuole movimento. È una di quelle novità silenziose che, nel tempo, rendono il web un po&apos; più piacevole da usare.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi animazioni più fluide senza appesantire il frontend?&quot; text=&quot;Integriamo le View Transitions e le altre funzioni native del browser nei siti e nelle applicazioni Vue che sviluppiamo, mantenendo il codice leggero.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/blog/same-document-view-transitions-are-now-baseline-newly-available&quot;&gt;Same-document view transitions have become Baseline Newly available - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/view-transitions-in-2025&quot;&gt;What&apos;s new in view transitions (2025 update) - Chrome for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API&quot;&gt;View Transition API - MDN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Come scegliere un provider cloud: i criteri che contano davvero</title><link>https://initd.it/blog/come-scegliere-provider-cloud</link><guid isPermaLink="true">https://initd.it/blog/come-scegliere-provider-cloud</guid><description>Una guida neutra ai criteri per scegliere un provider cloud: modello di prezzo, costi nascosti come la banda in uscita, servizi gestiti o self-managed, dove stanno i dati e GDPR, lock-in e supporto.</description><pubDate>Thu, 13 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Scegliere dove ospitare un sito, un&apos;applicazione o un intero sistema aziendale è una di quelle decisioni che sembrano solo tecniche e invece pesano sul portafoglio per anni. Il mercato del cloud offre decine di fornitori, ognuno con la sua tabella dei prezzi, e il rischio è confrontarli guardando la voce sbagliata. Questa guida mette in fila i criteri che contano davvero, senza spingere un provider in particolare: l&apos;obiettivo è aiutare a ragionare, non vendere.&lt;/p&gt;
&lt;p&gt;Con &quot;cloud provider&quot; si intende un&apos;azienda che affitta risorse informatiche via Internet: potenza di calcolo, spazio di archiviazione, rete. Invece di comprare un server e tenerlo in ufficio, si paga un canone per usarne uno (o mille) da remoto. Fin qui è semplice. La complessità arriva quando si prova a capire quanto costa davvero.&lt;/p&gt;
&lt;h2&gt;Il modello di prezzo: hyperscaler contro VPS&lt;/h2&gt;
&lt;p&gt;Semplificando, i fornitori si dividono in due grandi famiglie. Da una parte gli hyperscaler - i colossi globali come Amazon Web Services (AWS), Microsoft Azure e Google Cloud - che vendono un catalogo di centinaia di servizi separati, dalle istanze di calcolo tradizionali fino ai &lt;a href=&quot;/blog/aws-graviton5-arm-nel-cloud&quot;&gt;nuovi chip ARM pensati per abbattere i costi&lt;/a&gt;. Dall&apos;altra i provider di VPS (Virtual Private Server, cioè &quot;server privati virtuali&quot;): una macchina virtuale a canone fisso, con un prezzo quasi tutto compreso.&lt;/p&gt;
&lt;p&gt;La differenza non è solo di scala, è di filosofia. L&apos;hyperscaler non ti vende &quot;una macchina&quot;: ti vende l&apos;istanza di calcolo, e poi - a voci separate - l&apos;indirizzo IP pubblico, lo spazio disco, le copie di sicurezza, il bilanciatore di carico, il traffico di rete e il piano di supporto. Il prezzo dell&apos;istanza è la punta dell&apos;iceberg. Un VPS parte invece dall&apos;idea opposta: un canone che include già disco, traffico e indirizzo IP. È meno flessibile, ma molto più facile da preventivare.&lt;/p&gt;
&lt;p&gt;Nessuno dei due modelli è &quot;giusto&quot; in assoluto. Il punto è che confrontarli solo sul prezzo orario dell&apos;istanza è fuorviante, perché in quel prezzo i due casi comprendono cose diverse.&lt;/p&gt;
&lt;h2&gt;I costi nascosti: la banda in uscita&lt;/h2&gt;
&lt;p&gt;Se c&apos;è una voce che fa saltare i preventivi, è la banda in uscita (in inglese &lt;em&gt;egress&lt;/em&gt;): il traffico di dati che esce dal cloud verso Internet, cioè verso gli utenti. Ogni immagine, video, download o risposta di un&apos;API che raggiunge un visitatore è traffico in uscita.&lt;/p&gt;
&lt;p&gt;Sugli hyperscaler questo traffico si paga a consumo, al gigabyte. AWS, per esempio, include 100 GB al mese gratuiti aggregati su tutti i servizi, e poi fattura ogni gigabyte successivo. Sembra poco, ma un sito con molte immagini o un servizio che distribuisce file può muovere terabyte al mese: a quel punto la banda diventa una delle voci più pesanti della fattura, a volte più dell&apos;istanza stessa.&lt;/p&gt;
&lt;p&gt;I provider di VPS di solito ribaltano la logica: includono nel canone una quota di traffico molto generosa e fanno pagare pochissimo l&apos;eventuale eccedenza. La conseguenza pratica è semplice: se l&apos;applicazione muove molti dati verso l&apos;esterno, il modello a consumo può costare ordini di grandezza in più. Se invece consuma soprattutto CPU e database con poco traffico, la differenza si assottiglia. La regola è stimare la banda in uscita prima di scegliere, non dopo la prima bolletta.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai davvero quanto ti costerebbe la banda in uscita del tuo carico?&quot; text=&quot;Analizziamo il traffico reale della tua applicazione e confrontiamo hyperscaler e VPS sul costo effettivo, non sul prezzo dell&apos;istanza.&quot; button=&quot;Chiedi una stima →&quot;}&lt;/p&gt;
&lt;h2&gt;Servizi gestiti o self-managed?&lt;/h2&gt;
&lt;p&gt;Qui il confronto si ribalta. Un servizio gestito (&lt;em&gt;managed&lt;/em&gt;) è una risorsa che il provider mantiene per conto tuo: un database gestito, per esempio, viene aggiornato, salvato e replicato in automatico, con sostituzione del nodo in caso di guasto. L&apos;alternativa è il &lt;em&gt;self-managed&lt;/em&gt;: il provider ti dà la macchina &quot;nuda&quot; e database, aggiornamenti, backup e monitoraggio li configuri e li tieni in piedi tu.&lt;/p&gt;
&lt;p&gt;Gli hyperscaler eccellono nei servizi gestiti, dal database completamente amministrato alle &lt;a href=&quot;/blog/gpu-serverless-cloud-run&quot;&gt;GPU serverless per l&apos;inferenza AI&lt;/a&gt;: hanno cataloghi enormi che tolgono lavoro operativo. I VPS offrono soprattutto materia prima, ottima e a buon prezzo, ma da amministrare. La domanda giusta non è &quot;chi ne ha di più&quot;, ma &quot;quanto vale il mio tempo&quot;. Un database gestito costa più di uno installato a mano, però quel sovrapprezzo è il lavoro (e la reperibilità notturna) che non devi fare tu. Se in casa ci sono le competenze per gestire l&apos;infrastruttura, il self-managed fa risparmiare; se non ci sono, il servizio gestito spesso costa meno del personale che servirebbe. Il self-managed non è gratis: è un costo che si sposta dalla fattura del cloud alle ore di chi amministra.&lt;/p&gt;
&lt;h2&gt;Dove stanno i dati: data center, UE e GDPR&lt;/h2&gt;
&lt;p&gt;Un provider ha data center - i capannoni pieni di server - in zone geografiche chiamate &lt;em&gt;region&lt;/em&gt;. La scelta della region conta per due motivi. Il primo è la latenza: più il server è vicino agli utenti, più le risposte arrivano in fretta. Il secondo, spesso più importante, è legale.&lt;/p&gt;
&lt;p&gt;Il &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;GDPR&lt;/a&gt;, il regolamento europeo sulla protezione dei dati, pone regole precise su dove possono finire i dati personali. Il suo Capo V (articoli 44 e seguenti) stabilisce che il trasferimento di dati personali fuori dall&apos;Unione Europea è vietato salvo condizioni specifiche. Tradotto: se tratti dati di cittadini europei, il luogo fisico in cui risiedono quei dati non è un dettaglio.&lt;/p&gt;
&lt;p&gt;C&apos;è però una sottigliezza che sfugge a molti. Scegliere una region europea non basta a mettere i dati al riparo da ogni richiesta esterna. Per via del CLOUD Act statunitense, la giurisdizione americana segue l&apos;azienda, non il server: un fornitore soggetto al diritto USA può essere obbligato a consegnare i dati che controlla anche se sono archiviati in un data center europeo. Non significa che gli hyperscaler americani siano &quot;fuori legge&quot; - hanno costruito offerte apposite per rispondere al tema - ma che la sovranità dei dati va valutata sul prodotto e sull&apos;entità legale che lo gestisce, non sulla bandiera nel logo.&lt;/p&gt;
&lt;h2&gt;Il rischio di lock-in&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Lock-in&lt;/em&gt; significa dipendenza tecnica: quanto è costoso e complicato cambiare fornitore una volta entrati. Su un VPS è basso, perché di solito è una macchina Linux standard che si migra altrove in un pomeriggio. Su un hyperscaler può essere alto, perché i servizi proprietari - database su misura, funzioni &lt;em&gt;serverless&lt;/em&gt;, code di messaggi - non esistono uguali altrove, e riscriverli costa.&lt;/p&gt;
&lt;p&gt;C&apos;è anche una forma più subdola di lock-in: la gravità dei dati. Più dati accumuli in un servizio, più costa portarli via, perché l&apos;uscita di quei terabyte passa proprio dalla banda in uscita a pagamento. Il costo dell&apos;egress diventa così anche un pedaggio che scoraggia la migrazione. La difesa è progettuale: preferire, dove possibile, componenti standard e aperti, descrivere l&apos;infrastruttura con strumenti di &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;Infrastructure as Code&lt;/a&gt; invece che a mano, e sapere fin dall&apos;inizio quanto costerebbe traslocare. Il lock-in non è un difetto morale, è una scelta da fare con gli occhi aperti.&lt;/p&gt;
&lt;h2&gt;Il supporto&lt;/h2&gt;
&lt;p&gt;Ultimo criterio, spesso sottovalutato: cosa succede quando qualcosa si rompe alle tre di notte. I livelli di supporto variano moltissimo. Alcuni provider includono un&apos;assistenza di base nel canone; gli hyperscaler vendono i piani di supporto a parte, spesso come percentuale della spesa mensile. Vale la pena leggere lo SLA (&lt;em&gt;Service Level Agreement&lt;/em&gt;, l&apos;accordo sul livello di servizio): promette una certa disponibilità e certi tempi di risposta, ma spesso il &quot;rimborso&quot; per un disservizio è solo un credito sulla fattura, non un risarcimento del danno reale. Il supporto non si valuta dal numero verde in homepage, ma da cosa c&apos;è scritto nel contratto.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Non esiste &quot;il cloud migliore&quot;: esiste il modello giusto per un carico specifico. Conviene procedere per ordine. Prima stimare la banda in uscita, che è la variabile che più spesso ribalta i conti. Poi decidere quanto lavoro operativo delegare, scegliendo tra servizi gestiti e self-managed in base alle competenze disponibili. Quindi verificare dove devono stare i dati e chi può essere obbligato a consegnarli. Infine mettere in conto il rischio di lock-in e leggere per davvero le condizioni di supporto. Il prezzo orario dell&apos;istanza, quello che tutti confrontano per primo, è quasi sempre la voce meno importante.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Devi scegliere o cambiare provider cloud per la tua infrastruttura?&quot; text=&quot;Progettiamo e gestiamo infrastrutture su misura su AWS, Google Cloud e VPS, valutando insieme costi, GDPR e rischio di lock-in prima di firmare.&quot; button=&quot;Parliamo della tua infrastruttura →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/ec2/pricing/on-demand/&quot;&gt;Amazon EC2 On-Demand Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hetzner.com/cloud&quot;&gt;Hetzner Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gdpr-info.eu/chapter-5/&quot;&gt;GDPR - Capo V: Trasferimenti verso paesi terzi (art. 44 e segg.)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://iapp.org/news/a/questions-to-ask-for-compliance-with-the-eu-gdpr-and-the-u-s-cloud-act&quot;&gt;Questions to ask for compliance with the EU GDPR and the U.S. CLOUD Act - IAPP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Google presenta Gemini 3: cosa cambia per chi sviluppa</title><link>https://initd.it/blog/gemini-3</link><guid isPermaLink="true">https://initd.it/blog/gemini-3</guid><description>Google ha annunciato Gemini 3, il suo nuovo modello di punta. Cosa migliora davvero su ragionamento, codice e multimodale, e perché conta per chi valuta modelli per agenti e automazione.</description><pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi sviluppa software o costruisce automazioni si ritrova, ogni pochi mesi, davanti a un nuovo modello di intelligenza artificiale presentato come il più capace mai visto. Il 18 novembre 2025 Google ha annunciato Gemini 3, la nuova generazione della sua famiglia di modelli. Conviene guardare oltre il titolo: cosa migliora davvero, per quali usi, e con quali riserve. Questo articolo prova a riassumere l&apos;annuncio in modo sobrio, distinguendo i fatti dichiarati dalle promesse di marketing.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è Gemini 3&lt;/h2&gt;
&lt;p&gt;Partiamo dai termini. &lt;strong&gt;Gemini&lt;/strong&gt; è la famiglia di modelli di intelligenza artificiale di Google, quella che alimenta l&apos;app Gemini, alcune funzioni della Ricerca e vari strumenti per chi programma. Gemini 3 è la nuova generazione, che prende il posto della precedente (Gemini 2.5) come modello di punta.&lt;/p&gt;
&lt;p&gt;Al centro del lancio c&apos;è &lt;strong&gt;Gemini 3 Pro&lt;/strong&gt;, disponibile da subito in anteprima. È un modello &lt;strong&gt;multimodale&lt;/strong&gt;: vuol dire che nella stessa richiesta capisce testo, immagini, video, audio e codice, senza doverli trattare separatamente. Ha una &lt;strong&gt;finestra di contesto&lt;/strong&gt; da circa un milione di token. Un &lt;em&gt;token&lt;/em&gt; è un pezzetto di testo, più o meno una sillaba o una parola breve; la finestra di contesto è quanto materiale il modello riesce a tenere presente in una sola conversazione. Un milione di token è molto: consente di passargli interi progetti o documenti lunghi senza spezzarli a mano. La risposta, invece, può arrivare fino a circa 65.000 token.&lt;/p&gt;
&lt;p&gt;Accanto al modello principale, Google ha annunciato &lt;strong&gt;Gemini 3 Deep Think&lt;/strong&gt;, una modalità pensata per i problemi di ragionamento più difficili. Al momento dell&apos;annuncio non era ancora disponibile in modo ampio: è destinata inizialmente agli abbonati al piano Ultra. È bene tenerne conto, perché una funzione annunciata non è una funzione che si può già usare.&lt;/p&gt;
&lt;h2&gt;I miglioramenti dichiarati&lt;/h2&gt;
&lt;p&gt;Google afferma che Gemini 3 Pro supera il modello precedente sui principali &lt;strong&gt;benchmark&lt;/strong&gt;, cioè le prove standardizzate con cui si misurano i modelli. Vale la pena riportare qualche numero, ma con la giusta cautela: sono cifre dichiarate da chi vende il prodotto, ognuna misura solo una fetta del lavoro reale, e nessuna racconta tutto.&lt;/p&gt;
&lt;p&gt;Sul fronte del &lt;strong&gt;ragionamento&lt;/strong&gt;, Google cita un 91,9% su GPQA Diamond, un test di domande scientifiche di livello universitario avanzato, e un 37,5% su &quot;Humanity&apos;s Last Exam&quot;, un esame difficile che spazia su molte materie.&lt;/p&gt;
&lt;p&gt;Sul fronte del &lt;strong&gt;codice&lt;/strong&gt;, i numeri riguardano compiti concreti. Su SWE-bench Verified, che misura la capacità di correggere bug reali presi da progetti su GitHub, il modello dichiara un 76,2%. Su Terminal-Bench 2.0, che valuta il portare a termine compiti dentro un terminale, un 54,2%.&lt;/p&gt;
&lt;p&gt;Ci sono poi le classifiche a voto umano, dove le persone confrontano le risposte di modelli diversi senza sapere quale sia quale. Google riferisce di essere in cima a LMArena (1501 punti Elo) e a WebDev Arena (1487), quest&apos;ultima dedicata alla costruzione di piccole applicazioni web. Sono indicatori utili per farsi un&apos;idea, non prove definitive.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Ti stai chiedendo se vale la pena integrare Gemini 3 nei tuoi sistemi?&quot; text=&quot;Valutiamo benchmark, costi e rischi rispetto al caso d&apos;uso reale, prima di scegliere un modello.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché conta per agenti e automazione&lt;/h2&gt;
&lt;p&gt;Un &lt;strong&gt;agente&lt;/strong&gt; è un programma che, oltre a rispondere, compie azioni concrete per conto di chi lo usa: legge file, esegue comandi, usa strumenti esterni spesso collegati tramite standard aperti come &lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;MCP&lt;/a&gt;. Chi valuta un modello per costruire automazioni guarda proprio a questo, non solo alla qualità del testo prodotto.&lt;/p&gt;
&lt;p&gt;È il motivo per cui benchmark come Terminal-Bench o SWE-bench pesano più di altri: raccontano quanto il modello se la cava quando deve muoversi tra file, comandi e strumenti, invece di limitarsi a chiacchierare. Insieme al modello, Google ha presentato &lt;strong&gt;Antigravity&lt;/strong&gt;, una piattaforma di sviluppo pensata per far lavorare gli agenti con accesso diretto all&apos;editor, al terminale e al browser. Gemini 3 arriva anche dentro &lt;a href=&quot;/blog/gemini-cli-assistente-ai-terminale&quot;&gt;Gemini CLI&lt;/a&gt;, l&apos;assistente da riga di comando già esistente.&lt;/p&gt;
&lt;p&gt;Per chi progetta sistemi conta anche un dettaglio più tecnico: l&apos;API introduce un parametro chiamato &lt;strong&gt;thinking level&lt;/strong&gt;, con cui si decide quanto a fondo il modello debba &quot;ragionare&quot; prima di rispondere. È una leva pratica: ragionare di più può migliorare la qualità su problemi complessi, ma costa di più e richiede più tempo. Poterlo regolare aiuta a bilanciare spesa, velocità e accuratezza a seconda del compito.&lt;/p&gt;
&lt;h2&gt;Come provarlo e quanto costa&lt;/h2&gt;
&lt;p&gt;Per chi sviluppa, Gemini 3 Pro è raggiungibile tramite l&apos;API di Gemini in due ambienti: &lt;strong&gt;Google AI Studio&lt;/strong&gt;, con un accesso gratuito soggetto a limiti d&apos;uso, e &lt;strong&gt;Vertex AI&lt;/strong&gt;, la piattaforma cloud rivolta alle aziende. Il modello è anche integrato in strumenti di terze parti già diffusi tra chi programma, come Cursor, GitHub, JetBrains e Replit. Per il pubblico generico, invece, è arrivato nell&apos;app Gemini e in alcune funzioni della Ricerca.&lt;/p&gt;
&lt;p&gt;Sui costi, Google ha indicato un prezzo di 2 dollari per milione di token in ingresso e 12 dollari per milione di token in uscita, per le richieste fino a 200.000 token; oltre quella soglia la tariffa cambia. Sono valori utili per stimare la spesa di un uso intensivo, ma vanno verificati sulla documentazione al momento dell&apos;adozione, perché i listini dei modelli cambiano spesso.&lt;/p&gt;
&lt;h2&gt;Le cautele&lt;/h2&gt;
&lt;p&gt;Prima di spostarci sul nuovo modello conviene tenere presenti alcuni punti, senza entusiasmi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;È un&apos;anteprima.&lt;/strong&gt; Google lo descrive come versione in preview: comportamenti, funzioni e prezzi possono cambiare. Non è il caso di appoggiarci processi critici senza un&apos;alternativa pronta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I numeri sono di parte.&lt;/strong&gt; I benchmark sono dichiarati da chi vende il prodotto e misurano scenari standardizzati. L&apos;unico giudice affidabile resta la prova sui propri casi d&apos;uso reali.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I dati vanno nel cloud.&lt;/strong&gt; Come per i modelli precedenti, il calcolo avviene sui server di Google: ciò che si invia al modello esce dal proprio computer. Per contenuti riservati è un aspetto da valutare con attenzione, anche alla luce di quanto richiesto dal &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;GDPR sul lato infrastruttura&lt;/a&gt; quando si trattano dati personali.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Non tutto è disponibile subito.&lt;/strong&gt; Deep Think e alcune funzioni non erano accessibili a tutti al momento del lancio. Meglio verificare cosa si può usare davvero, e con quale piano, prima di fare affidamento su una capacità specifica.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Gemini 3 è la nuova generazione dei modelli di Google, con Gemini 3 Pro disponibile in anteprima e una modalità Deep Think annunciata per i compiti di ragionamento più difficili. Google dichiara miglioramenti su ragionamento, codice e comprensione multimodale, con numeri interessanti ma di parte. Per chi costruisce agenti e automazioni le novità più concrete sono le migliori prestazioni sui compiti pratici, la piattaforma Antigravity e il controllo sul livello di ragionamento tramite API. Resta uno strumento in anteprima, che gira nel cloud e va misurato sui propri casi: vale la pena provarlo, senza prenderne per buoni i comunicati.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi integrare l&apos;AI nei tuoi flussi di lavoro con criterio?&quot; text=&quot;Progettiamo automazioni e agenti che usano modelli come Gemini 3 dentro il software che sviluppiamo, con attenzione a sicurezza dei dati e costi per richiesta.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.google/products/gemini/gemini-3/&quot;&gt;Gemini 3: Introducing the latest Gemini AI model from Google - The Keyword, Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.google/technology/developers/gemini-3-developers/&quot;&gt;Gemini 3 for developers - The Keyword, Google&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>MCP passa alla Linux Foundation: uno standard aperto e neutrale</title><link>https://initd.it/blog/mcp-linux-foundation</link><guid isPermaLink="true">https://initd.it/blog/mcp-linux-foundation</guid><description>Il Model Context Protocol, lo standard per collegare le AI agli strumenti esterni, è stato donato a una fondazione indipendente sotto la Linux Foundation. Cosa vuol dire e perché conta per chi ci costruisce sopra.</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sempre più programmi di intelligenza artificiale non si limitano a rispondere a domande: leggono file, interrogano database, usano strumenti esterni per conto di chi li adopera, come fa ormai anche &lt;a href=&quot;/blog/gemini-cli-assistente-ai-terminale&quot;&gt;un assistente che lavora da riga di comando&lt;/a&gt;. Perché tutto questo funzioni serve un modo comune per collegare quei programmi ai sistemi con cui devono parlare. Uno degli standard più diffusi per farlo si chiama MCP. All&apos;inizio di dicembre 2025 è stato annunciato un cambiamento che lo riguarda: MCP non è più governato da una sola azienda, ma è passato sotto una fondazione indipendente. La notizia interessa soprattutto chi costruisce software su questo standard, ma vale la pena capirla anche da fuori, perché tocca un punto semplice: di chi ci si fida quando si sceglie una tecnologia su cui appoggiare il proprio lavoro.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è MCP&lt;/h2&gt;
&lt;p&gt;Partiamo dai termini. &lt;strong&gt;MCP&lt;/strong&gt; sta per &lt;em&gt;Model Context Protocol&lt;/em&gt;, che si può tradurre come «protocollo di contesto per i modelli». Un &lt;strong&gt;protocollo&lt;/strong&gt; è un insieme di regole condivise che permette a due programmi di parlarsi, un po&apos; come una lingua comune. MCP definisce un modo standard per collegare le applicazioni di intelligenza artificiale - per esempio un assistente come ChatGPT o Claude - ai sistemi esterni: documenti, database, strumenti di lavoro, servizi online.&lt;/p&gt;
&lt;p&gt;Il problema che affronta è concreto. Senza uno standard condiviso, ogni volta che si vuole far dialogare un modello con un nuovo strumento bisogna scrivere un collegamento su misura. Con tanti modelli da un lato e tanti strumenti dall&apos;altro, il numero di integrazioni da costruire e mantenere cresce in fretta. Un protocollo comune riduce quel lavoro: chi realizza uno strumento lo espone una volta sola seguendo le regole di MCP, e qualsiasi applicazione che «parla» MCP può usarlo senza integrazioni dedicate. L&apos;idea ricorda quella di una presa standard come l&apos;USB: un solo tipo di connettore al posto di tanti cavi incompatibili.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;MCP è nato circa un anno fa&lt;/a&gt; e si è diffuso rapidamente. Secondo i dati riportati nell&apos;annuncio, i pacchetti per sviluppatori (le librerie con cui si integra il protocollo) superano i 97 milioni di scaricamenti al mese, e si contano oltre 10.000 server MCP pubblici attivi - cioè strumenti già pronti da collegare. Il supporto è presente in diversi prodotti diffusi, tra cui ChatGPT, Claude, Cursor, &lt;a href=&quot;/blog/gemini-3&quot;&gt;Gemini&lt;/a&gt;, Microsoft Copilot e Visual Studio Code. Sono cifre dichiarate da chi promuove lo standard, quindi da prendere come ordine di grandezza più che come misura esatta; restano comunque il segnale di un&apos;adozione ampia.&lt;/p&gt;
&lt;h2&gt;Cosa è successo&lt;/h2&gt;
&lt;p&gt;Il cambiamento riguarda la &lt;strong&gt;governance&lt;/strong&gt;, cioè chi decide come lo standard evolve. Fino a oggi MCP era guidato da Anthropic, l&apos;azienda che lo ha creato. Con l&apos;annuncio di dicembre, il protocollo è stato donato all&apos;&lt;strong&gt;Agentic AI Foundation&lt;/strong&gt; (AAIF), una nuova iniziativa ospitata dalla &lt;strong&gt;Linux Foundation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La Linux Foundation è un&apos;organizzazione senza scopo di lucro che fa da custode a molti progetti tecnologici aperti e molto usati; ne fanno parte, per esempio, il kernel Linux, Kubernetes e PyTorch. «Ospitare» un progetto significa mettergli intorno una struttura neutrale, con regole condivise, che non appartiene a un singolo fornitore.&lt;/p&gt;
&lt;p&gt;L&apos;Agentic AI Foundation nasce con l&apos;obiettivo dichiarato di far crescere in modo aperto e collaborativo le tecnologie legate agli &lt;strong&gt;agenti&lt;/strong&gt;, cioè i programmi di intelligenza artificiale che, oltre a rispondere, compiono azioni concrete usando strumenti esterni. È co-fondata da Anthropic, Block e OpenAI, con il sostegno di Google, Microsoft, AWS, Cloudflare e Bloomberg. Nasce con tre progetti fondanti: MCP, donato da Anthropic; &lt;strong&gt;goose&lt;/strong&gt;, un progetto di Block; e &lt;strong&gt;AGENTS.md&lt;/strong&gt;, una convenzione proposta da OpenAI. Il fatto che aziende spesso concorrenti tra loro contribuiscano insieme alla stessa fondazione è, di per sé, parte della notizia, sulla stessa scia di altri tentativi di dare regole condivise al modo in cui gli agenti AI vengono istruiti, come &lt;a href=&quot;/blog/agent-skills&quot;&gt;le Agent Skills di Anthropic&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Stai valutando di collegare i tuoi sistemi a un assistente AI tramite MCP?&quot; text=&quot;Verifichiamo quali dati e strumenti esporre in sicurezza, e quali tenere fuori dalla portata di un agente.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché una fondazione neutrale conta&lt;/h2&gt;
&lt;p&gt;Qui sta il senso pratico dell&apos;annuncio. Quando uno standard è controllato da una sola azienda, chi ci costruisce sopra dipende dalle scelte di quell&apos;azienda: le sue priorità, il suo modello di business, la sua strategia. Se un giorno cambiassero, lo standard potrebbe seguirle. È il timore che frena molte adozioni, soprattutto quando si tratta di infrastruttura destinata a durare.&lt;/p&gt;
&lt;p&gt;Affidare lo standard a una fondazione neutrale sposta il baricentro. Le decisioni non fanno più capo a un unico proprietario, ma a una struttura condivisa in cui più soggetti hanno voce. Non è una garanzia assoluta, ma riduce il rischio che lo standard venga piegato agli interessi di uno solo. È lo stesso percorso già seguito da progetti come Kubernetes e PyTorch, che sotto la Linux Foundation sono diventati riferimenti comuni proprio perché nessun fornitore ne detiene il controllo esclusivo.&lt;/p&gt;
&lt;p&gt;Per chi valuta se investire tempo e codice su MCP, questo passaggio è rilevante. Una tecnologia di base - quella su cui si appoggiano altri strumenti - vale soprattutto per la sua stabilità e per la fiducia che ispira nel lungo periodo. Una governance non legata a un singolo vendor rende più credibile la promessa che lo standard resterà aperto e sostenuto anche in futuro.&lt;/p&gt;
&lt;h2&gt;Cosa cambia (e cosa no) nell&apos;immediato&lt;/h2&gt;
&lt;p&gt;Per chi già usa MCP, nel breve periodo cambia poco sul piano tecnico. Secondo l&apos;annuncio, il modello di governance introdotto in precedenza continua com&apos;era: le decisioni sul protocollo restano in capo alle stesse persone che lo curano, i &lt;strong&gt;maintainer&lt;/strong&gt; - cioè chi mantiene e fa evolvere il progetto - guidati dai contributi della comunità attraverso il processo con cui si propongono e discutono le modifiche. Lo sviluppo quotidiano prosegue senza interruzioni. Anthropic, dal canto suo, dichiara di voler continuare a investire nello sviluppo, a mantenere l&apos;infrastruttura di base e a partecipare alla comunità.&lt;/p&gt;
&lt;p&gt;In pratica, il cambiamento è più di forma che di sostanza tecnica: lo standard resta lo stesso, cambia la casa che lo ospita e le regole di chi ne decide il futuro. È proprio questo il punto della notizia. Non c&apos;è una nuova versione del protocollo da adottare né un&apos;API da riscrivere; c&apos;è una diversa cornice di governo, pensata per dare più garanzie di neutralità.&lt;/p&gt;
&lt;h2&gt;Cosa resta da vedere&lt;/h2&gt;
&lt;p&gt;Qualche cautela è d&apos;obbligo, senza sminuire l&apos;annuncio. Il passaggio a una fondazione è un impegno di indirizzo, non un risultato già acquisito: la neutralità dichiarata andrà misurata nel tempo, guardando a come vengono prese le decisioni concrete e a quanto la comunità riesce davvero a influire. La presenza di molte aziende attorno allo stesso tavolo è un segnale positivo, ma governare uno standard condiviso richiede equilibrio costante.&lt;/p&gt;
&lt;p&gt;C&apos;è poi un aspetto più generale. MCP è uno standard giovane e in evoluzione: chi lo adotta fa bene a seguirne gli aggiornamenti e a non dare per definitivo tutto ciò che oggi è disponibile. Il passaggio sotto la Linux Foundation non congela il protocollo, lo affida a una struttura pensata per farlo maturare in modo aperto.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;MCP è lo standard che permette alle applicazioni di intelligenza artificiale di collegarsi in modo uniforme a strumenti e sistemi esterni. Con l&apos;annuncio di inizio dicembre 2025 è stato donato all&apos;Agentic AI Foundation, una nuova fondazione sotto la Linux Foundation, insieme ad altri due progetti fondanti e con il sostegno di diverse aziende del settore. Sul piano tecnico cambia poco: gli stessi maintainer continuano a curarlo e lo sviluppo prosegue. Cambia la governance, che passa da una singola azienda a una struttura neutrale. Per chi costruisce sopra MCP è la differenza che conta di più: uno standard aperto e non legato a un solo fornitore è più facile da adottare con fiducia. Un impegno nella giusta direzione, di cui resterà da verificare la tenuta nel tempo.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi integrare l&apos;AI nei tuoi flussi aziendali con giudizio?&quot; text=&quot;Progettiamo integrazioni MCP su misura per il tuo software Laravel, valutando sicurezza degli accessi e costi prima di metterle in produzione.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation&quot;&gt;Donating the Model Context Protocol and establishing the Agentic AI Foundation - Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation&quot;&gt;Linux Foundation Announces the Formation of the Agentic AI Foundation (AAIF) - Linux Foundation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/&quot;&gt;MCP joins the Agentic AI Foundation - Model Context Protocol Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Amazon S3 Vectors: cercare per similarità senza un database dedicato</title><link>https://initd.it/blog/aws-s3-vectors</link><guid isPermaLink="true">https://initd.it/blog/aws-s3-vectors</guid><description>Amazon S3 Vectors è in disponibilità generale: lo storage a oggetti di AWS ora salva e interroga vettori per la ricerca semantica e il RAG, con l&apos;idea di ridurre costi e complessità rispetto a un database vettoriale dedicato.</description><pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Quando si cerca qualcosa in un archivio, di solito si cercano parole esatte: chi scrive &quot;fattura&quot; trova i documenti che contengono la parola &quot;fattura&quot;, non quelli che parlano di &quot;ricevuta&quot; o &quot;nota di pagamento&quot;. Le applicazioni basate sull&apos;intelligenza artificiale hanno bisogno di un altro tipo di ricerca: trovare i contenuti &lt;em&gt;simili per significato&lt;/em&gt;, anche quando le parole sono diverse. Per farlo serve un modo di conservare e confrontare i dati chiamato database vettoriale. Il 2 dicembre 2025, durante la conferenza re:Invent, AWS ha reso disponibile a tutti - in &quot;disponibilità generale&quot;, cioè fuori dalla fase di anteprima riservata - Amazon S3 Vectors, che porta questa capacità dentro S3, il suo servizio di archiviazione più diffuso.&lt;/p&gt;
&lt;h2&gt;Cosa sono i vettori e perché servono&lt;/h2&gt;
&lt;p&gt;Per capire l&apos;annuncio conviene partire dai vettori, o &lt;em&gt;embedding&lt;/em&gt;. Un embedding è un elenco di numeri che rappresenta il significato di un contenuto: una frase, un documento, un&apos;immagine. A produrlo è un modello di intelligenza artificiale, che trasforma il testo o l&apos;immagine in una lunga sequenza di cifre. L&apos;idea di fondo è semplice: due contenuti simili per significato producono vettori &quot;vicini&quot;, due contenuti che parlano di cose diverse producono vettori &quot;lontani&quot;. La vicinanza si misura con un calcolo geometrico, come la distanza tra due punti.&lt;/p&gt;
&lt;p&gt;Con questo trucco, cercare diventa un&apos;operazione diversa. Invece di confrontare parole, si confrontano numeri: si prende la domanda dell&apos;utente, la si trasforma nel suo vettore e si cercano i vettori più vicini nell&apos;archivio. Il risultato è la &lt;strong&gt;ricerca semantica&lt;/strong&gt;, cioè per significato. Chi cerca &quot;come proteggo il server dagli accessi non autorizzati&quot; può ottenere un documento intitolato &quot;hardening SSH&quot;, anche se non contiene nessuna delle parole digitate.&lt;/p&gt;
&lt;h2&gt;Il collegamento con l&apos;AI: il RAG&lt;/h2&gt;
&lt;p&gt;Questo meccanismo è il cuore di una tecnica molto usata con i modelli linguistici, il &lt;strong&gt;RAG&lt;/strong&gt; (dall&apos;inglese &lt;em&gt;Retrieval Augmented Generation&lt;/em&gt;, &quot;generazione con recupero di informazioni&quot;). Un modello come quelli che alimentano gli assistenti conversazionali sa molte cose in generale, ma non conosce i documenti interni di un&apos;azienda né le informazioni aggiornate a ieri. Il RAG colma questa lacuna: prima di rispondere, il sistema cerca nei propri archivi i passaggi più pertinenti alla domanda - usando proprio la ricerca per similarità tra vettori - e li passa al modello &lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;come contesto&lt;/a&gt;. Così la risposta si basa su documenti reali e verificabili, non solo su ciò che il modello ha imparato durante l&apos;addestramento.&lt;/p&gt;
&lt;p&gt;Per fare tutto questo servono due cose: un posto dove salvare i vettori e un modo veloce per trovare i più vicini a un vettore di riferimento. È il compito di un &lt;strong&gt;database vettoriale&lt;/strong&gt;. Fino a poco tempo fa significava adottare un software specializzato, da installare e mantenere, oppure un servizio dedicato a parte, con un costo che cresce insieme al numero di vettori.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua azienda vorrebbe un assistente che risponde sui documenti interni?&quot; text=&quot;Valutiamo se un sistema RAG con ricerca semantica ha senso per il tuo caso d&apos;uso, e con quale costo reale.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa cambia mettendo i vettori dentro S3&lt;/h2&gt;
&lt;p&gt;Amazon S3 è lo storage a oggetti di AWS: un posto dove depositare file di ogni tipo - immagini, backup, log, documenti - pagando poco per grandi quantità di spazio. È uno dei mattoni più comuni delle infrastrutture su cloud, lo stesso servizio che gestisce anche le &lt;a href=&quot;/blog/aws-s3-sse-c-default&quot;&gt;impostazioni di cifratura lato server&lt;/a&gt;. L&apos;idea di S3 Vectors è aggiungere a questo storage la capacità di conservare vettori e di cercarli per similarità, senza affiancargli un database separato.&lt;/p&gt;
&lt;p&gt;In pratica si crea un &lt;strong&gt;vector bucket&lt;/strong&gt;, un contenitore simile ai normali bucket S3 ma pensato per i vettori, e al suo interno uno o più &lt;strong&gt;vector index&lt;/strong&gt; (indici vettoriali). Quando si crea un indice si dichiarano poche cose: la &lt;em&gt;dimensione&lt;/em&gt; dei vettori, cioè quanti numeri contiene ciascuno, e la &lt;em&gt;metrica di distanza&lt;/em&gt; con cui misurare la vicinanza, che può essere il coseno o la distanza euclidea. A ogni vettore si possono associare dei metadati, cioè informazioni aggiuntive come la data o la fonte del documento, utili per filtrare i risultati: fino a 50 chiavi di metadati per vettore.&lt;/p&gt;
&lt;p&gt;Il servizio è &lt;strong&gt;serverless&lt;/strong&gt;, proprio come già succede con altri &lt;a href=&quot;/blog/aurora-dsql-database-sql-distribuito&quot;&gt;database serverless&lt;/a&gt; di AWS. &quot;Senza server&quot; non vuol dire che i server non esistano, ma che non è chi usa il servizio a doverli scegliere, dimensionare o aggiornare: se ne occupa AWS. Non c&apos;è un cluster da tenere acceso e da pagare a ore: si paga per lo spazio occupato dai vettori e per le operazioni di scrittura e di interrogazione effettivamente fatte.&lt;/p&gt;
&lt;p&gt;Il vantaggio che AWS mette in primo piano è il costo. La stima ufficiale parla di una riduzione fino al 90% del costo totale per caricare, conservare e interrogare i vettori rispetto a soluzioni di database vettoriale dedicate. È un dato dichiarato dal fornitore e, come sempre, il risparmio reale dipende da come si usa il servizio; ma indica la direzione: rendere la ricerca per similarità un&apos;opzione economica anche per archivi molto grandi.&lt;/p&gt;
&lt;h2&gt;Quanto scala e con quali limiti&lt;/h2&gt;
&lt;p&gt;La disponibilità generale arriva con numeri più alti rispetto all&apos;anteprima. Ogni indice può contenere fino a &lt;strong&gt;2 miliardi di vettori&lt;/strong&gt;, quaranta volte il limite di 50 milioni della fase di prova, e ogni vector bucket può ospitare fino a &lt;strong&gt;10.000 indici&lt;/strong&gt;. Sono cifre che spostano il servizio dalla dimostrazione all&apos;uso in produzione su grandi collezioni di documenti.&lt;/p&gt;
&lt;p&gt;Sul fronte dei tempi di risposta, AWS indica che le interrogazioni poco frequenti tornano un risultato in meno di un secondo, mentre quelle frequenti scendono intorno ai 100 millisecondi o meno. Ogni interrogazione può restituire fino a 100 risultati (erano 30 in anteprima), e in scrittura si arriva fino a 1.000 vettori al secondo quando si aggiornano gli indici un vettore alla volta.&lt;/p&gt;
&lt;p&gt;Vale la pena essere onesti sul rovescio della medaglia. S3 Vectors è pensato per costare poco e reggere volumi enormi, non per essere lo strumento più rapido in assoluto: un centinaio di millisecondi va benissimo per un archivio di documenti, meno per scenari che richiedono risposte in pochi millisecondi su traffico molto intenso. Non a caso AWS lo presenta anche in coppia con OpenSearch, il suo motore di ricerca: si possono tenere i vettori usati di rado, e più economici, dentro S3 Vectors, spostando su OpenSearch solo quelli che richiedono le prestazioni più alte.&lt;/p&gt;
&lt;h2&gt;Le integrazioni&lt;/h2&gt;
&lt;p&gt;Con la disponibilità generale diventano stabili anche alcune integrazioni utili. S3 Vectors si collega alle &lt;strong&gt;Amazon Bedrock Knowledge Bases&lt;/strong&gt;, il servizio con cui AWS costruisce applicazioni RAG: si può usare S3 Vectors come archivio dei vettori per abbassare il costo di un assistente che risponde attingendo a una base documentale. È disponibile l&apos;integrazione con &lt;strong&gt;Amazon OpenSearch&lt;/strong&gt;, per l&apos;architettura a due livelli descritta sopra. Ci sono poi il supporto a &lt;strong&gt;CloudFormation&lt;/strong&gt; per creare le risorse in modo automatico e ripetibile, &lt;strong&gt;PrivateLink&lt;/strong&gt; per la connessione su rete privata, l&apos;assegnazione di una chiave di cifratura dedicata per singolo indice e i tag per il controllo degli accessi e la ripartizione dei costi.&lt;/p&gt;
&lt;p&gt;Alla data dell&apos;annuncio il servizio è attivo in 14 regioni AWS, contro le 5 dell&apos;anteprima, comprese Irlanda, Londra, Parigi, Francoforte e Stoccolma in Europa.&lt;/p&gt;
&lt;h2&gt;Quando ha senso&lt;/h2&gt;
&lt;p&gt;S3 Vectors è una buona opzione quando i vettori sono tanti, le interrogazioni non sono continue e il costo conta più della latenza minima: archivi di documentazione, &lt;a href=&quot;/blog/agent-skills&quot;&gt;basi di conoscenza per assistenti interni&lt;/a&gt;, ricerca semantica su cataloghi. In questi casi evita di dover installare, aggiornare e pagare un database vettoriale a parte, e tiene i vettori vicino ai dati che spesso sono già su S3.&lt;/p&gt;
&lt;p&gt;Il ragionamento opposto vale altrettanto. Se un&apos;applicazione ha bisogno di risposte nell&apos;ordine dei pochi millisecondi su un flusso costante di richieste, o di funzioni avanzate offerte da un motore specializzato, un database vettoriale dedicato - o l&apos;accoppiata con OpenSearch - resta più adatto. Come sempre, la scelta dipende dai requisiti concreti di volume, frequenza e velocità, non dalla novità in sé.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi costruire un assistente AI che conosce i documenti della tua azienda?&quot; text=&quot;Progettiamo pipeline RAG su misura, dalla scelta dell&apos;archivio vettoriale all&apos;integrazione nei tuoi applicativi Laravel e Vue, con attenzione a costi e sicurezza dei dati.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/aws/amazon-s3-vectors-now-generally-available-with-increased-scale-and-performance/&quot;&gt;Amazon S3 Vectors now generally available with increased scale and performance (AWS News Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2025/12/amazon-s3-vectors-generally-available/&quot;&gt;Amazon S3 Vectors is now generally available with 40 times the scale of preview (AWS What&apos;s New)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>La regola del backup 3-2-1 spiegata (e perché funziona)</title><link>https://initd.it/blog/regola-backup-3-2-1</link><guid isPermaLink="true">https://initd.it/blog/regola-backup-3-2-1</guid><description>Cosa significa la regola 3-2-1 - tre copie, due supporti, una fuori sede - perché riduce il rischio di perdere i dati, perché i restore vanno testati e cosa sono RPO e RTO, spiegati in modo semplice.</description><pubDate>Thu, 11 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Prima o poi capita a tutti: un disco che smette di girare, un file cancellato per sbaglio, un telefono caduto in acqua, un&apos;azienda bloccata da un attacco informatico. In quei momenti la domanda è sempre la stessa: «C&apos;è una copia da qualche parte?». La regola 3-2-1 è la risposta più semplice e collaudata a questa domanda. Non è un prodotto né una tecnologia: è un modo di ragionare sui backup che vale per un fotografo con le sue foto quanto per un&apos;azienda con i suoi gestionali.&lt;/p&gt;
&lt;p&gt;Il punto di partenza è un&apos;idea scomoda ma sana: prima o poi qualcosa andrà perso. Non è pessimismo, è statistica. I dischi si guastano, le persone sbagliano, i programmi hanno difetti, i ladri esistono. Un backup non serve a evitare che succeda: serve a fare in modo che, quando succede, non sia un disastro.&lt;/p&gt;
&lt;h2&gt;Cosa dice la regola 3-2-1&lt;/h2&gt;
&lt;p&gt;La regola si riassume in tre numeri.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3 copie&lt;/strong&gt; dei dati. L&apos;originale più altre due copie. Non basta «avere un backup»: ne servono almeno due, oltre ai dati che si usano ogni giorno.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2 supporti diversi.&lt;/strong&gt; Le copie non vanno tenute tutte sullo stesso tipo di dispositivo. Per esempio: il disco del computer e un disco esterno, oppure un disco locale e un servizio in cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1 copia fuori sede.&lt;/strong&gt; Almeno una copia deve stare in un luogo fisicamente diverso: un altro edificio, un data center, il cloud. Lontano dai rischi che minacciano l&apos;originale.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Detta così sembra ovvia. Il valore sta nel perché ognuno di quei numeri è lì.&lt;/p&gt;
&lt;h2&gt;Perché tre copie e non una&lt;/h2&gt;
&lt;p&gt;Un backup solo, tenuto accanto all&apos;originale, protegge da pochissime cose. Se cancello un file per errore e me ne accorgo subito, va bene. Ma se il backup è sullo stesso disco dell&apos;originale, un guasto del disco porta via entrambi in una volta sola. Se è nella stessa stanza, un furto o un allagamento fanno lo stesso.&lt;/p&gt;
&lt;p&gt;Tre copie servono a rendere improbabile che un singolo evento le colpisca tutte. È lo stesso principio per cui non si tengono tutti i contanti nello stesso posto. Più le copie sono indipendenti tra loro - è quella che i tecnici chiamano ridondanza - meno probabile è perderle insieme.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai davvero se i tuoi backup si ripristinano, o lo speri soltanto?&quot; text=&quot;Verifichiamo la tua strategia di backup attuale: quante copie, su quali supporti, e se i ripristini sono mai stati testati davvero.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché due supporti diversi&lt;/h2&gt;
&lt;p&gt;Ogni tipo di supporto ha i suoi punti deboli. Un disco meccanico si può rompere per usura. Una chiavetta USB si può smarrire. Un servizio online può avere un disservizio o un problema con l&apos;account. Usare due tipi diversi di supporto evita che lo stesso difetto colpisca tutte le copie.&lt;/p&gt;
&lt;p&gt;Un esempio classico: una copia su un disco esterno in ufficio e una copia in un servizio cloud. I due supporti non condividono quasi nessun rischio. Il fulmine che frigge l&apos;elettronica in ufficio non tocca il cloud; il problema di connessione che blocca il cloud non impedisce di leggere il disco esterno.&lt;/p&gt;
&lt;h2&gt;Perché una copia fuori sede&lt;/h2&gt;
&lt;p&gt;Le prime due regole proteggono dai guasti. La terza protegge dai disastri che colpiscono un intero luogo: un incendio, un allagamento, un furto, ma anche un attacco informatico che cifra o cancella tutto quello che riesce a raggiungere in rete.&lt;/p&gt;
&lt;p&gt;Il «fuori sede» (in inglese &lt;em&gt;offsite&lt;/em&gt;) significa proprio questo: una copia che non si trova nello stesso posto degli altri dati e, idealmente, non è raggiungibile con le stesse credenziali, un requisito che rientra a pieno titolo tra le &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;misure di sicurezza richieste anche dal GDPR&lt;/a&gt; sul lato infrastrutturale. Se un incendio distrugge l&apos;ufficio, la copia nel data center dall&apos;altra parte del Paese è ancora lì. Se un attacco riesce a entrare nei sistemi, una copia isolata e non modificabile resta l&apos;ultima difesa, sullo stesso principio delle &lt;a href=&quot;/blog/aws-s3-sse-c-default&quot;&gt;chiavi di cifratura che nemmeno il fornitore cloud può leggere&lt;/a&gt; senza il consenso del cliente.&lt;/p&gt;
&lt;h2&gt;Il backup che nessuno testa&lt;/h2&gt;
&lt;p&gt;C&apos;è un errore che si ripete spesso: fare backup per anni e non provare mai a rimetterli in funzione. Un backup che non è mai stato ripristinato non è un backup: è una speranza.&lt;/p&gt;
&lt;p&gt;I motivi per cui un ripristino può fallire sono tanti e banali. Il file di backup è corrotto. La procedura, magari &lt;a href=&quot;/blog/systemd-timer-alternativa-cron&quot;&gt;pianificata con un timer&lt;/a&gt;, salvava la cartella sbagliata. La password per aprire l&apos;archivio cifrato è andata persa. Il formato non è più leggibile. Tutte cose che si scoprono solo provando - e il momento peggiore per scoprirle è durante un&apos;emergenza vera.&lt;/p&gt;
&lt;p&gt;Per questo il test del ripristino (in inglese &lt;em&gt;restore&lt;/em&gt;) è parte della regola, non un extra. Ripristinare ogni tanto una copia in un ambiente separato e controllare che i dati ci siano davvero è l&apos;unico modo per sapere che il backup funziona. Se non è stato testato, non si sa se funziona: si spera. Ed è il primo requisito di ogni intervento grosso sull&apos;infrastruttura, come &lt;a href=&quot;/blog/proxmox-8-fine-vita-aggiornare&quot;&gt;l&apos;aggiornamento di un hypervisor Proxmox a fine supporto&lt;/a&gt;: prima di toccare il server si verifica che il rientro esista davvero. Vale anche per le aziende soggette alla NIS2: le misure di base dell&apos;ACN chiedono backup verificati di dati e configurazioni e, per i sistemi rilevanti, anche copie offline, come spieghiamo in &lt;a href=&quot;/blog/nis2-fornitori-pmi-cosa-fare&quot;&gt;NIS2 e fornitori&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;RPO e RTO spiegati facile&lt;/h2&gt;
&lt;p&gt;Quando si parla di backup seri compaiono due sigle: RPO e RTO. Sembrano complicate, ma dietro ci sono due domande molto concrete.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RPO&lt;/strong&gt; sta per &lt;em&gt;Recovery Point Objective&lt;/em&gt;. Risponde alla domanda: «Quanti dati posso permettermi di perdere?». In termini pratici è ogni quanto si fa un backup. Se salvo una volta al giorno, nel peggiore dei casi posso perdere fino a un giorno di lavoro: tutto ciò che è cambiato dall&apos;ultimo backup. Se è troppo, la risposta è fare backup più spesso. Il NIST, l&apos;ente statunitense che pubblica standard tecnici, lo definisce come il punto nel tempo a cui i dati devono essere riportati dopo un&apos;interruzione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RTO&lt;/strong&gt; sta per &lt;em&gt;Recovery Time Objective&lt;/em&gt;. Risponde all&apos;altra domanda: «Quanto tempo posso restare fermo?». È quanto può passare tra il guasto e il ritorno alla normalità. Un sito personale può stare fermo qualche ora senza grossi danni; un e-commerce nel fine settimana degli sconti no, un ragionamento non troppo diverso da quello che porta a scegliere un &lt;a href=&quot;/blog/aurora-dsql-database-sql-distribuito&quot;&gt;database ad alta disponibilità&lt;/a&gt; per i servizi più critici. Il NIST lo descrive come la durata complessiva entro cui i sistemi devono tornare operativi prima che l&apos;impatto sull&apos;attività diventi inaccettabile.&lt;/p&gt;
&lt;p&gt;Le due sigle misurano due perdite diverse: RPO misura i dati persi, RTO il tempo perso. Definirle in anticipo aiuta a scegliere: ogni quanto fare i backup e quanto in fretta serve poterli ripristinare. Da lì discende il resto.&lt;/p&gt;
&lt;h2&gt;Da dove viene la regola&lt;/h2&gt;
&lt;p&gt;La formula «3-2-1» è stata resa popolare dal fotografo Peter Krogh a metà degli anni 2000, nel libro &lt;em&gt;The DAM Book&lt;/em&gt; dedicato alla gestione degli archivi digitali. Krogh non ha inventato l&apos;idea delle copie multiple e della copia fuori sede - esisteva già - ma l&apos;ha condensata in tre numeri facili da ricordare. Da allora è diventata un riferimento comune, ripresa anche da enti pubblici che si occupano di sicurezza informatica.&lt;/p&gt;
&lt;h2&gt;Non è un dogma&lt;/h2&gt;
&lt;p&gt;La 3-2-1 è un buon punto di partenza, non un traguardo. Negli ultimi anni, con la diffusione degli attacchi &lt;em&gt;ransomware&lt;/em&gt; - i programmi che cifrano i dati e chiedono un riscatto - si sono aggiunte varianti che insistono su due punti: avere almeno una copia immutabile o isolata dalla rete, che un attaccante non possa cancellare, e verificare che i ripristini funzionino senza errori. Sono raffinamenti, non stravolgimenti: il cuore resta quello di sempre.&lt;/p&gt;
&lt;p&gt;Vale anche il contrario. Per i dati di casa non serve un piano aziendale: due copie su supporti diversi e una nel cloud coprono già gran parte dei rischi. La regola scala verso l&apos;alto e verso il basso.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;La regola 3-2-1 funziona perché attacca il problema giusto: non «come evitare i guasti», ma «come sopravvivere quando succedono». Tre copie rendono improbabile perderle tutte insieme; due supporti diversi evitano che lo stesso difetto le colpisca tutte; una copia fuori sede resiste ai disastri che cancellano un intero luogo. E niente di tutto questo vale se non si prova ogni tanto a ripristinare. Definire quanto si può perdere (RPO) e quanto si può stare fermi (RTO) trasforma una buona abitudine in un piano. Non serve essere esperti: serve solo prendere sul serio l&apos;idea che, prima o poi, una copia servirà davvero.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi una strategia di backup 3-2-1 che funziona davvero?&quot; text=&quot;Progettiamo e gestiamo backup automatici, copie fuori sede e test di ripristino periodici per i sistemi Linux e le applicazioni dei nostri clienti.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/glossary/term/recovery_point_objective&quot;&gt;NIST - Recovery Point Objective (glossario CSRC)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/glossary/term/recovery_time_objective&quot;&gt;NIST - Recovery Time Objective (glossario CSRC)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Backup&quot;&gt;Wikipedia - Backup (la regola 3-2-1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.backupwrapup.com/peter-krogh-who-coined-the-3-2-1-rule-on-our-podcast/&quot;&gt;Backup Wrap-Up - Peter Krogh e l&apos;origine della regola 3-2-1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Let&apos;s Encrypt: certificati validi 6 giorni e per indirizzi IP</title><link>https://initd.it/blog/lets-encrypt-6-giorni-ip</link><guid isPermaLink="true">https://initd.it/blog/lets-encrypt-6-giorni-ip</guid><description>Dal 15 gennaio 2026 Let&apos;s Encrypt offre a tutti certificati validi poco più di sei giorni e certificati per indirizzi IP. Cosa sono, perché servono e cosa cambia per chi gestisce server.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi gestisce un sito conosce i certificati TLS: il piccolo documento digitale che dimostra l&apos;identità di un server e permette al browser di cifrare la connessione, quello che accende il lucchetto accanto all&apos;indirizzo. Fino a poco tempo fa un certificato di Let&apos;s Encrypt durava 90 giorni. Dal 15 gennaio 2026 l&apos;autorità mette a disposizione di tutti due novità: certificati che scadono dopo poco più di sei giorni, e certificati che coprono un indirizzo IP invece di un nome a dominio. Per chi naviga non cambia nulla. Per chi amministra server è un segnale chiaro sulla direzione presa dal web: la vita dei certificati si accorcia, proprio mentre cresce &lt;a href=&quot;/blog/traffico-web-post-quantum&quot;&gt;la quota di traffico già protetta da crittografia post-quantum&lt;/a&gt;, e l&apos;automazione diventa l&apos;unico modo sensato di gestirli.&lt;/p&gt;
&lt;h2&gt;La notizia in breve&lt;/h2&gt;
&lt;p&gt;Let&apos;s Encrypt è un&apos;&lt;strong&gt;Autorità di Certificazione&lt;/strong&gt; (in inglese &lt;em&gt;Certificate Authority&lt;/em&gt;, o CA): l&apos;ente che emette i certificati, cioè che garantisce l&apos;identità di un sito. È gratuita e da anni è la più usata al mondo, perché ha reso l&apos;emissione dei certificati un&apos;operazione automatica invece di un acquisto manuale.&lt;/p&gt;
&lt;p&gt;Le due funzioni annunciate erano in prova da mesi con accesso limitato. Dal 15 gennaio 2026 sono passate a &lt;strong&gt;disponibilità generale&lt;/strong&gt;, cioè sono aperte a chiunque:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Certificati a vita breve&lt;/strong&gt;, validi 160 ore, poco più di sei giorni.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificati per indirizzi IP&lt;/strong&gt;, sia IPv4 sia IPv6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Restano due opzioni facoltative. Il certificato standard di Let&apos;s Encrypt continua a durare 90 giorni: chi non fa nulla non nota alcuna differenza. Chi vuole i certificati brevi o quelli per IP deve richiederli in modo esplicito.&lt;/p&gt;
&lt;h2&gt;Sei giorni invece di novanta&lt;/h2&gt;
&lt;p&gt;Per ottenere un certificato a vita breve non basta chiederlo e basta: il programma che dialoga con l&apos;autorità deve saper indicare un &lt;strong&gt;profilo&lt;/strong&gt;, una sorta di modello di certificato. Il profilo si chiama &lt;code&gt;shortlived&lt;/code&gt;. È identico a quello usato normalmente per i siti web, con un&apos;unica differenza: il certificato dura circa sei giorni invece di tre mesi.&lt;/p&gt;
&lt;p&gt;Quella durata così corta non è casuale. Esiste una regola di settore, le &lt;em&gt;Baseline Requirements&lt;/em&gt;, che definisce una categoria a parte, i &lt;strong&gt;certificati a vita breve&lt;/strong&gt;. Un certificato che rientra in questa categoria ha un privilegio: non deve contenere alcuna informazione sulla revoca. Per capire perché è un vantaggio serve fare un passo indietro e spiegare cos&apos;è la revoca.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;I certificati del tuo server si rinnovano ancora a mano?&quot; text=&quot;Verifichiamo il client ACME in uso e la sua compatibilità con i profili a vita breve, prima che diventino lo standard.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché così brevi: il problema della revoca&lt;/h2&gt;
&lt;p&gt;Ogni certificato è legato a una &lt;strong&gt;chiave privata&lt;/strong&gt;, un file segreto che deve restare sul server e non uscire mai. Se quella chiave viene rubata - per un attacco, una configurazione sbagliata, un backup finito nel posto sbagliato - chi la possiede può fingersi il sito legittimo fino a quando il certificato resta valido. Questo intervallo si chiama &lt;strong&gt;finestra di compromissione&lt;/strong&gt;: più lungo è il certificato, più a lungo un furto può fare danni senza che nessuno se ne accorga.&lt;/p&gt;
&lt;p&gt;In teoria esiste un rimedio: la &lt;strong&gt;revoca&lt;/strong&gt;, cioè dichiarare un certificato non più valido prima della sua scadenza naturale. Nella pratica la revoca funziona male. I browser non sempre controllano se un certificato è stato revocato, e i meccanismi pensati per avvisarli sono lenti o poco affidabili. Il risultato è che, anche dopo una revoca, molti visitatori continuano a fidarsi di un certificato che non dovrebbero più accettare.&lt;/p&gt;
&lt;p&gt;I certificati a vita breve aggirano il problema alla radice. Se un certificato dura sei giorni, la finestra di compromissione è di sei giorni al massimo: dopo, scade da solo. Non serve revocarlo, perché sparisce comunque in fretta. È un modo meno elegante ma più solido di ottenere lo stesso risultato. È anche la ragione per cui Let&apos;s Encrypt ha detto di voler portare la durata standard dagli attuali 90 giorni a 45 nei prossimi anni, lo stesso percorso di riduzione fissato a livello di settore con &lt;a href=&quot;/blog/tls-certificati-47-giorni&quot;&gt;il traguardo dei 47 giorni approvato dal CA/Browser Forum&lt;/a&gt;: la direzione è ridurre il tempo in cui un errore può fare danni.&lt;/p&gt;
&lt;h2&gt;La fine di OCSP&lt;/h2&gt;
&lt;p&gt;Questa scelta si lega a un cambiamento avvenuto pochi mesi prima. Per anni il modo principale di controllare se un certificato era stato revocato si chiamava &lt;strong&gt;OCSP&lt;/strong&gt; (&lt;em&gt;Online Certificate Status Protocol&lt;/em&gt;): a ogni visita, il software poteva chiedere in tempo reale all&apos;autorità &quot;questo certificato è ancora valido?&quot;.&lt;/p&gt;
&lt;p&gt;Il 6 agosto 2025 Let&apos;s Encrypt ha spento il suo servizio OCSP. Le ragioni sono due. La prima è la privacy: ogni interrogazione OCSP rivelava all&apos;autorità quale sito una persona stava visitando, e da quale indirizzo. La seconda è la scala: al suo apice il servizio gestiva circa 340 miliardi di richieste al mese, un&apos;infrastruttura enorme da mantenere. Al posto di OCSP resta un solo meccanismo, le &lt;strong&gt;CRL&lt;/strong&gt; (&lt;em&gt;Certificate Revocation List&lt;/em&gt;), cioè elenchi di certificati revocati pubblicati periodicamente.&lt;/p&gt;
&lt;p&gt;In un mondo in cui il controllo in tempo reale non esiste più, i certificati a vita breve hanno ancora più senso: non hanno bisogno di essere revocati, quindi non dipendono da un sistema di revoca che ormai è volutamente più leggero.&lt;/p&gt;
&lt;h2&gt;Certificati per un indirizzo IP&lt;/h2&gt;
&lt;p&gt;La seconda novità risolve un problema diverso. Di solito un certificato copre un &lt;strong&gt;nome a dominio&lt;/strong&gt;, per esempio &lt;code&gt;esempio.it&lt;/code&gt;. Ma non tutto ha un dominio: ci sono servizi raggiungibili solo tramite il loro indirizzo numerico, come &lt;code&gt;203.0.113.10&lt;/code&gt; o un indirizzo IPv6. Fino a ieri, per quei casi, un certificato pubblicamente riconosciuto non era ottenibile e restava solo la strada dei certificati &quot;fatti in casa&quot;, che i browser segnalano come non attendibili.&lt;/p&gt;
&lt;p&gt;Ora Let&apos;s Encrypt può emettere certificati che coprono direttamente un indirizzo IP, sia IPv4 sia IPv6. Serve a proteggere connessioni verso servizi che non hanno un nome a dominio: endpoint di infrastruttura, apparati di rete, ambienti tecnici in cui l&apos;indirizzo numerico è tutto ciò che c&apos;è.&lt;/p&gt;
&lt;p&gt;Ci sono due vincoli, entrambi legati alla natura degli indirizzi IP. Il primo: un certificato per un indirizzo IP &lt;strong&gt;deve&lt;/strong&gt; essere a vita breve, quindi passa per il profilo &lt;code&gt;shortlived&lt;/code&gt;. Il motivo è che un indirizzo IP cambia proprietario molto più spesso di un dominio, e verificarlo di continuo è importante per evitare che finisca a chi non dovrebbe. Il secondo: per dimostrare di controllare l&apos;indirizzo si possono usare solo due metodi di verifica, quello basato su una risposta HTTP e quello basato sulla connessione TLS. Il metodo via DNS, comodo per i domini, qui non è utilizzabile, perché un indirizzo IP non ha voci DNS da modificare.&lt;/p&gt;
&lt;h2&gt;Cosa serve per usarli&lt;/h2&gt;
&lt;p&gt;Il requisito pratico è uno solo: il programma che gestisce i certificati - il &lt;strong&gt;client ACME&lt;/strong&gt;, dove ACME è il protocollo standard con cui un server ottiene e rinnova i certificati da solo - deve saper richiedere un profilo. È una funzione recente, quindi conviene usare una versione aggiornata del proprio client. I client più diffusi, tra cui &lt;code&gt;certbot&lt;/code&gt;, hanno già istruzioni dedicate per selezionare il profilo &lt;code&gt;shortlived&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il resto è automazione, ed è la parte importante. Un certificato che dura sei giorni va rinnovato ogni pochi giorni: a mano è impensabile. Ma per un sistema automatico rinnovare ogni giorno o ogni tre giorni non è più faticoso che rinnovare ogni due mesi. Chi già affida i rinnovi a un client ACME che gira da solo non deve cambiare quasi nulla; chi rinnova ancora a mano, con questi certificati, semplicemente non può farlo.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Let&apos;s Encrypt ha aperto a tutti due opzioni facoltative: certificati validi poco più di sei giorni e certificati per indirizzi IP. I primi accorciano al minimo il tempo in cui un certificato compromesso può fare danni, in un mondo in cui la revoca - e il vecchio servizio OCSP, ormai spento - non offrivano garanzie affidabili. I secondi portano i certificati pubblici anche dove non c&apos;è un dominio. Il filo comune è sempre lo stesso: certificati più brevi, controlli più frequenti, e un&apos;automazione solida come unica condizione per starci dietro, mentre nello stesso periodo anche &lt;a href=&quot;/blog/chrome-post-quantum-tls&quot;&gt;lo scambio di chiavi post-quantum abilitato di default in Chrome&lt;/a&gt; sposta più in generale l&apos;asticella della sicurezza in TLS.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi automatizzare davvero il rinnovo dei tuoi certificati TLS?&quot; text=&quot;Configuriamo client ACME, rinnovo automatico e monitoraggio delle scadenze sui tuoi server, dai domini classici agli indirizzi IP esposti senza nome a dominio.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://letsencrypt.org/2026/01/15/6day-and-ip-general-availability/&quot;&gt;6-day and IP Address Certificates are Generally Available - Let&apos;s Encrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letsencrypt.org/2025/08/06/ocsp-service-has-reached-end-of-life&quot;&gt;OCSP Service Has Reached End of Life - Let&apos;s Encrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letsencrypt.org/2025/01/16/6-day-and-ip-certs&quot;&gt;Announcing Six Day and IP Address Certificate Options in 2025 - Let&apos;s Encrypt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>L&apos;Encrypted Client Hello di TLS diventa standard (RFC 9849)</title><link>https://initd.it/blog/tls-encrypted-client-hello</link><guid isPermaLink="true">https://initd.it/blog/tls-encrypted-client-hello</guid><description>La RFC 9849 rende standard l&apos;Encrypted Client Hello: nasconde il nome del sito visibile durante l&apos;handshake TLS. Cosa cambia per privacy, reverse proxy, CDN e filtri basati su SNI.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Per anni chi osserva il traffico di rete ha potuto leggere un dettaglio che molti credevano già protetto: il nome del sito verso cui ci si sta collegando. La connessione era cifrata, il lucchetto nel browser chiuso, eppure quell&apos;informazione viaggiava in chiaro. A marzo 2026 la IETF, l&apos;organismo che scrive gli standard di Internet, ha pubblicato la RFC 9849, intitolata &quot;TLS Encrypted Client Hello&quot;. Il documento chiude proprio quella falla. Vale la pena capire cosa nasconde davvero e perché riguarda chi progetta reverse proxy, CDN e sistemi di filtraggio.&lt;/p&gt;
&lt;h2&gt;Il dettaglio che restava scoperto&lt;/h2&gt;
&lt;p&gt;Quando un browser apre una connessione sicura verso un sito, i due lati si scambiano prima alcuni messaggi per accordarsi su chiavi e parametri. Questa fase si chiama handshake. Con la versione più recente del protocollo, TLS 1.3, quasi tutto l&apos;handshake è cifrato: un osservatore esterno vede passare byte incomprensibili.&lt;/p&gt;
&lt;p&gt;Resta però un&apos;eccezione importante. Nel primissimo messaggio, il ClientHello, il browser deve dire a quale sito vuole collegarsi. Serve perché su un singolo indirizzo IP possono vivere centinaia di siti diversi, e il server deve sapere &lt;a href=&quot;/blog/tls-certificati-47-giorni&quot;&gt;quale certificato presentare&lt;/a&gt;. Questa indicazione si chiama SNI, cioè Server Name Indication, e finora viaggiava in chiaro. In pratica, chiunque si trovi lungo il percorso della connessione (il gestore della rete, un provider, un firewall aziendale) poteva leggere &lt;code&gt;esempio.it&lt;/code&gt; anche senza vedere nulla del contenuto. Come spiega la stessa RFC, l&apos;SNI in chiaro è forse l&apos;informazione più sensibile rimasta scoperta in TLS 1.3.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è l&apos;Encrypted Client Hello&lt;/h2&gt;
&lt;p&gt;L&apos;Encrypted Client Hello, abbreviato in ECH, è un&apos;estensione di TLS 1.3 che cifra il ClientHello, e con esso l&apos;SNI. Non solo il nome del sito: protegge anche altri campi che potrebbero far intuire la destinazione, come l&apos;elenco dei protocolli applicativi che il client è disposto a usare (l&apos;estensione ALPN).&lt;/p&gt;
&lt;p&gt;L&apos;idea non è nuova. Nasce da anni di lavoro su una proposta chiamata ESNI, che cifrava soltanto il nome del sito. Con il tempo ci si è accorti che nascondere un solo campo non bastava: altri dettagli del ClientHello potevano tradire la destinazione. La proposta è stata quindi riprogettata per cifrare l&apos;intero messaggio, ed è questa la versione arrivata a standard con la RFC 9849. Il documento ha lo stato di Proposed Standard, il primo gradino della via ufficiale agli standard IETF: è stabile e pubblicato, non è più una bozza.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo reverse proxy smista il traffico guardando solo l&apos;SNI?&quot; text=&quot;Controlliamo se la tua configurazione regge quando quel nome smette di essere leggibile.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Come funziona, senza tecnicismi&lt;/h2&gt;
&lt;p&gt;Il meccanismo si basa su due ClientHello annidati. Ce n&apos;è uno &quot;interno&quot;, quello vero, che contiene l&apos;SNI reale e viene cifrato. E ce n&apos;è uno &quot;esterno&quot;, visibile, che contiene un nome pubblico e innocuo, condiviso da molti siti ospitati dallo stesso operatore.&lt;/p&gt;
&lt;p&gt;Chi guarda dall&apos;esterno vede solo il nome pubblico. Il server che riceve la connessione, chiamato client-facing server, decifra il ClientHello interno e capisce quale sito è stato davvero richiesto, poi instrada la connessione di conseguenza. Se molti siti condividono lo stesso nome pubblico, per un osservatore diventano indistinguibili: è quello che la specifica chiama insieme di anonimato.&lt;/p&gt;
&lt;p&gt;Per cifrare il ClientHello interno serve la &lt;a href=&quot;/blog/cos-e-una-vpn-wireguard&quot;&gt;chiave pubblica&lt;/a&gt; del server. Il client la ottiene tramite il DNS, il sistema che traduce i nomi in indirizzi. Un secondo documento pubblicato insieme al primo, la RFC 9848, definisce come pubblicare questa configurazione (l&apos;ECHConfig) nei record DNS di tipo SVCB e HTTPS, tramite un parametro dedicato chiamato &lt;code&gt;ech&lt;/code&gt;. La cifratura vera e propria usa HPKE, uno schema crittografico standard pensato proprio per cifrare dati verso una chiave pubblica.&lt;/p&gt;
&lt;p&gt;Sono previsti anche i casi in cui qualcosa non torna. Se il server non riesce a decifrare, ad esempio perché il client ha usato una configurazione ormai vecchia, può rispondere con quella aggiornata e la connessione viene ritentata. E c&apos;è un accorgimento chiamato GREASE: i client possono inviare dati ECH finti anche quando non li usano davvero, così chi adotta ECH non si distingue dagli altri e gli apparati di rete non si &quot;abituano&quot; ad aspettarsi un formato fisso.&lt;/p&gt;
&lt;h2&gt;Cosa cambia per reverse proxy, CDN e filtri&lt;/h2&gt;
&lt;p&gt;Qui sta la parte pratica, quella che tocca chi gestisce infrastrutture.&lt;/p&gt;
&lt;p&gt;Molti &lt;a href=&quot;/blog/cos-e-un-reverse-proxy&quot;&gt;reverse proxy&lt;/a&gt; instradano le connessioni leggendo l&apos;SNI senza nemmeno decifrare il traffico: guardano il nome, scelgono il backend giusto e passano oltre. Con ECH questo non funziona più, perché l&apos;SNI visibile è il nome pubblico condiviso. Per smistare in base al sito reale, il server esposto deve diventare a tutti gli effetti il client-facing server: decifrare l&apos;ECH e leggere l&apos;SNI interno. Chi ha costruito lo smistamento sul solo SNI in chiaro dovrà rivedere l&apos;architettura.&lt;/p&gt;
&lt;p&gt;Per le CDN il modello calza bene. Una CDN ospita già molti clienti dietro gli stessi indirizzi: può presentare un nome pubblico comune, fare da client-facing server e instradare verso il sito corretto dopo aver decifrato l&apos;ECH. È anche il contesto in cui l&apos;insieme di anonimato è più ampio, e quindi la protezione più efficace.&lt;/p&gt;
&lt;p&gt;Discorso diverso per i filtri basati su SNI. Firewall, sistemi di controllo parentale, filtri aziendali e strumenti di blocco a livello di rete spesso decidono cosa passare leggendo proprio il nome del sito nell&apos;SNI. Con ECH quel nome non è più visibile: un filtro che si basa solo sull&apos;SNI perde il suo appiglio. È il rovescio della medaglia della privacy, ed è bene saperlo per tempo, senza illudersi che nulla cambi.&lt;/p&gt;
&lt;h2&gt;A che punto siamo&lt;/h2&gt;
&lt;p&gt;ECH è uno standard pubblicato, ma il suo effetto dipende da quanto viene adottato dalle due parti. Sul fronte client, alcuni browser hanno già sperimentato ECH da tempo. Sul fronte server, diverse CDN lo offrono e le librerie crittografiche stanno aggiungendo il supporto: pochi giorni dopo la pubblicazione, il progetto OpenSSL ha annunciato il supporto a ECH così come descritto dalla RFC 9849.&lt;/p&gt;
&lt;p&gt;Restano alcuni prerequisiti da tenere a mente. ECH richiede TLS 1.3, quindi le connessioni che si fermano a versioni precedenti restano scoperte. E dipende dal DNS per recuperare la configurazione: se le richieste DNS viaggiano in chiaro, un osservatore può comunque intuire la destinazione o manomettere la configurazione. Per questo ECH ha senso soprattutto insieme a un DNS cifrato, come DNS over HTTPS o DNS over TLS.&lt;/p&gt;
&lt;p&gt;In sintesi, la RFC 9849 mette al riparo l&apos;ultimo pezzo di handshake che restava leggibile. Non è una rivoluzione improvvisa: è un tassello che diventa ufficiale dopo anni di prove sul campo, e che nei prossimi mesi cambierà silenziosamente il modo in cui reverse proxy, CDN e filtri di rete vedono, o non vedono più, il nome dei siti.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi preparare la tua infrastruttura a ECH?&quot; text=&quot;Revisioniamo reverse proxy, CDN e regole di filtraggio per continuare a instradare il traffico correttamente anche quando l&apos;SNI è cifrato.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/info/rfc9849/&quot;&gt;RFC 9849: TLS Encrypted Client Hello&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/info/rfc9848/&quot;&gt;RFC 9848: Bootstrapping TLS Encrypted ClientHello with DNS Service Bindings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/rfc9849/&quot;&gt;RFC 9849 su IETF Datatracker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openssl-library.org/post/2026-03-11-ech/&quot;&gt;The OpenSSL Library now supports Encrypted Client Hello (ECH)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>S3 disabilita SSE-C di default sui nuovi bucket: cosa cambia e cosa controllare</title><link>https://initd.it/blog/aws-s3-sse-c-default</link><guid isPermaLink="true">https://initd.it/blog/aws-s3-sse-c-default</guid><description>Amazon S3 disabilita di default la cifratura con chiave fornita dal cliente (SSE-C) sui nuovi bucket: cos&apos;è, perché cambia il default e cosa verificare prima.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Un valore predefinito, quando cambia, può passare inosservato finché qualcosa smette di funzionare. È il caso di un aggiornamento che Amazon Web Services (AWS) ha iniziato a distribuire ad aprile 2026 sul suo servizio di archiviazione S3: la cifratura con chiave fornita dal cliente, nota come SSE-C, non è più attiva per impostazione predefinita sui nuovi bucket. Un bucket è il contenitore di base in cui S3 conserva i file, che nel gergo del servizio si chiamano oggetti, lo stesso concetto ripreso anche dai più recenti &lt;a href=&quot;/blog/aws-s3-vectors&quot;&gt;vector bucket&lt;/a&gt; per la ricerca semantica. Per la maggior parte di chi usa S3 non cambia nulla. Ma chi ha automazioni o applicazioni che si appoggiano a SSE-C ha un buon motivo per controllare le proprie configurazioni prima che il cambiamento arrivi ovunque.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è SSE-C, e dove si colloca&lt;/h2&gt;
&lt;p&gt;S3 offre la cifratura lato server (server-side encryption): i dati vengono cifrati automaticamente quando vengono scritti su disco e decifrati alla lettura, senza che l&apos;applicazione debba occuparsene. La differenza tra le varianti sta in una domanda sola: chi possiede e gestisce la chiave.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SSE-S3&lt;/strong&gt; - la chiave la genera e la gestisce AWS. È l&apos;opzione più semplice e quella predefinita.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSE-KMS&lt;/strong&gt; - la chiave vive in AWS Key Management Service (KMS), il servizio dedicato alla gestione delle chiavi. In cambio si ottengono controlli d&apos;accesso fini tramite le policy IAM (il sistema dei permessi di AWS) e una traccia di ogni uso della chiave in CloudTrail, il registro delle attività dell&apos;account, un livello di tracciabilità che si allinea bene ai principi di &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;accountability richiesti anche dal GDPR&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSE-C&lt;/strong&gt; - la chiave la fornisce il cliente, e la invia a S3 a ogni richiesta di scrittura e di lettura. S3 la usa per cifrare o decifrare al volo, ma non la conserva da nessuna parte. Il controllo della chiave resta interamente in mano a chi la produce.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Proprio quest&apos;ultimo punto è il tratto distintivo di SSE-C: siccome S3 non memorizza la chiave, senza quella chiave i dati non si leggono, nemmeno lato AWS. È una garanzia forte, ma anche un vincolo operativo pesante.&lt;/p&gt;
&lt;h2&gt;Cosa cambia, in concreto&lt;/h2&gt;
&lt;p&gt;L&apos;aggiornamento riguarda i bucket &quot;general purpose&quot;, cioè quelli standard usati nella stragrande maggioranza dei casi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nuovi bucket&lt;/strong&gt;: SSE-C è disabilitato di default. Ogni bucket creato dopo il rollout parte con SSE-C bloccato.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bucket esistenti&lt;/strong&gt;: dipende dall&apos;account. Se l&apos;account non contiene alcun oggetto cifrato con SSE-C, S3 ha disattivato SSE-C anche sui bucket già presenti. Se invece anche un solo bucket dell&apos;account contiene oggetti SSE-C, S3 non ha toccato nessuna configurazione di quell&apos;account, per non rompere ciò che è in uso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tempi e regioni&lt;/strong&gt;: la distribuzione è partita ad aprile 2026 e ha raggiunto 37 regioni AWS, comprese le regioni AWS China e AWS GovCloud (US). Fanno eccezione, almeno per ora, le regioni Middle East (Bahrain) e Middle East (UAE), dove il nuovo default non si applica. Il cambiamento non è arrivato a sorpresa: AWS aveva pubblicato un preavviso a novembre 2025.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vale la pena sottolineare che si tratta di un cambiamento reale e già in corso, non di una beta né di una proposta: il default è cambiato davvero.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai quali dei tuoi bucket S3 dipendono ancora da SSE-C?&quot; text=&quot;Controlliamo la configurazione di cifratura dei tuoi bucket e verifichiamo se il nuovo default AWS può bloccare scritture in produzione.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché AWS lo fa&lt;/h2&gt;
&lt;p&gt;La motivazione dichiarata è che SSE-C, oggi, offre pochi vantaggi rispetto alle alternative. Poiché S3 non conserva la chiave, questa va rispedita a ogni singola richiesta: condividere l&apos;accesso ai dati con altri utenti o servizi diventa scomodo, e manca la tracciabilità che KMS offre in modo naturale con IAM e CloudTrail. Da quando esiste KMS - che permette di creare, possedere e gestire chiavi con controlli d&apos;accesso e registrazione degli usi - il beneficio pratico di SSE-C si è di fatto assottigliato, e la maggior parte dei carichi di lavoro moderni ha smesso di usarlo.&lt;/p&gt;
&lt;p&gt;Il cambio di default va quindi letto come una scelta di sicurezza per impostazione predefinita: disattivare una funzione poco usata riduce la &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;superficie&lt;/a&gt; su cui possono nascere errori di configurazione, lasciando comunque a chi ne ha davvero bisogno la possibilità di riattivarla.&lt;/p&gt;
&lt;h2&gt;Cosa succede a chi usa ancora SSE-C&lt;/h2&gt;
&lt;p&gt;Su un bucket dove SSE-C è bloccato, ogni richiesta che chiede esplicitamente SSE-C viene rifiutata con un errore HTTP 403 &lt;code&gt;AccessDenied&lt;/code&gt;, cioè un &quot;accesso negato&quot;. Riguarda i caricamenti (&lt;code&gt;PutObject&lt;/code&gt;), le copie (&lt;code&gt;CopyObject&lt;/code&gt;), le &lt;code&gt;PostObject&lt;/code&gt;, i caricamenti multiparte e le repliche tra bucket.&lt;/p&gt;
&lt;p&gt;Per un&apos;applicazione che si aspetta di scrivere con SSE-C, questo si traduce in un errore improvviso e potenzialmente diffuso. Da qui l&apos;importanza di accorgersene in anticipo, quando è una verifica pianificata e non un incidente in produzione.&lt;/p&gt;
&lt;h2&gt;Cosa conviene verificare prima&lt;/h2&gt;
&lt;p&gt;Conviene procedere per due domande, in ordine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prima domanda: si usa SSE-C da qualche parte?&lt;/strong&gt; Non sempre è ovvio, soprattutto in automazioni scritte tempo fa. Per scoprirlo si può esaminare in CloudTrail quali metodi di cifratura compaiono nelle richieste verso S3, e usare i report di S3 Inventory per elencare gli oggetti già cifrati con SSE-C. Per controllare la configurazione di cifratura di un singolo bucket si può interrogare l&apos;API con un comando di sola lettura:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aws s3api get-bucket-encryption --bucket nome-del-bucket
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Seconda domanda: se SSE-C serve davvero, come si riattiva?&lt;/strong&gt; Su un bucket nuovo va abilitato in modo esplicito chiamando l&apos;API &lt;code&gt;PutBucketEncryption&lt;/code&gt; (serve il permesso &lt;code&gt;s3:PutEncryptionConfiguration&lt;/code&gt;), dopodiché le applicazioni continuano a includere le consuete intestazioni SSE-C nelle loro richieste. La stessa API gestisce anche l&apos;impostazione a livello di bucket introdotta per l&apos;occasione, che consente di bloccare o sbloccare SSE-C in modo controllato, bucket per bucket.&lt;/p&gt;
&lt;p&gt;Per chi scopre di dipendere ancora da SSE-C, il momento è buono anche per una domanda più a monte: quel dato ha davvero bisogno di una chiave gestita fuori da AWS, o SSE-KMS coprirebbe l&apos;esigenza offrendo in più tracciabilità e controlli d&apos;accesso? La risposta cambia da caso a caso, ma vale la pena porsela ora, con calma, invece che davanti a un caricamento fallito.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Il messaggio operativo è semplice. Il cambiamento è già in distribuzione, era stato annunciato con mesi di anticipo e per la maggior parte degli utenti è trasparente, oltre a spingere verso un default più prudente. Per chi ha investito su SSE-C - spesso in pipeline o script che nessuno guarda da tempo - il compito è chiaro: individuare dove SSE-C è in uso, decidere se ha ancora senso o se conviene passare a SSE-KMS, e nel caso riabilitarlo esplicitamente sui bucket giusti prima che il default aggiornato faccia fallire una scrittura, esattamente come si &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;testa un ripristino&lt;/a&gt; prima che serva davvero.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere in sicurezza l&apos;infrastruttura AWS della tua azienda?&quot; text=&quot;Gestiamo configurazioni cloud su AWS: cifratura, permessi IAM e monitoraggio, con un audit prima di ogni cambio di default che potrebbe rompere qualcosa.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/04/s3-default-bucket-security-setting/&quot;&gt;Amazon S3 starts rolling out new security best practice to new and existing buckets by default (AWS What&apos;s New)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/&quot;&gt;Advanced notice: Amazon S3 to disable the use of SSE-C encryption by default (AWS Storage Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-s3-c-encryption-setting-faq.html&quot;&gt;Default SSE-C setting for new buckets FAQ (Amazon S3 User Guide)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>AWS Graviton5 e le nuove istanze EC2: perché i chip ARM nel cloud contano</title><link>https://initd.it/blog/aws-graviton5-arm-nel-cloud</link><guid isPermaLink="true">https://initd.it/blog/aws-graviton5-arm-nel-cloud</guid><description>AWS ha reso disponibili le istanze EC2 M9g e M9gd con Graviton5, il suo processore ARM. Cosa cambia e cosa valutare prima di spostarci sopra i propri carichi Linux.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Il 10 giugno 2026 AWS ha reso disponibili a tutti due nuovi tipi di server virtuali nel suo cloud: le istanze EC2 chiamate M9g e M9gd. La novità sotto il cofano è il processore che le muove, Graviton5, presentato in anteprima a fine 2025 e ora arrivato alla disponibilità generale. È l&apos;occasione per spiegare, senza tecnicismi inutili, una cosa che ormai riguarda chiunque affitti server nel cloud: perché i processori ARM stanno prendendo piede e cosa conviene controllare prima di spostarci sopra i propri programmi.&lt;/p&gt;
&lt;h2&gt;Cosa significano &quot;ARM&quot; e &quot;istanza&quot;, in breve&lt;/h2&gt;
&lt;p&gt;Un&apos;&lt;strong&gt;istanza&lt;/strong&gt; EC2 è semplicemente un server virtuale che si affitta a ore: gli si dà una potenza di calcolo e della memoria, ci si installa sopra Linux e ci girano i propri servizi. Il &quot;motore&quot; di quel server è il processore, cioè il chip che esegue i calcoli.&lt;/p&gt;
&lt;p&gt;Per anni i processori dei server hanno seguito quasi tutti la stessa impostazione di fondo, quella dei chip Intel e AMD, nota come &lt;strong&gt;x86&lt;/strong&gt;. &lt;strong&gt;ARM&lt;/strong&gt; è un modo diverso di costruire i processori: è la stessa famiglia di architettura che si trova negli smartphone e nei computer portatili moderni, nata con un&apos;attenzione forte al consumo di energia. La differenza tecnica non interessa all&apos;utente finale; interessa la conseguenza pratica: a parità di lavoro svolto, un chip ARM tende a consumare meno corrente e a costare meno da far girare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Graviton&lt;/strong&gt; è la linea di processori ARM che AWS progetta per conto proprio, invece di comprarli da altri. Non è una novità assoluta: esiste da alcuni anni ed è arrivata alla quinta generazione. Graviton5 è appunto l&apos;ultimo passo.&lt;/p&gt;
&lt;h2&gt;Perché contano i chip ARM nel cloud&lt;/h2&gt;
&lt;p&gt;Il punto non è il tifo per una tecnologia o l&apos;altra. Il punto è il conto della spesa e il conto dei consumi.&lt;/p&gt;
&lt;p&gt;Nel cloud si paga il tempo di calcolo. Se lo stesso servizio gira su un chip che rende di più a parità di corrente assorbita, il fornitore può proporre quel calcolo a un prezzo inferiore. Storicamente le istanze ARM di AWS sono state offerte a listino più basso rispetto alle equivalenti x86, ed è questa combinazione - prestazioni per euro speso e consumi contenuti - la ragione per cui tante aziende hanno cominciato a guardarle.&lt;/p&gt;
&lt;p&gt;C&apos;è poi il lato ambientale ed economico dei data center. Un processore che fa lo stesso lavoro con meno energia significa meno calore da smaltire e meno corrente in bolletta: due voci pesanti per chi gestisce migliaia di server.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo attuale piano AWS pesa più del dovuto sul budget?&quot; text=&quot;Verifichiamo se i tuoi carichi Linux sono compatibili con le istanze ARM e quanto risparmieresti passando a Graviton.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa cambia con Graviton5&lt;/h2&gt;
&lt;p&gt;AWS descrive Graviton5 come il processore più potente ed efficiente che abbia mai costruito. I numeri dichiarati, da leggere sempre con il &quot;fino a&quot; davanti perché sono valori di punta e non medie garantite, sono questi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;fino al 25% di prestazioni di calcolo in più&lt;/strong&gt; rispetto alla generazione precedente, Graviton4;&lt;/li&gt;
&lt;li&gt;guardando a carichi specifici, &lt;strong&gt;fino al 35% più veloce&lt;/strong&gt; per le applicazioni web, &lt;strong&gt;fino al 35%&lt;/strong&gt; per l&apos;inferenza dei modelli di intelligenza artificiale (cioè l&apos;uso di un modello già addestrato) e &lt;strong&gt;fino al 30%&lt;/strong&gt; per i database;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;192 core&lt;/strong&gt; per processore (i core sono le unità di calcolo indipendenti: più core significano più cose in parallelo);&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cinque volte più cache L3&lt;/strong&gt; rispetto alla generazione precedente. La cache è una piccola memoria molto veloce accanto al processore: più è ampia, meno il chip deve fermarsi ad aspettare i dati;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fino al 33% di latenza in meno tra i core&lt;/strong&gt;, cioè i core si scambiano informazioni più in fretta;&lt;/li&gt;
&lt;li&gt;memoria &lt;strong&gt;DDR5-8800&lt;/strong&gt;, tra le più rapide disponibili oggi nel cloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sono cifre fornite dal produttore. Restano un&apos;indicazione utile della direzione, ma il valore reale dipende sempre dal carico specifico.&lt;/p&gt;
&lt;h2&gt;Le due istanze: M9g e M9gd&lt;/h2&gt;
&lt;p&gt;Le nuove istanze arrivano in due varianti che condividono lo stesso processore.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;M9g&lt;/strong&gt; è la versione generica, adatta alla maggior parte dei servizi: siti, applicazioni web, backend, database di dimensioni normali. Le taglie vanno da 1 vCPU con 4 GiB di memoria fino a 192 vCPU con 768 GiB. Un &lt;strong&gt;vCPU&lt;/strong&gt; è la fetta di processore assegnata all&apos;istanza; qui il rapporto è di un vCPU ogni quattro GiB di memoria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;M9gd&lt;/strong&gt; aggiunge dello &lt;a href=&quot;/blog/cos-e-lvm-gestione-dischi-linux&quot;&gt;&lt;strong&gt;spazio su disco NVMe locale&lt;/strong&gt;&lt;/a&gt;, cioè memoria a stato solido molto veloce fisicamente collegata al server, fino a 11,4 TB. Serve a chi ha bisogno di leggere e scrivere dati in locale a grande velocità - per esempio &lt;a href=&quot;/blog/aurora-dsql-database-sql-distribuito&quot;&gt;certe basi di dati&lt;/a&gt; o sistemi di cache - senza passare da un disco di rete. AWS indica per questa variante anche un aumento delle operazioni di lettura e scrittura al secondo rispetto al passato.&lt;/p&gt;
&lt;p&gt;Le istanze sono acquistabili nei modi consueti di AWS (a consumo, con i piani di risparmio, in modalità Spot per i carichi interrompibili, e nelle forme dedicate) e, al lancio, sono disponibili in alcune regioni: Stati Uniti (Virginia del Nord, Ohio, Oregon) ed Europa (Francoforte). La copertura è quindi ancora parziale, come normale per una novità appena uscita.&lt;/p&gt;
&lt;p&gt;Sul fronte sicurezza, AWS le costruisce sulla sesta generazione del suo sistema Nitro e introduce un componente chiamato Nitro Isolation Engine, che rafforza l&apos;isolamento tra le macchine virtuali che condividono lo stesso hardware fisico.&lt;/p&gt;
&lt;h2&gt;Cosa valutare prima di migrarci i propri carichi Linux&lt;/h2&gt;
&lt;p&gt;Passare da x86 ad ARM non è un semplice cambio di taglia. È un cambio di architettura del processore, e questo ha conseguenze concrete. Ecco i punti da controllare, in ordine di importanza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Il software deve esistere in versione ARM.&lt;/strong&gt; Un programma compilato per x86 non gira su ARM così com&apos;è. La buona notizia è che le distribuzioni Linux più diffuse (Debian, Ubuntu, Amazon Linux, RHEL e derivate) offrono da tempo versioni per ARM a 64 bit, indicata come &lt;code&gt;arm64&lt;/code&gt; o &lt;code&gt;aarch64&lt;/code&gt;. La maggior parte dei linguaggi interpretati - PHP, Python, Node.js, Java - funziona senza riscrivere nulla.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attenzione alle dipendenze compilate.&lt;/strong&gt; Il problema si nasconde nei componenti &quot;nativi&quot;: estensioni di un linguaggio, librerie di sistema, software proprietario fornito come binario già pronto. Se un pezzo esiste solo per x86, va sostituito, ricompilato o accantonato. Vale la pena censire in anticipo cosa usa il proprio stack, un lavoro più veloce se l&apos;infrastruttura è già &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;descritta come codice&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le immagini dei container vanno controllate.&lt;/strong&gt; Chi usa Docker deve verificare che le immagini siano &quot;multi-architettura&quot;, cioè disponibili anche per &lt;code&gt;linux/arm64&lt;/code&gt;. Molte immagini ufficiali lo sono già; quelle costruite in casa vanno ricostruite per ARM.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Provare con i propri dati, non con i numeri del listino.&lt;/strong&gt; Le percentuali dichiarate sono valori di punta. L&apos;unico test che conta è misurare il proprio carico reale su una piccola istanza ARM e confrontarlo con quella x86 che si usa oggi, guardando sia le prestazioni sia il &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;costo effettivo nella propria regione&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verificare il prezzo caso per caso.&lt;/strong&gt; Il vantaggio economico di ARM è storicamente reale, ma non è una legge fissa: dipende dalla regione, dalla taglia e dalla forma d&apos;acquisto. Va confermato sul preventivo, non dato per scontato.&lt;/p&gt;
&lt;p&gt;In pratica, per molti servizi Linux moderni la migrazione ad ARM è oggi meno faticosa di quanto si tema, e il risparmio può essere concreto. Per stack più vecchi o pieni di componenti proprietari, invece, conviene procedere con calma: prima l&apos;inventario del software, poi una prova affiancata, e solo dopo la decisione. Graviton5 rende l&apos;opzione ARM più interessante, ma la scelta giusta resta quella misurata sul proprio caso.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi valutare la migrazione dei tuoi server ad ARM?&quot; text=&quot;Ci occupiamo di gestione sistemistica su AWS e Google Cloud: censiamo lo stack, testiamo le prestazioni su Graviton e gestiamo la migrazione senza fermare il servizio.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/aws/now-available-amazon-ec2-m9g-and-m9gd-instances-powered-by-new-aws-graviton5-processors/&quot;&gt;Now available: Amazon EC2 M9g and M9gd instances powered by new AWS Graviton5 processors (AWS News Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.aboutamazon.com/news/aws/aws-graviton-5-cpu-amazon-ec2&quot;&gt;AWS Graviton5 is now generally available (About Amazon)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cloudflare apre l&apos;OAuth self-managed a tutti gli sviluppatori</title><link>https://initd.it/blog/cloudflare-oauth-self-managed</link><guid isPermaLink="true">https://initd.it/blog/cloudflare-oauth-self-managed</guid><description>Da giugno 2026 chiunque usi Cloudflare può creare i propri client OAuth con permessi su misura, al posto dei token API a permessi ampi. Cos&apos;è, che problema risolve e perché conta per chi costruisce integrazioni.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi costruisce un programma che deve &quot;parlare&quot; con un servizio online - per esempio un&apos;applicazione che gestisce siti, DNS o firewall per conto di un cliente - prima o poi si scontra con una domanda pratica: come faccio a far accedere il mio software all&apos;account di qualcun altro, in modo sicuro e senza chiedergli la password? Il 3 giugno 2026 Cloudflare, uno dei maggiori operatori di rete e CDN al mondo, ha reso disponibile a tutti i propri clienti uno strumento pensato proprio per questo: l&apos;OAuth &quot;self-managed&quot;, cioè la possibilità di creare da sé le proprie applicazioni OAuth. Fino a poco prima era una funzione riservata a un ristretto gruppo di partner approvati a mano; ora può usarla chiunque abbia un account.&lt;/p&gt;
&lt;h2&gt;Il punto di partenza: i token API&lt;/h2&gt;
&lt;p&gt;Per capire la notizia conviene partire da come si accede oggi alle API di Cloudflare. Un&apos;&lt;em&gt;API&lt;/em&gt; è l&apos;interfaccia con cui un programma comanda un servizio senza passare dal sito: creare un record DNS, aggiungere una regola, leggere delle statistiche. Per autorizzare queste operazioni si usa in genere un &lt;em&gt;token API&lt;/em&gt;: una lunga stringa segreta che funziona come una chiave. Chi ce l&apos;ha può compiere le azioni che quel token permette.&lt;/p&gt;
&lt;p&gt;I token risolvono il problema, ma hanno alcuni limiti fastidiosi quando si costruiscono integrazioni per altri. Sono spesso a lunga durata e con permessi ampi, perché è comodo generarne uno che &quot;faccia tutto&quot;. Vanno consegnati al programma che li userà, e questo significa condividere un segreto: se finisce nel posto sbagliato, magari attraverso una dipendenza software compromessa come è successo di recente ai &lt;a href=&quot;/blog/pacchetti-npm-compromessi-quarantena&quot;&gt;pacchetti npm messi in quarantena&lt;/a&gt;, chi lo ha in mano può agire sull&apos;account finché il token non viene cancellato. E se un cliente vuole revocare l&apos;accesso a una singola applicazione, districare quale token appartiene a chi non è sempre immediato. In breve: comodi per l&apos;uso personale, poco adatti a delegare un accesso limitato a software di terzi.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è OAuth e cosa cambia&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;OAuth&lt;/em&gt; è uno standard di autorizzazione diffuso in tutto il web. È lo stesso meccanismo che c&apos;è dietro i pulsanti &quot;Accedi con Google&quot; o &quot;Collega il tuo account&quot;: invece di consegnare una password o una chiave, l&apos;utente viene mandato sul sito del servizio, gli conferma quali permessi concedere all&apos;applicazione e torna indietro con un&apos;autorizzazione limitata. L&apos;applicazione non vede mai le credenziali dell&apos;utente; riceve solo il permesso di fare quel poco che le è stato concesso.&lt;/p&gt;
&lt;p&gt;Rispetto a un token consegnato a mano, il modello OAuth porta tre vantaggi concreti. Il primo è il &lt;em&gt;consenso esplicito&lt;/em&gt;: è l&apos;utente a decidere, davanti a una schermata chiara, cosa autorizzare. Il secondo è il &lt;em&gt;minimo privilegio&lt;/em&gt;: l&apos;applicazione chiede solo i permessi che le servono, non le chiavi di tutto. Il terzo è la &lt;em&gt;revoca pulita&lt;/em&gt;: l&apos;utente può togliere l&apos;accesso a quella singola applicazione dal proprio pannello, senza toccare il resto.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;I tuoi token API circolano ancora con permessi troppo ampi?&quot; text=&quot;Verifichiamo come le tue integrazioni accedono ai servizi esterni e dove serve un modello di autorizzazione più granulare.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa ha annunciato Cloudflare&lt;/h2&gt;
&lt;p&gt;La novità è che ora qualsiasi cliente Cloudflare può creare e gestire in autonomia le proprie applicazioni OAuth, senza dover essere un partner selezionato. Si fa dal pannello, alla voce &lt;strong&gt;Manage account &amp;gt; OAuth clients&lt;/strong&gt;, oppure via API per chi preferisce automatizzare. Da lì si definisce l&apos;applicazione, si scelgono i permessi e si ottengono le credenziali necessarie a far partire il flusso di autorizzazione.&lt;/p&gt;
&lt;p&gt;È una funzione disponibile a tutti (general availability), non una beta. Cloudflare la descrive come un&apos;alternativa ai token API più sicura, più comoda da usare e più facile da gestire, soprattutto per gli scenari in cui un&apos;applicazione agisce per conto di un utente.&lt;/p&gt;
&lt;h2&gt;Permessi su misura&lt;/h2&gt;
&lt;p&gt;Il cuore della cosa sono gli &lt;em&gt;scope&lt;/em&gt;, cioè i permessi che un&apos;applicazione può richiedere. Su Cloudflare i nomi degli scope corrispondono ai permessi che si troverebbero anche creando un token API: si può quindi scegliere in modo granulare a cosa dare accesso - per esempio la sola lettura del DNS di una zona, o la sola gestione di una certa funzione - invece di concedere tutto in blocco. L&apos;elenco degli scope disponibili si può consultare dal pannello durante la creazione del client, oppure recuperare via API.&lt;/p&gt;
&lt;p&gt;L&apos;effetto pratico è che un&apos;integrazione ben fatta chiede solo ciò che le serve. Se domani quell&apos;applicazione viene compromessa, il danno resta confinato ai permessi concessi, non all&apos;intero account.&lt;/p&gt;
&lt;h2&gt;Client privati e pubblici, e la schermata di consenso&lt;/h2&gt;
&lt;p&gt;Cloudflare distingue due tipi di applicazione. Un &lt;em&gt;client privato&lt;/em&gt; può essere autorizzato solo dai membri dell&apos;account che lo ha creato: è pensato per gli strumenti interni di un&apos;organizzazione. Un &lt;em&gt;client pubblico&lt;/em&gt; può invece essere autorizzato da qualsiasi utente Cloudflare: è il caso di un prodotto SaaS che offre un pulsante &quot;collega il tuo account Cloudflare&quot; ai propri clienti.&lt;/p&gt;
&lt;p&gt;Per i client pubblici c&apos;è un passaggio in più a tutela degli utenti: la verifica del dominio. Chi pubblica l&apos;applicazione deve dimostrare di controllare il proprio dominio inserendo un record DNS di tipo TXT con un codice fornito da Cloudflare. Superata la verifica, l&apos;applicazione ottiene un badge sulla schermata di consenso, così chi sta per autorizzarla sa con chi ha a che fare. La stessa schermata è stata rivista per mostrare in modo chiaro quale applicazione chiede l&apos;accesso e quali permessi riceve.&lt;/p&gt;
&lt;h2&gt;Client secret e PKCE&lt;/h2&gt;
&lt;p&gt;Un dettaglio tecnico utile per chi svilupperà queste integrazioni: Cloudflare supporta il flusso OAuth 2.0 chiamato &lt;em&gt;authorization code&lt;/em&gt;, in linea con le &lt;a href=&quot;/blog/oauth-best-practice-sicurezza&quot;&gt;più recenti raccomandazioni di sicurezza per OAuth&lt;/a&gt;, ed esclude altri tipi meno adatti a un accesso delegato sicuro. In questo flusso, un&apos;applicazione che gira su un server proprio può custodire un &lt;em&gt;client secret&lt;/em&gt;, cioè una password dell&apos;applicazione tenuta al riparo. Le applicazioni che invece girano interamente sul dispositivo dell&apos;utente - un&apos;app mobile, un programma desktop, una pagina web - non possono nascondere un segreto e devono usare un meccanismo chiamato &lt;em&gt;PKCE&lt;/em&gt;, che protegge lo scambio senza bisogno di custodire una chiave. È una distinzione importante: il consiglio esplicito è di non incorporare mai il client secret nel codice che finisce sul dispositivo dell&apos;utente.&lt;/p&gt;
&lt;h2&gt;A cosa serve&lt;/h2&gt;
&lt;p&gt;Gli scenari che si aprono sono soprattutto tre. Il primo sono i prodotti SaaS che gestiscono infrastruttura Cloudflare per conto dei clienti: ora possono offrire un vero flusso &quot;collega il tuo account&quot;, con permessi mirati, al posto di chiedere all&apos;utente di generare e incollare un token. Il secondo sono le piattaforme interne di sviluppo: un&apos;azienda può costruire strumenti che agiscono sulle proprie risorse Cloudflare con autorizzazioni per singolo utente. Il terzo, più recente, riguarda gli &lt;em&gt;&lt;a href=&quot;/blog/agent-skills&quot;&gt;agenti&lt;/a&gt;&lt;/em&gt; AI e i &lt;a href=&quot;/blog/cos-e-mcp&quot;&gt;server MCP&lt;/a&gt; - programmi che agiscono per conto di una persona: anche loro hanno finalmente un modello di accesso delegato pensato per lo scopo, invece di doversi far consegnare un token a permessi ampi.&lt;/p&gt;
&lt;h2&gt;Perché conta&lt;/h2&gt;
&lt;p&gt;Il valore non sta in una singola funzione appariscente, ma nel togliere frizione a un problema ricorrente. Chi costruisce integrazioni può chiedere solo i permessi necessari, gli utenti vedono con chiarezza cosa stanno autorizzando e possono revocare l&apos;accesso a una specifica applicazione con un clic. È il modello a cui gran parte del web è già abituata, esteso ora anche alle API di Cloudflare e aperto a chiunque, non più ai soli partner.&lt;/p&gt;
&lt;p&gt;Va detto con onestà che questo non manda in pensione i token API: per gli usi personali o per gli script rapidi restano più semplici e diretti. L&apos;OAuth self-managed brilla quando c&apos;è di mezzo una terza parte e serve delegare un accesso limitato in modo controllato. Sotto il cofano, per rendere il servizio disponibile a tutti, Cloudflare ha aggiornato il motore OAuth su cui si appoggia (il progetto open source Ory Hydra) con una migrazione senza interruzioni: un lavoro invisibile all&apos;utente, ma che spiega perché la funzione arriva solo ora. Per chi costruisce integrazioni con Cloudflare, è un tassello che finora mancava e che vale la pena provare su un progetto reale.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Devi costruire un&apos;integrazione che acceda in modo sicuro ai dati di un cliente?&quot; text=&quot;Sviluppiamo integrazioni Laravel con OAuth, gestione degli scope e revoca degli accessi, al posto di token generici passati a mano.&quot; button=&quot;Progettiamo l&apos;integrazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/oauth-for-all/&quot;&gt;Unlocking the Cloudflare app ecosystem with OAuth for all (Cloudflare Blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/changelog/post/2026-06-03-public-oauth-clients/&quot;&gt;Introducing self-managed OAuth clients (Cloudflare Changelog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/fundamentals/oauth/&quot;&gt;OAuth Applications on Cloudflare (Cloudflare Fundamentals docs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/fundamentals/oauth/create-an-oauth-client/&quot;&gt;Create your OAuth client (Cloudflare Fundamentals docs)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>TTFB: cos&apos;è il Time To First Byte e perché conta per le prestazioni di un sito</title><link>https://initd.it/blog/ttfb-time-to-first-byte</link><guid isPermaLink="true">https://initd.it/blog/ttfb-time-to-first-byte</guid><description>Cos&apos;è il TTFB (Time To First Byte), perché incide su esperienza utente e SEO, da cosa dipende e quali leve generali aiutano a ridurlo.</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Quando si apre una pagina web, c&apos;è un momento di attesa prima che compaia qualsiasi cosa: la barra di caricamento gira, lo schermo resta bianco, e solo dopo iniziano ad apparire testi e immagini. Buona parte di quell&apos;attesa iniziale ha un nome preciso: &lt;strong&gt;TTFB&lt;/strong&gt;, cioè &lt;em&gt;Time To First Byte&lt;/em&gt;, il &quot;tempo fino al primo byte&quot;. Capire cos&apos;è aiuta a ragionare sulle prestazioni di un sito senza affidarsi a sensazioni vaghe.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è il TTFB in parole semplici&lt;/h2&gt;
&lt;p&gt;Il TTFB misura il tempo che passa da quando il browser inizia a richiedere una pagina a quando riceve il &lt;strong&gt;primo byte&lt;/strong&gt; della risposta dal server. In pratica è quanto ci mette il server a &quot;iniziare a rispondere&quot;, non a finire.&lt;/p&gt;
&lt;p&gt;Un paragone utile: è come ordinare al ristorante. Il TTFB non è il tempo per finire di mangiare, e nemmeno quello per avere il piatto completo davanti. È il tempo che passa dall&apos;ordine al momento in cui il cameriere torna con la prima portata. Se quel primo segnale arriva tardi, tutto il resto slitta di conseguenza.&lt;/p&gt;
&lt;p&gt;Vale la pena chiarire subito un punto: il TTFB non è una singola cosa, ma la somma di più passaggi. Secondo la documentazione di web.dev, comprende il tempo per eventuali &lt;strong&gt;redirect&lt;/strong&gt; (rimbalzi da un indirizzo a un altro), l&apos;avvio di un eventuale &lt;em&gt;service worker&lt;/em&gt;, la &lt;strong&gt;risoluzione DNS&lt;/strong&gt; (tradurre il nome del sito nell&apos;indirizzo numerico del server), la &lt;strong&gt;negoziazione della connessione e del TLS&lt;/strong&gt; (l&apos;&quot;handshake&quot; cifrato che protegge i dati) e infine l&apos;elaborazione della richiesta fino al primo byte restituito.&lt;/p&gt;
&lt;h2&gt;Perché conta per chi usa il sito&lt;/h2&gt;
&lt;p&gt;Il primo byte non è ancora contenuto visibile: è solo il segnale che la risposta è iniziata. Ma finché non arriva, il browser non può fare nulla. Non può leggere l&apos;HTML, non può scaricare immagini o fogli di stile, non può disegnare niente sullo schermo. Un TTFB alto sposta in avanti &lt;em&gt;tutto&lt;/em&gt; ciò che viene dopo.&lt;/p&gt;
&lt;p&gt;Per l&apos;utente questo si traduce in una sensazione concreta: il sito sembra &quot;lento a partire&quot;. Anche se il resto è ottimizzato, un server che ci mette troppo a rispondere lascia lo schermo vuoto più a lungo, e la pagina dà l&apos;impressione di non funzionare. Su questo tema le linee guida offrono un riferimento pratico: un TTFB è considerato &lt;strong&gt;buono a 0,8 secondi o meno&lt;/strong&gt; ed è considerato &lt;strong&gt;scarso oltre 1,8 secondi&lt;/strong&gt;. Non è una soglia assoluta, ma un ordine di grandezza utile per capire se c&apos;è margine di miglioramento.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai quanto tempo passa prima che il tuo sito inizi a rispondere?&quot; text=&quot;Misuriamo il TTFB del tuo sito e ti diciamo se il problema è il server, l&apos;applicazione o il database.&quot; button=&quot;Misura il tuo TTFB →&quot;}&lt;/p&gt;
&lt;h2&gt;TTFB, SEO e Core Web Vitals&lt;/h2&gt;
&lt;p&gt;Qui serve un po&apos; di contesto. Google usa un insieme di metriche chiamate &lt;strong&gt;Core Web Vitals&lt;/strong&gt; per misurare la qualità dell&apos;esperienza di caricamento di una pagina, e queste metriche sono un fattore che influisce sul posizionamento nei risultati di ricerca. Sono tre: &lt;strong&gt;LCP&lt;/strong&gt; (&lt;em&gt;Largest Contentful Paint&lt;/em&gt;, quanto tempo passa prima che compaia il contenuto principale, buona sotto i 2,5 secondi), &lt;strong&gt;INP&lt;/strong&gt; (&lt;em&gt;Interaction to Next Paint&lt;/em&gt;, quanto è reattiva la pagina ai clic, buona sotto i 200 millisecondi) e &lt;strong&gt;CLS&lt;/strong&gt; (&lt;em&gt;Cumulative Layout Shift&lt;/em&gt;, quanto gli elementi &quot;saltano&quot; mentre la pagina si carica, buona sotto 0,1). Da notare che nel 2024 &lt;a href=&quot;/blog/inp-core-web-vital&quot;&gt;INP ha sostituito la vecchia metrica FID&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il TTFB, di per sé, &lt;strong&gt;non è una delle Core Web Vitals&lt;/strong&gt;. Però le precede tutte. È il primo mattoncino su cui si costruisce l&apos;LCP in particolare: la documentazione di web.dev lo descrive come la prima parte dell&apos;LCP e stima che possa pesarne circa il 40%. Il principio è semplice: nulla può accadere nella pagina finché il server non consegna quel primo byte, quindi qualsiasi cosa riduca il TTFB tende a migliorare anche le altre metriche di caricamento. Ridurre il TTFB non garantisce da solo un buon punteggio, ma un TTFB alto lo rende molto più difficile da ottenere.&lt;/p&gt;
&lt;h2&gt;Da cosa dipende il TTFB&lt;/h2&gt;
&lt;p&gt;Il TTFB non dipende da un unico fattore, ed è per questo che a volte è difficile diagnosticarlo. In generale entrano in gioco più livelli.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La rete e la distanza geografica.&lt;/strong&gt; Ogni richiesta viaggia fisicamente tra l&apos;utente e il server. Più sono lontani, più tempo serve solo per il viaggio dei dati, a cui si aggiungono la risoluzione DNS e l&apos;handshake TLS iniziali.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Il server e l&apos;hosting.&lt;/strong&gt; Un server sovraccarico, sottodimensionato o con software datato risponde più lentamente. &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;La qualità dell&apos;hosting&lt;/a&gt; è spesso il primo punto da valutare.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&apos;applicazione.&lt;/strong&gt; Il codice che genera la pagina può fare lavoro pesante a ogni richiesta: calcoli, chiamate a servizi esterni, elaborazioni non ottimizzate. Tutto questo si accumula prima del primo byte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Il database.&lt;/strong&gt; Se generare la pagina richiede interrogazioni lente o troppo numerose, il server resta in attesa del database prima di poter rispondere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La cache (o la sua assenza).&lt;/strong&gt; Se ogni richiesta viene ricalcolata da zero, si paga ogni volta l&apos;intero costo. La cache serve proprio a evitarlo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un TTFB alto, quindi, è un sintomo: il valore va poi scomposto per capire &lt;em&gt;dove&lt;/em&gt; si perde tempo.&lt;/p&gt;
&lt;h2&gt;Le leve generali per migliorarlo&lt;/h2&gt;
&lt;p&gt;Non esiste un&apos;unica soluzione valida per tutti, e conviene sempre misurare prima e dopo. Detto questo, gli approcci più diffusi sono pochi e agiscono sui livelli descritti sopra.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Caching.&lt;/strong&gt; È spesso la leva con il miglior rapporto tra sforzo e risultato. L&apos;idea è servire un risultato già pronto invece di ricalcolarlo. Può avvenire a più livelli: una &lt;em&gt;page cache&lt;/em&gt; che conserva l&apos;HTML già generato, una cache dei dati o delle query e le intestazioni &lt;code&gt;Cache-Control&lt;/code&gt;, che indicano a browser e intermediari quando riusare una risposta. Con una cache efficace, solo la prima richiesta paga il costo pieno verso il server d&apos;origine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN (Content Delivery Network).&lt;/strong&gt; Una CDN è una rete di server distribuiti geograficamente che avvicinano i contenuti all&apos;utente. Serve la risposta da un nodo vicino invece che dal server d&apos;origine lontano, riducendo il tempo di viaggio dei dati; in più le CDN in genere offrono DNS veloce, protocolli moderni come HTTP/2 e HTTP/3 e &lt;a href=&quot;/blog/tls-certificati-47-giorni&quot;&gt;una gestione ottimizzata del TLS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ottimizzazione del backend.&lt;/strong&gt; Qui rientra tutto ciò che rende più rapida la generazione della risposta: query di database più efficienti, riduzione del lavoro svolto a ogni richiesta, aggiornamento dell&apos;infrastruttura. È la parte meno &quot;magica&quot; e più artigianale, ma spesso la più risolutiva quando il collo di bottiglia è l&apos;applicazione, come succede di frequente con &lt;a href=&quot;/blog/prestashop-lento-come-velocizzarlo&quot;&gt;un e-commerce cresciuto negli anni&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ridurre i redirect.&lt;/strong&gt; Ogni rimbalzo da un indirizzo all&apos;altro aggiunge un giro completo di rete prima ancora di iniziare a rispondere. Eliminare i redirect superflui, quando sono sotto il proprio controllo, aiuta.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Il TTFB è il tempo prima del primo byte di risposta: un valore piccolo ma fondamentale, perché tutto il resto del caricamento parte da lì. Non è una metrica ufficiale delle Core Web Vitals, ma le condiziona, e per questo incide sia sull&apos;esperienza percepita sia, indirettamente, sulla SEO. Dipende da rete, server, applicazione, database e cache, e si affronta soprattutto con caching, CDN e ottimizzazione del backend. La regola pratica resta la stessa: misurare, capire dove si perde tempo e intervenire sul livello giusto invece di cambiare tutto a caso.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi un sito che risponde subito, non solo che si carica in fretta?&quot; text=&quot;Interveniamo su hosting, cache e backend per abbattere il TTFB, dall&apos;ottimizzazione del server alla messa a punto delle query più lente.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/ttfb&quot;&gt;Time to First Byte (TTFB) - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/optimize-ttfb&quot;&gt;Optimize Time to First Byte - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/vitals&quot;&gt;Web Vitals - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/optimize-lcp&quot;&gt;Optimize Largest Contentful Paint - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>HTTP QUERY (RFC 10008): un metodo sicuro con un corpo per le ricerche complesse</title><link>https://initd.it/blog/metodo-http-query</link><guid isPermaLink="true">https://initd.it/blog/metodo-http-query</guid><description>Il metodo HTTP QUERY, ora RFC 10008, consente ricerche complesse con un corpo restando sicuro e idempotente: cos&apos;è, come funziona, a che punto è.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi lavora con le API web conosce un fastidio ricorrente. Quando una ricerca diventa complessa - molti filtri, elenchi di valori, condizioni annidate - non c&apos;è un modo davvero pulito per esprimerla usando i metodi HTTP di sempre. A giugno 2026 l&apos;IETF, l&apos;organismo che cura gli standard tecnici di Internet, ha pubblicato la RFC 10008 e introdotto un nuovo metodo HTTP pensato proprio per questo caso: si chiama QUERY.&lt;/p&gt;
&lt;h2&gt;Il problema che QUERY vuole risolvere&lt;/h2&gt;
&lt;p&gt;Ogni richiesta HTTP ha un &quot;metodo&quot;, cioè un verbo che dice al server cosa si vuole fare. I più noti sono GET (leggere qualcosa) e POST (inviare dati, di solito per creare o modificare).&lt;/p&gt;
&lt;p&gt;Chi progetta un&apos;API di ricerca si trova davanti a un bivio poco comodo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GET&lt;/strong&gt; è il metodo giusto per leggere, ma i parametri viaggiano nella &lt;em&gt;querystring&lt;/em&gt;, cioè la coda dell&apos;indirizzo dopo il punto interrogativo (&lt;code&gt;?nome=valore&amp;amp;...&lt;/code&gt;). Gli indirizzi hanno però limiti di lunghezza pratici: server, proxy e browser possono troncare o rifiutare URL troppo lunghi. Inoltre l&apos;indirizzo finisce quasi sempre nei log e nella cronologia. Esprimere un filtro articolato in una querystring diventa presto illeggibile e fragile.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;POST&lt;/strong&gt; permette di allegare un &lt;em&gt;body&lt;/em&gt;, cioè un corpo del messaggio dove mettere i dati veri e propri, in JSON o in altri formati. Molte API usano POST per le ricerche solo per poter sfruttare questo corpo. Il problema è che POST nasce per operazioni che &lt;em&gt;cambiano&lt;/em&gt; qualcosa, e questo confonde chi sta nel mezzo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qui servono due termini, spiegati in parole semplici. Una richiesta si dice &lt;strong&gt;sicura&lt;/strong&gt; (safe) quando è di sola lettura: non ci si aspetta che modifichi nulla sul server. Si dice &lt;strong&gt;idempotente&lt;/strong&gt; quando ripeterla identica non cambia il risultato: mandarla una o dieci volte porta allo stesso stato. GET ha entrambe le proprietà; POST no. Per questo cache e proxy non possono ripetere una POST in automatico dopo un errore di rete, né conservarne la risposta con tranquillità: non sanno se quella richiesta ha &quot;toccato&quot; qualcosa.&lt;/p&gt;
&lt;p&gt;Il risultato è una scelta tra due compromessi: GET pulito ma con la querystring che scoppia, oppure POST comodo ma semanticamente sbagliato per una semplice ricerca.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è il metodo QUERY&lt;/h2&gt;
&lt;p&gt;QUERY colma esattamente questo vuoto. La RFC 10008 lo descrive come una richiesta &lt;strong&gt;sicura e idempotente che porta con sé un contenuto&lt;/strong&gt; che indica come deve essere elaborata dalla risorsa di destinazione, la quale risponde con il risultato di quell&apos;elaborazione.&lt;/p&gt;
&lt;p&gt;In pratica: è una richiesta di sola lettura come GET, ma con un corpo come POST. Il testo dello standard è netto sulle due proprietà. Sul fronte della sicurezza: il client &quot;non richiede né si aspetta alcun cambiamento allo stato della risorsa&quot;. Sull&apos;idempotenza: le richieste QUERY &quot;possono essere ritentate o ripetute quando serve, per esempio dopo un errore di connessione&quot;.&lt;/p&gt;
&lt;p&gt;Detto altrimenti, QUERY dà a chi progetta API la cosa che né GET né POST offrono da soli: una ricerca complessa, con un corpo strutturato, che resta ripetibile e memorizzabile in cache senza rischi.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Le tue API di ricerca usano ancora POST per aggirare i limiti di GET?&quot; text=&quot;Verifichiamo endpoint e client per capire se conviene già introdurre QUERY o tenere un fallback solido.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;GET, POST e QUERY a confronto&lt;/h2&gt;
&lt;p&gt;Un modo semplice per fissare le idee:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GET&lt;/strong&gt; - legge, senza corpo utile; i parametri stanno nell&apos;URL, con i suoi limiti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;POST&lt;/strong&gt; - ha un corpo, ma non è né sicuro né idempotente: pensato per modificare.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QUERY&lt;/strong&gt; - ha un corpo &lt;em&gt;ed è&lt;/em&gt; sicuro e idempotente: pensato per interrogare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La differenza non è cosmetica. Rende esplicita al server, alle cache e ai proxy l&apos;intenzione reale - &quot;sto solo leggendo&quot; - e sblocca comportamenti come la ripetizione automatica e la conservazione in cache che con POST sarebbero azzardati.&lt;/p&gt;
&lt;h2&gt;Come funziona, in concreto&lt;/h2&gt;
&lt;p&gt;Alcuni dettagli dello standard aiutano a capire come si userà.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Il tipo di contenuto è obbligatorio.&lt;/strong&gt; Il corpo di una QUERY può essere in qualsiasi formato: JSON, un&apos;espressione simile a SQL, un linguaggio di filtro proprietario. Proprio per questo il server deve sapere cosa sta ricevendo. La RFC prevede che il server rifiuti la richiesta se manca l&apos;intestazione &lt;code&gt;Content-Type&lt;/code&gt; o se non è coerente con il contenuto, e vieta di &quot;indovinare&quot; il formato dai dati (niente &lt;em&gt;content sniffing&lt;/em&gt;). Una richiesta priva dell&apos;indicazione del tipo va respinta con un codice 4xx, tipicamente 400.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C&apos;è un modo per annunciare il supporto.&lt;/strong&gt; Lo standard introduce una nuova intestazione di risposta, &lt;code&gt;Accept-Query&lt;/code&gt;, con cui una risorsa può dichiarare che accetta QUERY e quali formati di query capisce. Un esempio dalla specifica: &lt;code&gt;Accept-Query: &quot;application/jsonpath&quot;, application/sql;charset=&quot;UTF-8&quot;&lt;/code&gt;. Serve a far scoprire ai client, in modo ordinato, che quella via è disponibile.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le risposte possono andare in cache.&lt;/strong&gt; È il vantaggio pratico più evidente, perché incide direttamente su &lt;a href=&quot;/blog/ttfb-time-to-first-byte&quot;&gt;il tempo di risposta percepito&lt;/a&gt; da chi naviga. La risposta a una QUERY è memorizzabile, ma con un&apos;attenzione: la &lt;em&gt;chiave di cache&lt;/em&gt; - l&apos;identificativo con cui la risposta viene ritrovata - deve tenere conto del corpo della richiesta e dei suoi metadati, non solo dell&apos;URL. Le cache possono normalizzare differenze irrilevanti del contenuto per riconoscere richieste equivalenti, ma solo ai fini della chiave, senza alterare la richiesta vera.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La risposta può indicare dove ritrovare il risultato.&lt;/strong&gt; Il server può includere un&apos;intestazione &lt;code&gt;Content-Location&lt;/code&gt; che punta a una risorsa con il risultato dell&apos;operazione (eventualmente temporanea), oppure &lt;code&gt;Location&lt;/code&gt; per indicare una risorsa &quot;equivalente&quot;: un indirizzo su cui un client potrà poi fare una normale GET per ripetere la stessa interrogazione senza rimandare tutto il corpo.&lt;/p&gt;
&lt;h2&gt;Sicurezza e compatibilità: cosa tenere d&apos;occhio&lt;/h2&gt;
&lt;p&gt;Ci sono aspetti pratici che conviene valutare prima di adottarlo.&lt;/p&gt;
&lt;p&gt;Sul piano della riservatezza c&apos;è un beneficio: spostando i criteri di ricerca dall&apos;URL al corpo, i dati sensibili finiscono meno spesso nei log, perché - come nota la RFC - l&apos;indirizzo viene registrato e trattato dagli intermediari molto più del contenuto. Lo standard raccomanda anche che, se il server crea una risorsa temporanea per il risultato, l&apos;indirizzo assegnato non contenga parti sensibili della query originale.&lt;/p&gt;
&lt;p&gt;Restano però attriti di adozione. Nei browser una QUERY verso un&apos;altra origine richiede una richiesta di &lt;em&gt;preflight&lt;/em&gt; CORS - un controllo preliminare che il browser fa per verificare i permessi - perché QUERY non è tra i metodi considerati &quot;sicuri per impostazione predefinita&quot;. Va inoltre ricordato che l&apos;eccezione per cui un redirect trasforma una POST in GET (risposte 301 o 302) non si applica a QUERY. E, banalmente, ogni anello della catena - proxy, web server, framework, librerie client - deve imparare a riconoscere il nuovo metodo: finché non lo fa, una QUERY può essere bloccata o gestita male.&lt;/p&gt;
&lt;h2&gt;A che punto è la standardizzazione&lt;/h2&gt;
&lt;p&gt;Qui serve una precisazione, perché in giro si trova ancora la vecchia dizione. Per anni questa proposta è esistita come &lt;em&gt;Internet-Draft&lt;/em&gt; con il nome &lt;code&gt;draft-ietf-httpbis-safe-method-w-body&lt;/code&gt;, elaborata dal gruppo di lavoro httpbis dell&apos;IETF, lo stesso che ha prodotto anche &lt;a href=&quot;/blog/http-deprecation-header&quot;&gt;l&apos;header per segnalare le API deprecate&lt;/a&gt; e &lt;a href=&quot;/blog/http-concealed-auth&quot;&gt;lo schema di autenticazione concealed&lt;/a&gt;. Nel novembre 2025 il testo è stato approvato e a giugno 2026 è stato pubblicato come &lt;strong&gt;RFC 10008&lt;/strong&gt;. Non è più quindi una semplice bozza: è un documento pubblicato.&lt;/p&gt;
&lt;p&gt;Attenzione però al livello. RFC 10008 è uno &lt;strong&gt;Standard Proposto&lt;/strong&gt; (Proposed Standard), cioè il primo gradino stabile della via degli standard IETF: un testo maturo, rivisto pubblicamente e citabile, ma non ancora il livello finale di &quot;Internet Standard&quot;. In termini pratici significa che la specifica è solida, mentre il supporto reale in server, proxy e framework è ancora in corso di diffusione.&lt;/p&gt;
&lt;p&gt;Gli autori sono Julian Reschke (greenbytes), James M. Snell (Cloudflare) e Mike Bishop (Akamai). La presenza di Cloudflare e Akamai, due grandi operatori di rete e CDN, è un segnale utile: sono proprio gli attori che devono supportare il metodo lungo il percorso perché diventi usabile su larga scala, la stessa spinta con cui Cloudflare sta sperimentando anche su altri fronti del protocollo, per esempio &lt;a href=&quot;/blog/pay-per-crawl&quot;&gt;un nuovo uso dello status HTTP 402 per il traffico dei crawler AI&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Perché può tornare utile a chi sviluppa API&lt;/h2&gt;
&lt;p&gt;Il valore di QUERY non è l&apos;ennesima sigla, ma il fatto di dare un nome corretto a una cosa che si faceva già forzando gli strumenti. Chi finora ha usato POST per le ricerche lo ha fatto per un motivo tecnico legittimo - serviva un corpo - ma pagando in chiarezza e perdendo cache e ripetizione automatica.&lt;/p&gt;
&lt;p&gt;In prospettiva, per un&apos;API con ricerche articolate conviene valutare QUERY come alternativa più onesta: mantiene la semantica di lettura, evita i limiti dell&apos;URL, tiene i criteri fuori dai log e riapre la porta alla cache. Nel frattempo, dato che l&apos;adozione lungo la catena non è ancora universale, un approccio prudente è tenere una via di fallback su POST e verificare il comportamento di proxy e client prima di affidarsi solo a QUERY in produzione. È una di quelle novità che non cambiano tutto domani, ma che nel giro di qualche anno è ragionevole aspettarsi come opzione standard nelle API di ricerca.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Stai progettando o revisionando un&apos;API con ricerche complesse?&quot; text=&quot;Sviluppiamo API su misura in Laravel e PHP: valutiamo insieme se e come introdurre QUERY, con attenzione a cache, proxy e compatibilità dei client.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc10008.html&quot;&gt;RFC 10008: The HTTP QUERY Method (RFC Editor)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/rfc10008/&quot;&gt;RFC 10008 - The HTTP QUERY Method (IETF Datatracker)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/&quot;&gt;draft-ietf-httpbis-safe-method-w-body (IETF httpbis working group)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Pacchetti npm compromessi: cosa è successo e come difendersi con un periodo di quarantena</title><link>https://initd.it/blog/pacchetti-npm-compromessi-quarantena</link><guid isPermaLink="true">https://initd.it/blog/pacchetti-npm-compromessi-quarantena</guid><description>Le ondate di pacchetti npm compromessi - da chalk/debug al worm Shai-Hulud, fino agli episodi del 2026 - e una difesa semplice ed efficace: il minimumReleaseAge di pnpm, con esempi di configurazione provati.</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chi sviluppa in JavaScript installa librerie di terze parti decine di volte al giorno, quasi senza pensarci. Un comando, qualche secondo, e il progetto ha una nuova dipendenza - insieme a tutte le dipendenze di quella dipendenza. Negli ultimi mesi questo gesto quotidiano è diventato il canale di una serie di attacchi che hanno colpito librerie usate da milioni di progetti. La buona notizia è che una delle difese più efficaci è anche semplice da adottare: aspettare qualche giorno prima di installare le versioni appena pubblicate. Vediamo cosa è successo e come si configura questa protezione con pnpm.&lt;/p&gt;
&lt;h2&gt;Cos&apos;è un attacco alla supply chain&lt;/h2&gt;
&lt;p&gt;Prima i termini. Il &lt;strong&gt;registro npm&lt;/strong&gt; è l&apos;archivio pubblico da cui si scaricano i pacchetti JavaScript: contiene milioni di librerie, pubblicate dai rispettivi manutentori. Un attacco alla &lt;strong&gt;supply chain&lt;/strong&gt; (&quot;catena di fornitura&quot;) non colpisce direttamente il tuo progetto: colpisce una delle librerie che il tuo progetto usa. Se un malintenzionato riesce a pubblicare una versione modificata di una libreria diffusa, chiunque la installi in quel periodo esegue anche il suo codice.&lt;/p&gt;
&lt;p&gt;Il punto debole è quasi sempre l&apos;account del manutentore. Ottenute le sue credenziali - di solito con il phishing, cioè con email e siti contraffatti che imitano quelli veri - l&apos;attaccante pubblica una nuova versione del pacchetto con dentro il codice malevolo. Per chi installa, quella versione è indistinguibile da un aggiornamento legittimo.&lt;/p&gt;
&lt;h2&gt;Cosa è successo, in breve&lt;/h2&gt;
&lt;p&gt;Gli episodi recenti danno la misura del problema.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;settembre 2025&lt;/strong&gt; un manutentore molto attivo è stato ingannato da una email di phishing che imitava il supporto di npm (il dominio contraffatto era &lt;code&gt;npmjs.help&lt;/code&gt;). Con le sue credenziali sono state pubblicate versioni malevole di 18 pacchetti, tra cui &lt;code&gt;chalk&lt;/code&gt; e &lt;code&gt;debug&lt;/code&gt;: librerie minuscole ma presenti, direttamente o indirettamente, in una fetta enorme dell&apos;ecosistema - nell&apos;insieme contano miliardi di scaricamenti a settimana. Il codice iniettato dirottava transazioni di criptovalute nel browser. Le versioni compromesse sono rimaste online circa &lt;strong&gt;due ore&lt;/strong&gt; prima della rimozione.&lt;/p&gt;
&lt;p&gt;Poche settimane dopo è arrivato &lt;strong&gt;Shai-Hulud&lt;/strong&gt;, un attacco di tipo nuovo: un &lt;strong&gt;worm&lt;/strong&gt;, cioè un programma che si replica da solo. Partito dal pacchetto &lt;code&gt;@ctrl/tinycolor&lt;/code&gt;, una volta installato cercava sulla macchina della vittima credenziali e &lt;a href=&quot;/blog/oauth-best-practice-sicurezza&quot;&gt;token di accesso&lt;/a&gt; (npm, GitHub, provider cloud), li usava per pubblicare versioni infette dei pacchetti gestiti dalla vittima stessa, e così si propagava di manutentore in manutentore. I pacchetti coinvolti sono arrivati nell&apos;ordine delle centinaia, e i segreti rubati venivano pubblicati in repository GitHub creati automaticamente. A &lt;strong&gt;fine novembre 2025&lt;/strong&gt; una seconda ondata (&quot;Shai-Hulud 2.0&quot;) ha prodotto decine di migliaia di repository malevoli.&lt;/p&gt;
&lt;p&gt;Il fenomeno non si è fermato: nella primavera del &lt;strong&gt;2026&lt;/strong&gt; i ricercatori hanno documentato nuove campagne che riprendono le stesse tecniche - tra cui una terza ondata del worm partita a fine aprile - e a &lt;strong&gt;giugno 2026&lt;/strong&gt; sono stati compromessi una trentina di pacchetti pubblicati sotto il namespace &lt;code&gt;@redhat-cloud-services&lt;/code&gt;. Non è un elenco completo, e con ogni probabilità non sarà l&apos;ultimo capitolo.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo progetto installa ancora le versioni npm appena pubblicate senza filtro?&quot; text=&quot;Controlliamo la configurazione di pnpm o npm nei tuoi progetti e valutiamo se attivare una quarantena sulle nuove versioni.&quot; button=&quot;Chiedi un controllo →&quot;}&lt;/p&gt;
&lt;h2&gt;Perché basta &quot;aspettare&quot; per difendersi&lt;/h2&gt;
&lt;p&gt;C&apos;è un dettaglio che ricorre in quasi tutti questi episodi: le versioni malevole vengono individuate e rimosse &lt;strong&gt;in fretta&lt;/strong&gt;. Le versioni compromesse di &lt;code&gt;chalk&lt;/code&gt; e &lt;code&gt;debug&lt;/code&gt; sono durate un paio d&apos;ore; il worm Shai-Hulud è stato identificato nel giro di una dozzina di ore. La comunità della sicurezza monitora il registro npm costantemente, e un pacchetto popolare che inizia a fare cose strane viene segnalato quasi subito.&lt;/p&gt;
&lt;p&gt;Il problema è che in quelle poche ore i danni li subisce chi installa &lt;em&gt;proprio in quel momento&lt;/em&gt;. E gli intervalli di versione usati nei &lt;code&gt;package.json&lt;/code&gt; (il classico &lt;code&gt;^1.2.3&lt;/code&gt;, che accetta qualsiasi versione compatibile più recente) fanno sì che una versione appena pubblicata venga adottata automaticamente da chiunque installi da zero o aggiorni.&lt;/p&gt;
&lt;p&gt;Da qui l&apos;idea della &lt;strong&gt;quarantena&lt;/strong&gt; (o &lt;em&gt;cooldown&lt;/em&gt;): non installare mai versioni pubblicate da meno di X giorni. Non protegge da tutto - un attacco che resta inosservato più a lungo la supera - ma avrebbe bloccato la quasi totalità degli episodi visti finora, al costo di adottare gli aggiornamenti con qualche giorno di ritardo.&lt;/p&gt;
&lt;h2&gt;Come si configura con pnpm&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;pnpm&lt;/strong&gt; (un gestore di pacchetti alternativo a npm, compatibile con lo stesso registro, che sa anche &lt;a href=&quot;/blog/fissare-versione-node-con-pnpm&quot;&gt;bloccare la versione di Node.js usata dal progetto&lt;/a&gt;) implementa questa idea con l&apos;impostazione &lt;code&gt;minimumReleaseAge&lt;/code&gt;, espressa in &lt;strong&gt;minuti&lt;/strong&gt;. Si imposta nel file &lt;code&gt;pnpm-workspace.yaml&lt;/code&gt; alla radice del progetto:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# pnpm-workspace.yaml
# non installare versioni pubblicate da meno di 3 giorni
minimumReleaseAge: 4320
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Da quel momento pnpm, per ogni dipendenza - incluse quelle &lt;strong&gt;transitive&lt;/strong&gt;, cioè le dipendenze delle dipendenze - risolve la versione più recente che abbia almeno quell&apos;età. L&apos;impostazione esiste da pnpm 10.16. Un esempio provato mentre scrivevamo questo articolo: al 16 luglio 2026 l&apos;ultima versione di &lt;code&gt;@types/node&lt;/code&gt; è la 26.1.1, pubblicata l&apos;8 luglio. Con una quarantena di 10 giorni (&lt;code&gt;minimumReleaseAge: 14400&lt;/code&gt;), pnpm salta la 26.1.1 e installa la 26.1.0 del 1° luglio, dichiarandolo apertamente:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pnpm add @types/node
# ...
dependencies:
+ @types/node 26.1.0 (26.1.1 is available)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nessun errore, nessun intervento manuale: la versione troppo recente non viene considerata, e pnpm segnala tra parentesi che esiste. Quando avrà superato la soglia, un normale aggiornamento la porterà nel progetto.&lt;/p&gt;
&lt;p&gt;Il controllo non vale solo per le nuove installazioni: pnpm verifica anche il &lt;strong&gt;lockfile&lt;/strong&gt; esistente, e se contiene una versione più giovane della soglia blocca l&apos;installazione con un errore esplicito (&lt;code&gt;ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION&lt;/code&gt;, provato anche questo). Se una dipendenza specifica deve poter arrivare subito - per esempio un pacchetto interno all&apos;azienda, o una correzione di sicurezza attesa - si aggiunge un&apos;eccezione:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;minimumReleaseAge: 4320
minimumReleaseAgeExclude:
  - &quot;@nostra-azienda/*&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Quanto dev&apos;essere lunga la quarantena? Da pnpm 11 l&apos;impostazione è attiva di default a &lt;code&gt;1440&lt;/code&gt; minuti (un giorno), che è già sufficiente per gli episodi lampo come chalk/debug. Un valore tra i 3 e i 7 giorni dà più margine, in cambio di aggiornamenti un po&apos; meno tempestivi: una scelta ragionevole per progetti che non inseguono l&apos;ultima versione di tutto.&lt;/p&gt;
&lt;h2&gt;Le altre difese che pnpm attiva da solo&lt;/h2&gt;
&lt;p&gt;La quarantena funziona meglio insieme ad altre due protezioni, che nelle versioni recenti di pnpm sono già attive.&lt;/p&gt;
&lt;p&gt;La prima riguarda gli &lt;strong&gt;script di installazione&lt;/strong&gt;. Molti attacchi (Shai-Hulud incluso) si attivano tramite i &lt;em&gt;lifecycle script&lt;/em&gt;, comandi che un pacchetto può eseguire automaticamente al momento dell&apos;installazione. Da pnpm 10 questi script &lt;strong&gt;non vengono più eseguiti&lt;/strong&gt; per le dipendenze, salvo quelle autorizzate esplicitamente (la chiave attuale è &lt;code&gt;allowBuilds&lt;/code&gt;; nelle versioni precedenti si chiamava &lt;code&gt;onlyBuiltDependencies&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# pnpm-workspace.yaml
# solo questi pacchetti possono eseguire script di installazione
allowBuilds:
  - esbuild
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La seconda è il &lt;strong&gt;lockfile&lt;/strong&gt; (&lt;code&gt;pnpm-lock.yaml&lt;/code&gt;), il file che registra le versioni esatte installate. In CI e in produzione conviene installare con &lt;code&gt;pnpm install --frozen-lockfile&lt;/code&gt;: se il lockfile non corrisponde al &lt;code&gt;package.json&lt;/code&gt; l&apos;installazione fallisce invece di risolvere versioni nuove, quindi nessun aggiornamento entra senza passare da una modifica revisionabile, lo stesso spirito con cui conviene &lt;a href=&quot;/blog/cloudflare-oauth-self-managed&quot;&gt;ritagliare i permessi dei token usati dalla pipeline sul minimo necessario&lt;/a&gt; invece di lasciarli ad ampio raggio.&lt;/p&gt;
&lt;p&gt;Chi usa npm non resta senza opzioni: il flag &lt;code&gt;--before&lt;/code&gt; permette di installare solo versioni pubblicate prima di una certa data (&lt;code&gt;npm install --before=&quot;2026-07-09&quot;&lt;/code&gt;), anche se va passato a ogni comando; al momento non esiste un equivalente stabile del cooldown automatico di pnpm.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Gli attacchi alla supply chain di npm non sono più episodi isolati: tra la fine del 2025 e il 2026 hanno colpito librerie di uso comune, con un worm capace di propagarsi da solo tra i manutentori. Quasi tutte le versioni malevole, però, vengono rimosse entro poche ore o pochi giorni dalla pubblicazione. Imporre una quarantena alle versioni troppo recenti - con &lt;code&gt;minimumReleaseAge&lt;/code&gt; di pnpm, un valore tra 1 e 7 giorni - elimina la finestra in cui si è più esposti, senza cambiare il modo di lavorare. Insieme al blocco degli script di installazione e al lockfile congelato &lt;a href=&quot;/blog/cos-e-una-pipeline-ci-cd&quot;&gt;nella pipeline che compila il progetto&lt;/a&gt;, è oggi una delle difese con il miglior rapporto tra costo e beneficio per chi sviluppa in JavaScript.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi mettere in sicurezza la catena di dipendenze dei tuoi progetti JavaScript?&quot; text=&quot;Configuriamo minimumReleaseAge, blocco degli script di installazione e lockfile congelato in CI per i progetti Laravel e Vue che sviluppiamo e manteniamo.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://unit42.paloaltonetworks.com/monitoring-npm-supply-chain-attacks/&quot;&gt;The npm Threat Landscape: Attack Surface and Mitigations - Palo Alto Networks Unit 42&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://unit42.paloaltonetworks.com/npm-supply-chain-attack/&quot;&gt;&quot;Shai-Hulud&quot; Worm Compromises npm Ecosystem in Supply Chain Attack - Unit 42&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/blogs/security/defending-against-supply-chain-attacks-like-chalk-debug-and-the-shai-hulud-worm/&quot;&gt;Defending against supply chain attacks like Chalk/Debug and the Shai-Hulud worm - AWS Security Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pnpm.io/supply-chain-security&quot;&gt;Mitigating supply chain attacks - documentazione pnpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pnpm.io/blog/releases/11.0&quot;&gt;pnpm 11.0 - note di rilascio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Fissare la versione di Node.js con pnpm, senza nvm</title><link>https://initd.it/blog/fissare-versione-node-con-pnpm</link><guid isPermaLink="true">https://initd.it/blog/fissare-versione-node-con-pnpm</guid><description>pnpm sa gestire anche la versione di Node.js: con devEngines il progetto dichiara il runtime che gli serve e pnpm lo scarica, lo usa e lo blocca nel lockfile - senza nvm. Esempi provati e limiti da conoscere.</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&quot;Sulla mia macchina funziona.&quot; Una buona parte delle volte, dietro questa frase c&apos;è una versione diversa di Node.js: il progetto è nato sulla 20, il collega ha la 24, la CI usa un&apos;altra ancora. Lo strumento classico per conviverci è nvm, che permette di installare più versioni e passare dall&apos;una all&apos;altra. Funziona, ma va installato e configurato da ogni persona del team, e ricordarsi di digitare &lt;code&gt;nvm use&lt;/code&gt; al momento giusto resta un onere. Chi usa &lt;strong&gt;pnpm&lt;/strong&gt; come gestore di pacchetti ha un&apos;alternativa spesso trascurata: pnpm sa gestire anche la versione di Node.js, e sa farlo &lt;em&gt;per progetto&lt;/em&gt;, senza strumenti aggiuntivi.&lt;/p&gt;
&lt;h2&gt;Il problema, in due parole&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Node.js&lt;/strong&gt; è l&apos;ambiente che esegue il JavaScript fuori dal browser; ogni progetto è di fatto testato e garantito solo su certe versioni. &lt;strong&gt;nvm&lt;/strong&gt; (Node Version Manager) affronta il problema installando più versioni fianco a fianco: &lt;code&gt;nvm install 20&lt;/code&gt;, &lt;code&gt;nvm use 20&lt;/code&gt; e la shell corrente passa alla 20.&lt;/p&gt;
&lt;p&gt;I limiti sono noti a chi lo usa ogni giorno. nvm è uno script di shell che va installato per utente e agganciato al profilo della shell; il cambio di versione vale per la sessione corrente, quindi va ripetuto (o automatizzato con hook) a ogni cartella; nelle &lt;a href=&quot;/blog/cos-e-una-pipeline-ci-cd&quot;&gt;pipeline di integrazione continua&lt;/a&gt; e nei container si usa tipicamente tutt&apos;altro meccanismo, con il rischio di divergenze. Non è un difetto di nvm: è il prezzo di uno strumento separato dal progetto.&lt;/p&gt;
&lt;h2&gt;L&apos;alternativa: il runtime dichiarato nel progetto&lt;/h2&gt;
&lt;p&gt;pnpm ribalta l&apos;approccio: la versione di Node.js diventa una &lt;strong&gt;dichiarazione del progetto&lt;/strong&gt;, scritta nel &lt;code&gt;package.json&lt;/code&gt; e versionata insieme al codice. Il campo si chiama &lt;code&gt;devEngines&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;devEngines&quot;: {
    &quot;runtime&quot;: {
      &quot;name&quot;: &quot;node&quot;,
      &quot;version&quot;: &quot;20.19.0&quot;,
      &quot;onFail&quot;: &quot;download&quot;
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La chiave è &lt;code&gt;onFail: &quot;download&quot;&lt;/code&gt;: se il Node in uso non corrisponde a quello dichiarato, pnpm &lt;strong&gt;scarica da solo&lt;/strong&gt; la versione richiesta (una volta sola, poi resta in cache) e la usa per il progetto, senza toccare il Node di sistema. Il runtime compare nell&apos;output di &lt;code&gt;pnpm install&lt;/code&gt; come &lt;a href=&quot;/blog/pacchetti-npm-compromessi-quarantena&quot;&gt;una dipendenza qualsiasi&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pnpm install
# ...
+ node 20.19.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E da quel momento tutto ciò che passa da pnpm usa quella versione. Un esempio provato mentre scrivevamo l&apos;articolo, su una macchina con Node 22 di sistema:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ node -v               # il Node di sistema
v22.22.2

$ pnpm run check-node   # uno script che esegue &quot;node -v&quot;
&amp;gt; node -v
v20.19.0                # la versione dichiarata nel progetto

$ pnpm node -v
v20.19.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nessun &lt;code&gt;nvm use&lt;/code&gt;, nessun hook di shell: chiunque cloni il repository - collega nuovo, CI, container - ottiene la stessa versione di Node semplicemente usando pnpm.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo team perde tempo a inseguire versioni diverse di Node tra sviluppatori e CI?&quot; text=&quot;Verifichiamo la configurazione degli ambienti di sviluppo e della pipeline CI/CD dei tuoi progetti JavaScript.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Anche a intervalli, e bloccato nel lockfile&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;version&lt;/code&gt; accetta sia una versione esatta sia un &lt;strong&gt;intervallo semver&lt;/strong&gt;. Con &lt;code&gt;&quot;version&quot;: &quot;^20.11.0&quot;&lt;/code&gt;, nel nostro test pnpm ha risolto e scaricato l&apos;ultima 20.x disponibile:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pnpm install
# ...
+ node 20.20.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il dettaglio più interessante è che la versione risolta finisce nel &lt;strong&gt;lockfile&lt;/strong&gt; (&lt;code&gt;pnpm-lock.yaml&lt;/code&gt;), come una normale dipendenza:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;node:
  specifier: runtime:^20.11.0
  version: runtime:20.20.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Questo significa che tutto il team e la CI usano &lt;em&gt;esattamente&lt;/em&gt; la stessa versione di Node, non solo &quot;una versione compatibile&quot;: la riproducibilità è la stessa che il lockfile garantisce alle librerie. Il classico campo &lt;code&gt;engines&lt;/code&gt;, per confronto, si limita ad avvisare quando la versione non corrisponde; &lt;code&gt;devEngines&lt;/code&gt; con &lt;code&gt;onFail: &quot;download&quot;&lt;/code&gt; risolve il problema da solo.&lt;/p&gt;
&lt;h2&gt;I limiti da conoscere&lt;/h2&gt;
&lt;p&gt;Il meccanismo vale per ciò che &lt;strong&gt;passa da pnpm&lt;/strong&gt;: &lt;code&gt;pnpm run&lt;/code&gt;, &lt;code&gt;pnpm exec&lt;/code&gt;, &lt;code&gt;pnpm node&lt;/code&gt;, gli script del &lt;code&gt;package.json&lt;/code&gt;. Se si digita &lt;code&gt;node server.js&lt;/code&gt; direttamente nel terminale, si usa ancora il Node di sistema. Nella pratica è un limite più piccolo di quanto sembri - nei progetti JavaScript quasi tutto passa dagli script - ma è bene saperlo: &lt;code&gt;devEngines&lt;/code&gt; non &quot;cambia il Node del computer&quot;, garantisce che il &lt;em&gt;progetto&lt;/em&gt; giri sulla versione giusta.&lt;/p&gt;
&lt;p&gt;Una nota per chi arriva da versioni precedenti: fino a pnpm 10 esisteva l&apos;impostazione &lt;code&gt;use-node-version&lt;/code&gt; (o &lt;code&gt;useNodeVersion&lt;/code&gt; nel &lt;code&gt;pnpm-workspace.yaml&lt;/code&gt;), che faceva una cosa simile. &lt;strong&gt;pnpm 11 l&apos;ha rimossa&lt;/strong&gt; insieme a &lt;code&gt;executionEnv.nodeVersion&lt;/code&gt;: la strada supportata oggi è &lt;code&gt;devEngines&lt;/code&gt;. Se un progetto usa ancora quelle chiavi, con pnpm 11 &lt;a href=&quot;/blog/http-deprecation-header&quot;&gt;vengono semplicemente ignorate&lt;/a&gt; - un aggiornamento facile da dimenticare.&lt;/p&gt;
&lt;h2&gt;E al posto di nvm per tutto il sistema?&lt;/h2&gt;
&lt;p&gt;pnpm può sostituire nvm anche come gestore globale delle versioni, con il comando &lt;code&gt;pnpm env&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm env list 20            # quali versioni 20.x esistono
pnpm env use --global 20    # installa e attiva l&apos;ultima 20.x
pnpm env use --global lts   # oppure l&apos;ultima LTS
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Qui serve una precisazione onesta: &lt;code&gt;pnpm env&lt;/code&gt; gestisce il collegamento globale a Node, quindi richiede che pnpm sia installato in modo autonomo (con lo script di installazione ufficiale o con Corepack), non tramite &lt;code&gt;npm install -g pnpm&lt;/code&gt; - in quel caso pnpm girerebbe &lt;em&gt;dentro&lt;/em&gt; il Node che sta cercando di sostituire. Per l&apos;uso per-progetto visto sopra, invece, questa distinzione non conta.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Se un progetto usa già pnpm, fissare la versione di Node.js non richiede nvm: un blocco &lt;code&gt;devEngines&lt;/code&gt; nel &lt;code&gt;package.json&lt;/code&gt;, con &lt;code&gt;onFail: &quot;download&quot;&lt;/code&gt;, fa scaricare e usare a pnpm il runtime dichiarato - versione esatta o intervallo - e blocca nel lockfile quella effettivamente risolta, uguale per tutto il team e per la CI. Il limite è chiaro (vale per i comandi che passano da pnpm), e chi arriva da pnpm 10 deve migrare da &lt;code&gt;use-node-version&lt;/code&gt; a &lt;code&gt;devEngines&lt;/code&gt;. nvm resta utile come gestore generale sulla propria macchina; per &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;la riproducibilità di un progetto&lt;/a&gt;, la versione dichiarata nel repository è la strada più solida.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi rendere riproducibili gli ambienti dei tuoi progetti Node.js?&quot; text=&quot;Configuriamo pnpm, pipeline CI/CD e ambienti di sviluppo per i progetti Laravel e Vue che realizziamo e gestiamo.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pnpm.io/settings&quot;&gt;Settings (pnpm-workspace.yaml) - documentazione pnpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pnpm.io/cli/env&quot;&gt;pnpm env - documentazione pnpm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pnpm.io/blog/releases/11.0&quot;&gt;pnpm 11.0 - note di rilascio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>PHP a fine vita: cosa rischia davvero chi resta su una versione vecchia</title><link>https://initd.it/blog/php-fine-vita-cosa-rischi</link><guid isPermaLink="true">https://initd.it/blog/php-fine-vita-cosa-rischi</guid><description>Il sito funziona anche su un PHP vecchio, finché va tutto bene: senza correzioni di sicurezza ogni nuova falla resta aperta per sempre. Cosa significa fine del supporto e come si aggiorna senza drammi.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&quot;Funziona, perché toccarlo?&quot; è la frase che tiene in vita migliaia di siti e gestionali su versioni di PHP ormai abbandonate. Ed è una frase comprensibile: l&apos;aggiornamento costa tempo, il sito risponde, i clienti non si lamentano. Il problema è che il rischio di un PHP a fine vita non si vede: non rallenta la pagina, non mostra errori, non manda avvisi. Semplicemente, da un certo giorno in poi, nessuno chiude più le falle che vengono scoperte.&lt;/p&gt;
&lt;p&gt;E le falle vengono scoperte comunque. La ricerca di vulnerabilità non si ferma quando finisce il supporto: si ferma solo la distribuzione delle correzioni. Tutto ciò che emerge dopo quella data resta aperto per sempre, su ogni server che esegue quella versione.&lt;/p&gt;
&lt;h2&gt;Fine del supporto: cosa significa davvero&lt;/h2&gt;
&lt;p&gt;Ogni versione di PHP attraversa due fasi. Nella prima, il &lt;strong&gt;supporto attivo&lt;/strong&gt;, riceve correzioni di ogni tipo: bug, prestazioni, sicurezza. Nella seconda, il &lt;strong&gt;supporto di sicurezza&lt;/strong&gt;, riceve solo le patch per le vulnerabilità. Finita anche questa, la versione è &lt;strong&gt;a fine vita&lt;/strong&gt; (&lt;em&gt;end of life&lt;/em&gt;): il codice continua a girare, ma è ufficialmente abbandonato.&lt;/p&gt;
&lt;p&gt;Le date sono pubbliche e non negoziabili: l&apos;intera famiglia PHP 7 è a fine vita dalla fine del 2022, PHP 8.0 dalla fine del 2023 e PHP 8.1 dalla fine del 2025. Nell&apos;estate del 2026 ricevono correzioni solo PHP 8.2 (che chiude a fine anno), 8.3, 8.4 e 8.5. Chi oggi è su PHP 7.4 esegue un software che non vede una patch di sicurezza da quasi quattro anni. Lo stesso meccanismo vale un piano più in basso, per il server che ospita tutto: ne parliamo a proposito di &lt;a href=&quot;/blog/proxmox-8-fine-vita-aggiornare&quot;&gt;Proxmox VE 8 a fine vita&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;I rischi concreti, oltre la teoria&lt;/h2&gt;
&lt;p&gt;Il primo rischio è ovvio: &lt;strong&gt;vulnerabilità senza rimedio&lt;/strong&gt;. Un sito esposto su internet viene sondato in continuazione da scanner automatici che cercano proprio le installazioni vecchie, perché sono le più facili da bucare. Non serve essere un bersaglio interessante: basta essere raggiungibili.&lt;/p&gt;
&lt;p&gt;Il secondo è più sottile: &lt;strong&gt;l&apos;ecosistema si sposta&lt;/strong&gt;. Librerie, framework e piattaforme abbandonano le versioni vecchie di PHP molto prima dei loro utenti: le nuove release di WordPress, PrestaShop, Laravel e delle dipendenze Composer richiedono versioni recenti. Restare fermi su un PHP vecchio significa restare fermi su tutto, moduli di pagamento e plugin di sicurezza inclusi.&lt;/p&gt;
&lt;p&gt;Il terzo riguarda chi tratta dati personali: per il GDPR le misure di sicurezza devono essere &quot;adeguate allo stato dell&apos;arte&quot;, e un componente abbandonato dal produttore è difficile da difendere come adeguato, come abbiamo visto parlando di &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;GDPR lato infrastruttura&lt;/a&gt;. In caso di violazione, la versione di PHP finisce nel verbale. Per le aziende soggette alla NIS2 c&apos;è anche un risvolto contrattuale: le misure dell&apos;ACN ammettono solo software con aggiornamenti di sicurezza garantiti e i requisiti passano ai fornitori, come spieghiamo in &lt;a href=&quot;/blog/nis2-fornitori-pmi-cosa-fare&quot;&gt;NIS2 e fornitori&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Non sai su quale versione di PHP girano i tuoi siti?&quot; text=&quot;Lo verifichiamo noi: censiamo versioni, estensioni e dipendenze dei tuoi progetti e ti diciamo cosa è a rischio e cosa conviene aggiornare per primo.&quot; button=&quot;Chiedi un censimento gratuito →&quot;}&lt;/p&gt;
&lt;h2&gt;L&apos;aggiornamento conviene anche quando non è obbligato&lt;/h2&gt;
&lt;p&gt;Aggiornare PHP non è solo togliersi un rischio: è uno dei pochi interventi che migliora le prestazioni senza toccare una riga di codice. Ogni release recente esegue lo stesso programma più in fretta della precedente, e su un sito dinamico la differenza si misura, come racconta la nostra guida su &lt;a href=&quot;/blog/prestashop-lento-come-velocizzarlo&quot;&gt;come velocizzare un PrestaShop&lt;/a&gt;. Meno tempo di CPU per richiesta significa anche server più piccoli a parità di traffico: l&apos;aggiornamento spesso si ripaga in bolletta.&lt;/p&gt;
&lt;h2&gt;Come si migra senza drammi&lt;/h2&gt;
&lt;p&gt;La migrazione temuta &quot;perché poi si rompe tutto&quot; si affronta come ogni intervento serio: con un metodo, non con il coraggio.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inventario&lt;/strong&gt;: quali applicazioni girano, su quale versione, con quali estensioni e dipendenze. Senza questa mappa ogni stima è una scommessa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prova in un ambiente separato&lt;/strong&gt;: si replica il sito su un ambiente di test con la versione di destinazione e si guardano log e &lt;em&gt;deprecation warning&lt;/em&gt;. Gli strumenti di analisi statica segnalano in anticipo il codice incompatibile.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggiornamenti graduali&lt;/strong&gt;: meglio salire una versione alla volta che saltare dal 7.4 all&apos;8.5 in un colpo solo, correggendo le incompatibilità a piccoli passi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rete di sicurezza&lt;/strong&gt;: prima di toccare la produzione, &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;un backup verificato&lt;/a&gt; e un piano di rientro. Se qualcosa va storto, si torna indietro in minuti, non in nottate.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Per un e-commerce o un gestionale su misura il grosso del lavoro non è quasi mai PHP in sé, ma i moduli e il codice custom scritti anni fa: è lì che serve la mano di chi queste migrazioni le fa di mestiere.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Una versione di PHP a fine vita non smette di funzionare: smette di essere difesa. Le falle nuove restano aperte per sempre, l&apos;ecosistema di librerie e piattaforme si allontana, e la conformità GDPR diventa difficile da sostenere. La migrazione, affrontata con inventario, ambiente di prova, passi graduali e backup, è un progetto ordinario e non un salto nel vuoto; in cambio si ottiene un sito più sicuro, più veloce e di nuovo libero di aggiornare tutto il resto.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi portare i tuoi progetti su un PHP supportato senza fermare nulla?&quot; text=&quot;Migriamo siti, e-commerce e gestionali da versioni PHP a fine vita: inventario, ambiente di prova, correzione delle incompatibilità e rientro garantito dal backup.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.php.net/supported-versions.php&quot;&gt;Supported Versions - php.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://endoflife.date/php&quot;&gt;PHP - endoflife.date&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.php.net/manual/en/book.opcache.php&quot;&gt;OPcache - manuale ufficiale PHP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>PrestaShop lento: da dove nasce il problema e come si risolve</title><link>https://initd.it/blog/prestashop-lento-come-velocizzarlo</link><guid isPermaLink="true">https://initd.it/blog/prestashop-lento-come-velocizzarlo</guid><description>Un PrestaShop lento non si sistema a tentativi: si misura, si trova il collo di bottiglia e si interviene sul livello giusto, tra hosting, PHP, MySQL, moduli e cache.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Un e-commerce lento perde vendite, ed è una perdita silenziosa: nessun cliente scrive per avvisare che la pagina ci metteva troppo, semplicemente chiude la scheda e compra altrove. Ogni secondo di attesa in più si paga in carrelli abbandonati, e il conto arriva proprio nei momenti peggiori, quando una promozione o una campagna porta più traffico del solito.&lt;/p&gt;
&lt;p&gt;PrestaShop, di suo, non è una piattaforma lenta: lo diventa. Anni di moduli installati e mai rimossi, un tema comprato per l&apos;estetica, un hosting scelto quando il negozio era piccolo, un database cresciuto senza manutenzione. La buona notizia è che la lentezza non è una condanna né un mistero: si diagnostica e si cura, a patto di procedere con metodo invece che a tentativi.&lt;/p&gt;
&lt;h2&gt;La lentezza ha sempre un indirizzo&lt;/h2&gt;
&lt;p&gt;&quot;Il sito è lento&quot; è un sintomo unico, ma le cause abitano in posti diversi: la rete e l&apos;hosting, la versione di PHP e la sua configurazione, il database MySQL, il tema e i moduli, il front-end con i suoi script. Ogni livello ha rimedi propri, e un intervento sul livello sbagliato non produce nulla.&lt;/p&gt;
&lt;p&gt;L&apos;errore più comune è proprio questo: passare a un hosting più costoso senza sapere dove si perde tempo. Se il collo di bottiglia è un modulo che esegue centinaia di query per comporre la home, raddoppiare la RAM del server sposta poco: la spesa aumenta, l&apos;attesa resta.&lt;/p&gt;
&lt;h2&gt;Misurare prima di toccare&lt;/h2&gt;
&lt;p&gt;La diagnosi separa due famiglie di tempo. C&apos;è il tempo che il server impiega a generare la pagina, che si legge nel &lt;a href=&quot;/blog/ttfb-time-to-first-byte&quot;&gt;TTFB, il Time To First Byte&lt;/a&gt;, e c&apos;è il tempo che il browser impiega a renderla usabile, misurato dai &lt;a href=&quot;/blog/inp-core-web-vital&quot;&gt;Core Web Vitals&lt;/a&gt;. Un TTFB alto punta a server, PHP, database o cache; un TTFB buono con una pagina comunque pigra punta a tema, immagini e script.&lt;/p&gt;
&lt;p&gt;Gli strumenti ci sono già. PageSpeed Insights inquadra il front-end. Per il lato server, PrestaShop include un profiler integrato: attivandolo si vede, pagina per pagina, quanto tempo va in PHP, quante query vengono eseguite e quali sono le più costose. Sul database, lo &lt;em&gt;slow query log&lt;/em&gt; di MySQL registra le interrogazioni oltre soglia. Un esempio concreto: se la home risponde in 1,8 secondi e il profiler mostra 900 query, il problema non è lo slider delle immagini, è chi compone quella pagina.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo PrestaShop rallenta proprio quando vende di più?&quot; text=&quot;Facciamo noi la diagnosi: misuriamo TTFB, query e moduli, troviamo il collo di bottiglia e ti diciamo cosa conviene sistemare, prima di toccare qualsiasi cosa.&quot; button=&quot;Chiedi una diagnosi gratuita →&quot;}&lt;/p&gt;
&lt;h2&gt;Lato server: PHP, OPcache e MySQL&lt;/h2&gt;
&lt;p&gt;PrestaShop è un&apos;applicazione PHP, e la versione di PHP conta: ogni release recente esegue lo stesso codice più in fretta della precedente, e le versioni vecchie oltre a essere lente &lt;a href=&quot;/blog/php-fine-vita-cosa-rischi&quot;&gt;non ricevono più correzioni di sicurezza&lt;/a&gt;. Accanto alla versione serve &lt;strong&gt;OPcache&lt;/strong&gt;, l&apos;estensione che tiene in memoria il codice già compilato invece di ricompilarlo a ogni richiesta:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;; /etc/php/8.3/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=40000
; in produzione: niente ricontrolli dei file a ogni richiesta,
; la cache si svuota al deploy
opcache.validate_timestamps=0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sul fronte database, la regola d&apos;oro di MySQL è un &lt;strong&gt;InnoDB buffer pool&lt;/strong&gt; dimensionato in modo che i dati caldi del negozio stiano in memoria: se il buffer è troppo piccolo, ogni pagina prodotto paga letture su disco che potrebbero essere evitate. Completano il quadro un pool PHP-FPM proporzionato a CPU e RAM disponibili e lo slow query log attivo, così le query problematiche si vedono invece di sospettarle.&lt;/p&gt;
&lt;h2&gt;Moduli e tema: i soliti sospetti&lt;/h2&gt;
&lt;p&gt;Ogni modulo installato aggiunge hook che scattano a ogni pagina, query in più, a volte chiamate a servizi esterni che tengono in ostaggio la risposta. Il marketplace è pieno di moduli scritti bene e di moduli scritti male, e uno solo di questi ultimi basta: il classico difetto è la query ripetuta per ogni prodotto in elenco invece di una sola per tutto l&apos;elenco.&lt;/p&gt;
&lt;p&gt;La cura è poco glamour ma efficace: inventario dei moduli, disattivazione di quelli inutilizzati o doppioni, e per i sospetti la prova del nove, disattivare e rimisurare. Lo stesso vale per il tema, dove gli &lt;em&gt;override&lt;/em&gt; accumulati negli anni possono riscrivere pezzi di piattaforma in modo meno efficiente dell&apos;originale.&lt;/p&gt;
&lt;h2&gt;La cache giusta al posto giusto&lt;/h2&gt;
&lt;p&gt;La cache in un PrestaShop lavora a strati: la cache dei template Smarty, la cache interna della piattaforma, una &lt;em&gt;full page cache&lt;/em&gt; davanti a tutto per le pagine uguali per tutti i visitatori, servita idealmente da &lt;a href=&quot;/blog/cos-e-un-reverse-proxy&quot;&gt;un reverse proxy&lt;/a&gt;, e una CDN per immagini e asset statici.&lt;/p&gt;
&lt;p&gt;Due avvertenze. La prima: la cache nasconde il codice lento, non lo ripara, e carrello, checkout e aree utente restano dinamici per natura, quindi un backend sano serve comunque. La seconda: una cache configurata male fa danni peggiori della lentezza, dal prezzo vecchio mostrato al cliente al carrello di un altro utente. Va progettata, non semplicemente accesa.&lt;/p&gt;
&lt;h2&gt;L&apos;hosting conta, ma non è sempre colpa sua&lt;/h2&gt;
&lt;p&gt;Sull&apos;hosting condiviso le risorse si dividono con i vicini: CPU, disco e database possono rallentare per colpe altrui, e i limiti si sentono appena il negozio cresce. Il passaggio a un VPS o al cloud dimensionato sul traffico reale è spesso il momento di svolta, e &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;la scelta del provider&lt;/a&gt; merita gli stessi criteri di qualunque infrastruttura seria.&lt;/p&gt;
&lt;p&gt;Resta però l&apos;ordine giusto delle cose: l&apos;hardware più potente applicato a un negozio con 900 query in home è un modo elegante di pagare di più lo stesso problema. Prima la diagnosi, poi il dimensionamento.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Un PrestaShop lento si affronta in sequenza: misurare TTFB e front-end per capire il lato del problema, leggere profiler e slow query log, sistemare le fondamenta del server (PHP recente, OPcache, MySQL con memoria adeguata), fare pulizia di moduli e override, stratificare la cache dove serve e, solo a quel punto, dimensionare l&apos;hosting sul traffico vero. Ogni passo si verifica rimisurando: se un intervento non cambia i numeri, non era il collo di bottiglia.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi un PrestaShop veloce anche sotto carico?&quot; text=&quot;Ottimizziamo e-commerce PrestaShop su tutta la filiera: hosting, PHP, MySQL, moduli e cache, con misure prima e dopo per vedere il risultato nero su bianco.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.php.net/manual/en/book.opcache.php&quot;&gt;OPcache - manuale ufficiale PHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool.html&quot;&gt;InnoDB Buffer Pool - documentazione ufficiale MySQL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/ttfb&quot;&gt;Time To First Byte - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://devdocs.prestashop-project.org/&quot;&gt;PrestaShop Developer Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>OpenTofu: l&apos;alternativa a Terraform dopo il cambio di licenza</title><link>https://initd.it/blog/opentofu-alternativa-terraform</link><guid isPermaLink="true">https://initd.it/blog/opentofu-alternativa-terraform</guid><description>Nel 2023 Terraform ha cambiato licenza e la community ha creato OpenTofu, un fork open source sotto la Linux Foundation. Cosa significa, quando conviene passare e come si evita il lock-in.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Immagina di aver costruito la tua casa seguendo le regole di un certo comune. Un giorno il comune cambia il regolamento edilizio, e alcune cose che facevi liberamente ora richiedono un permesso, o non sono più concesse. La casa è già in piedi, ma le regole del gioco sono cambiate a lavori fatti. È più o meno quello che è successo nel 2023 a chi usa &lt;strong&gt;Terraform&lt;/strong&gt;, lo strumento più diffuso per descrivere l&apos;&lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;infrastruttura come codice&lt;/a&gt;, cioè per gestire server, reti e firewall scrivendoli in file di testo invece di configurarli a mano.&lt;/p&gt;
&lt;p&gt;L&apos;azienda che sviluppa Terraform, HashiCorp, ha cambiato la licenza del prodotto, rendendola più restrittiva. In risposta, parte della comunità che usava e contribuiva a Terraform ha creato una versione derivata e indipendente, chiamata &lt;strong&gt;OpenTofu&lt;/strong&gt;, oggi mantenuta come progetto open source neutrale. Per chi gestisce infrastruttura, o si affida a qualcuno che lo fa, capire questa vicenda serve a una cosa concreta: sapere su cosa si sta appoggiando il proprio lavoro, e quali alternative esistono.&lt;/p&gt;
&lt;h2&gt;Cosa è successo alla licenza di Terraform&lt;/h2&gt;
&lt;p&gt;Fino all&apos;agosto 2023 Terraform era distribuito con una licenza &lt;strong&gt;open source&lt;/strong&gt; vera e propria, la MPL 2.0: chiunque poteva usarlo, modificarlo e ridistribuirlo senza vincoli particolari. Poi HashiCorp è passata alla &lt;strong&gt;Business Source License&lt;/strong&gt; (BSL), una licenza che si definisce &lt;em&gt;source-available&lt;/em&gt;: il codice resta visibile e usabile da quasi tutti, ma con un limite. Non si può più usare Terraform per costruire un prodotto che compete con HashiCorp stessa.&lt;/p&gt;
&lt;p&gt;La differenza sembra tecnica, ma il punto pratico è semplice. Una licenza &lt;em&gt;open source&lt;/em&gt; riconosciuta garantisce che nessuno, in futuro, possa cambiare le regole e limitare l&apos;uso di ciò che hai adottato. Una licenza &lt;em&gt;source-available&lt;/em&gt; come la BSL toglie questa garanzia: il proprietario decide cosa è concesso e cosa no, e può rivederlo. Per la stragrande maggioranza di chi usa Terraform per gestire i propri server non cambia nulla nell&apos;immediato, ma per l&apos;ecosistema, cioè le aziende e i progetti costruiti attorno allo strumento, il segnale è stato pesante. Chi aveva investito anni su una tecnologia libera si è ritrovato con regole diverse decise da una sola azienda. Poco dopo, tra l&apos;altro, HashiCorp è stata acquisita da IBM, il che ha reso ancora più concreta la domanda: di chi ti fidi quando scegli lo strumento che regge la tua infrastruttura?&lt;/p&gt;
&lt;h2&gt;Cos&apos;è OpenTofu e chi lo governa&lt;/h2&gt;
&lt;p&gt;Nel giro di poche settimane dal cambio di licenza, un gruppo di aziende e sviluppatori ha annunciato un &lt;strong&gt;fork&lt;/strong&gt; di Terraform. Un fork è una copia del codice che prosegue per una strada propria, indipendente dall&apos;originale. Il progetto ha preso il nome di OpenTofu ed è stato affidato non a una singola azienda, ma alla &lt;strong&gt;Linux Foundation&lt;/strong&gt;, la stessa fondazione indipendente che ospita Linux e, più di recente, &lt;a href=&quot;/blog/mcp-linux-foundation&quot;&gt;lo standard MCP per collegare le AI agli strumenti esterni&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Questo passaggio è il cuore della vicenda. OpenTofu è tornato a una licenza open source riconosciuta (la stessa MPL 2.0 che Terraform aveva prima), e la sua &lt;strong&gt;governance&lt;/strong&gt;, cioè chi decide come evolve, non è più in mano a una sola azienda ma a una comunità sotto una fondazione neutrale. Il vantaggio non è ideologico: è una garanzia contrattuale che la storia del cambio di licenza non si ripeta. Nessuno può un domani rendere OpenTofu source-available a lavori fatti, perché non c&apos;è un unico proprietario che possa deciderlo. Per chi costruisce sopra uno strumento, sapere che le regole non cambieranno sotto i piedi vale quanto le funzionalità.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;La tua infrastruttura dipende da uno strumento di terze parti?&quot; text=&quot;Valutiamo insieme quanto sei legato a una singola tecnologia e quali alternative aperte riducono il rischio.&quot; button=&quot;Chiedi una valutazione →&quot;}&lt;/p&gt;
&lt;h2&gt;Terraform o OpenTofu: cosa cambia in pratica&lt;/h2&gt;
&lt;p&gt;La notizia migliore per chi usa Terraform è che OpenTofu è nato come sostituto &lt;strong&gt;compatibile&lt;/strong&gt;. Nei primi tempi si comportava come una copia fedele: gli stessi file di configurazione, lo stesso linguaggio HCL, gli stessi &lt;em&gt;provider&lt;/em&gt; (i componenti che traducono la descrizione nelle chiamate ai vari &lt;a href=&quot;/blog/come-scegliere-provider-cloud&quot;&gt;provider cloud&lt;/a&gt;). Il comando da riga di comando cambia solo nel nome: si scrive &lt;code&gt;tofu&lt;/code&gt; al posto di &lt;code&gt;terraform&lt;/code&gt;, e nella maggior parte dei casi tutto il resto resta identico.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Prima
terraform init
terraform plan
terraform apply

# Con OpenTofu, stessi file e stesso flusso
tofu init
tofu plan
tofu apply
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Col tempo i due progetti hanno iniziato a divergere, ognuno aggiungendo funzioni proprie. OpenTofu, per esempio, ha introdotto la &lt;strong&gt;cifratura dello stato&lt;/strong&gt;: il file di stato è il registro che lo strumento tiene di ciò che ha già creato, e spesso contiene informazioni sensibili, quindi poterlo cifrare è utile per la sicurezza. Terraform, dal canto suo, prosegue con la propria roadmap. Questo significa che la compatibilità perfetta vale soprattutto per chi migra da versioni non recentissime, mentre chi usa le ultime funzioni di uno dei due deve verificare caso per caso. Per un progetto tipico, però, la migrazione resta indolore: si punta OpenTofu ai file esistenti e allo stato attuale, si lancia un&apos;anteprima delle modifiche, e se non risultano cambiamenti indesiderati si continua a lavorare come prima.&lt;/p&gt;
&lt;p&gt;Quando conviene passare? Non c&apos;è un obbligo, e Terraform resta perfettamente funzionante. La scelta di OpenTofu ha senso soprattutto quando conta avere una tecnologia &lt;strong&gt;realmente open source&lt;/strong&gt; e a governance neutrale: per evitare il &lt;em&gt;lock-in&lt;/em&gt;, cioè la dipendenza da un fornitore che può cambiare le condizioni, per ragioni di policy aziendale, o semplicemente per stare su un progetto guidato dalla comunità. È la stessa logica di prudenza che vale per ogni pezzo di software di terzi da cui si dipende, dai &lt;a href=&quot;/blog/pacchetti-npm-compromessi-quarantena&quot;&gt;pacchetti che finiscono nelle applicazioni&lt;/a&gt; allo strumento che governa i server.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Nel 2023 Terraform è passato da una licenza open source a una più restrittiva, e la comunità ha risposto creando OpenTofu, un fork tornato open source e affidato alla Linux Foundation. La differenza pratica quotidiana per chi gestisce infrastruttura è minima, perché OpenTofu è nato compatibile e la migrazione è quasi sempre un cambio di comando. La differenza vera è di garanzie: con OpenTofu le regole d&apos;uso non dipendono da una singola azienda e non possono cambiare a lavori fatti. Terraform resta lo strumento più diffuso e una scelta valida, ma non è più l&apos;unico, e conoscere l&apos;alternativa è il primo passo per non restare legati a una tecnologia che non controlli.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi un&apos;infrastruttura che non dipenda da un solo fornitore?&quot; text=&quot;Progettiamo e gestiamo infrastruttura come codice con Terraform e OpenTofu, su AWS, Google Cloud e altri provider, con attenzione a lock-in e continuità nel tempo.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://opentofu.org/blog/opentofu-announces-fork-of-terraform/&quot;&gt;OpenTofu Announces Fork of Terraform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linuxfoundation.org/press/announcing-opentofu&quot;&gt;OpenTofu joins the Linux Foundation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license&quot;&gt;HashiCorp adopts Business Source License&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://opentofu.org/docs/intro/migration/&quot;&gt;OpenTofu - Migrating from Terraform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Cos&apos;è una pipeline CI/CD (e perché il deploy manuale costa più di quanto sembra)</title><link>https://initd.it/blog/cos-e-una-pipeline-ci-cd</link><guid isPermaLink="true">https://initd.it/blog/cos-e-una-pipeline-ci-cd</guid><description>Cos&apos;è una pipeline CI/CD spiegato semplice: integrazione continua, consegna continua, esempi di configurazione con GitHub Actions e GitLab CI, e cosa conviene metterci dentro.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In molte aziende il rilascio di un sito o di un&apos;applicazione è ancora un gesto manuale. Una persona apre il terminale, lancia una sequenza di comandi che ha imparato a memoria, aspetta, ricarica la pagina e incrocia le dita. Se il sito si vede, si passa ad altro. Se non si vede, comincia la caccia: cosa è cambiato, chi ha toccato cosa, com&apos;era prima.&lt;/p&gt;
&lt;p&gt;Il problema non è la competenza di chi lancia i comandi. Il problema è che un rilascio fatto a mano è una procedura non scritta: leggermente diversa ogni volta, impossibile da controllare prima, e legata a una persona sola. Quando quella persona è in ferie, ha fretta o cambia lavoro, il rilascio diventa un rischio.&lt;/p&gt;
&lt;p&gt;Una &lt;strong&gt;pipeline CI/CD&lt;/strong&gt; è la risposta a questo problema. È l&apos;idea di scrivere una volta per tutte cosa deve succedere quando il codice cambia, e lasciare che sia una macchina a eseguirlo, sempre allo stesso modo, verificando prima di pubblicare.&lt;/p&gt;
&lt;h2&gt;Integrazione continua: il codice viene controllato da qualcun altro&lt;/h2&gt;
&lt;p&gt;La prima metà della sigla è &lt;strong&gt;CI&lt;/strong&gt;, &lt;em&gt;continuous integration&lt;/em&gt;, integrazione continua. L&apos;idea è semplice: ogni volta che qualcuno salva il proprio lavoro nel repository condiviso, una macchina neutra scarica il progetto &lt;strong&gt;da zero&lt;/strong&gt;, installa tutto quello che serve e esegue i controlli.&lt;/p&gt;
&lt;p&gt;Quel &quot;da zero&quot; è la parte che conta. Sul computer di chi sviluppa il progetto funziona anche grazie a cose installate mesi prima e dimenticate: una libreria di sistema, una variabile d&apos;ambiente, un file di configurazione mai versionato. La macchina della CI non ha quella memoria. Se il progetto funziona lì, funziona davvero, e la frase più cara al settore, &quot;sul mio computer funziona&quot;, smette di essere un&apos;opinione.&lt;/p&gt;
&lt;p&gt;Il vantaggio pratico è il momento in cui scopri il problema. Un test che fallisce due minuti dopo il salvataggio costa cinque minuti di lavoro, perché hai ancora in testa cosa stavi facendo. Lo stesso problema scoperto in produzione tre settimane dopo costa una giornata, più la telefonata del cliente.&lt;/p&gt;
&lt;h2&gt;Consegna continua: dal codice verificato al sito online&lt;/h2&gt;
&lt;p&gt;La seconda metà è &lt;strong&gt;CD&lt;/strong&gt;, e vale la pena distinguere due significati che spesso si confondono.&lt;/p&gt;
&lt;p&gt;La &lt;em&gt;continuous delivery&lt;/em&gt;, consegna continua, significa che il codice verificato è &lt;strong&gt;sempre pronto&lt;/strong&gt; per andare in produzione, e la pubblicazione avviene quando qualcuno preme un pulsante. Il &lt;em&gt;continuous deployment&lt;/em&gt;, distribuzione continua, va oltre: se tutti i controlli passano, la pubblicazione avviene &lt;strong&gt;da sola&lt;/strong&gt;, senza intervento umano.&lt;/p&gt;
&lt;p&gt;Non sono livelli di bravura, sono scelte diverse: un e-commerce che rilascia venti volte al giorno guadagna dalla distribuzione automatica, uno studio che aggiorna il gestionale di un cliente una volta al mese vive benissimo con il pulsante. Quando si parte conviene il pulsante: si ottiene quasi tutto il valore, e si mantiene il controllo su &lt;em&gt;quando&lt;/em&gt; le cose cambiano.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il rilascio in produzione dipende da chi si ricorda i comandi?&quot; text=&quot;Mettiamo per iscritto la procedura, la facciamo eseguire a una macchina e aggiungiamo un controllo prima di ogni pubblicazione.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Com&apos;è fatta una pipeline, in concreto&lt;/h2&gt;
&lt;p&gt;Una pipeline è un file di testo, versionato insieme al codice, che descrive i passi da eseguire. Ecco la versione minima con &lt;strong&gt;GitHub Actions&lt;/strong&gt;, uno dei sistemi più diffusi:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: CI
on: push

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm ci
      - run: npm test
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Letto in italiano: a ogni salvataggio (&lt;code&gt;on: push&lt;/code&gt;), accendi una macchina Linux pulita, scarica il codice, installa Node nella versione 22, installa le dipendenze esattamente come sono scritte nel file di blocco (&lt;code&gt;npm ci&lt;/code&gt;, non &lt;code&gt;npm install&lt;/code&gt;) ed esegui i test. Se un comando fallisce, la pipeline diventa rossa e chi ha fatto la modifica riceve una notifica.&lt;/p&gt;
&lt;p&gt;Fissare la versione di Node non è pignoleria: è la stessa ragione per cui conviene &lt;a href=&quot;/blog/fissare-versione-node-con-pnpm&quot;&gt;dichiarare la versione del runtime nel progetto&lt;/a&gt;. Una pipeline che usa &quot;l&apos;ultima versione disponibile&quot; un giorno si rompe da sola, senza che nessuno abbia toccato niente.&lt;/p&gt;
&lt;p&gt;Da qui si cresce aggiungendo la pubblicazione, che avviene solo se i test sono passati e solo dal ramo principale:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  deploy:
    needs: test
    if: github.ref == &apos;refs/heads/main&apos;
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci &amp;amp;&amp;amp; npm run build
      - run: ./deploy.sh
        env:
          DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le due righe importanti sono &lt;code&gt;needs: test&lt;/code&gt;, che impedisce di pubblicare codice non verificato, e &lt;code&gt;if:&lt;/code&gt;, che limita la pubblicazione al ramo principale: il lavoro su un ramo secondario viene controllato ma non va online.&lt;/p&gt;
&lt;h2&gt;Lo stesso concetto, sistemi diversi&lt;/h2&gt;
&lt;p&gt;Il modo di scrivere cambia, l&apos;idea no. La stessa pipeline su &lt;strong&gt;GitLab CI&lt;/strong&gt; si scrive così:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;stages:
  - test
  - deploy

test:
  image: node:22
  script:
    - npm ci
    - npm test

deploy:
  stage: deploy
  only:
    - main
  when: manual
  script:
    - ./deploy.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Qui &lt;code&gt;when: manual&lt;/code&gt; è la consegna con pulsante di cui sopra: il lavoro viene preparato in automatico, la pubblicazione la decide una persona. Esistono anche Forgejo e Gitea, che ospitano il codice in casa con una sintassi quasi identica a quella di GitHub Actions, e sistemi storici come Jenkins che fanno la stessa cosa da vent&apos;anni. La scelta dello strumento conta molto meno della decisione di avere una procedura scritta.&lt;/p&gt;
&lt;p&gt;Un termine da conoscere: la macchina che esegue i passi si chiama &lt;em&gt;runner&lt;/em&gt;. Può essere fornita dal servizio, e paghi al minuto, oppure essere una tua macchina se il codice non deve uscire dalla rete aziendale. Nel secondo caso va installata, aggiornata e isolata, perché esegue codice a ogni modifica del progetto.&lt;/p&gt;
&lt;h2&gt;Cosa conviene metterci dentro&lt;/h2&gt;
&lt;p&gt;L&apos;ordine giusto dei passi va dal più veloce al più lento, così un errore banale non ti fa aspettare dieci minuti prima di saperlo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Controlli di forma&lt;/strong&gt;: formattazione e analisi statica, pochi secondi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test automatici&lt;/strong&gt;: il cuore della verifica.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compilazione&lt;/strong&gt;: se il progetto non si compila, è inutile andare oltre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controlli specifici del progetto&lt;/strong&gt;: qui sta la parte che quasi nessuno sfrutta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pubblicazione&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il punto 4 merita un esempio, perché è dove una pipeline smette di essere generica e diventa tua. Un controllo è semplicemente un comando che esce con codice zero se va tutto bene e con un codice diverso se qualcosa non va:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env bash
set -euo pipefail

if grep -rn &quot;console.log&quot; src/; then
  echo &quot;Trovate chiamate di debug dimenticate in src/&quot;
  exit 1
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Con la stessa logica si verificano cose che non sono codice: immagini troppo pesanti caricate per sbaglio, link interni che puntano a pagine inesistenti, file di traduzione disallineati tra due lingue, regole editoriali di un blog. Sono tutti errori che nessuno trova rileggendo, e che una macchina trova sempre.&lt;/p&gt;
&lt;h2&gt;I segreti, cioè la parte che si sbaglia più spesso&lt;/h2&gt;
&lt;p&gt;Per pubblicare servono credenziali: un token del provider, una chiave SSH, una password di database. Tre regole, in ordine di importanza.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mai nel repository.&lt;/strong&gt; Un token scritto in un file versionato resta nella cronologia anche dopo averlo cancellato: rimuoverlo dal file non lo rimuove dai salvataggi precedenti. Se succede, l&apos;unica risposta seria è cambiare quel token. È un tema abbastanza denso da meritare un articolo a parte, dove entriamo nel dettaglio di &lt;a href=&quot;/blog/secrets-nelle-pipeline&quot;&gt;dove mettere davvero i segreti di una pipeline&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nel sistema CI, con le protezioni attive.&lt;/strong&gt; Le due impostazioni da cercare sono il &lt;em&gt;mascheramento&lt;/em&gt;, che impedisce alla credenziale di comparire nei registri di esecuzione, e la limitazione ai rami protetti. Senza quelle, il token è leggibile da chiunque possa modificare il file della pipeline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Con il minimo dei privilegi.&lt;/strong&gt; Il token che pubblica il sito deve poter pubblicare il sito, non amministrare l&apos;intero account.&lt;/p&gt;
&lt;p&gt;C&apos;è un ultimo aspetto che si tende a ignorare: la pipeline installa dipendenze, e installare dipendenze significa &lt;strong&gt;eseguire codice scritto da altri&lt;/strong&gt; su una macchina che ha in mano le credenziali di produzione. È il motivo per cui vale la pena sapere &lt;a href=&quot;/blog/pacchetti-npm-compromessi-quarantena&quot;&gt;cosa succede quando un pacchetto viene compromesso&lt;/a&gt; e perché il runner andrebbe isolato dal resto dell&apos;infrastruttura.&lt;/p&gt;
&lt;h2&gt;Cosa costa, detto onestamente&lt;/h2&gt;
&lt;p&gt;Una pipeline non è gratis: va scritta, va mantenuta, e ogni tanto si rompe per conto suo perché scade un token o cambia una versione. Su progetti minuscoli, con un solo sviluppatore e un rilascio ogni sei mesi, può non valerne la pena.&lt;/p&gt;
&lt;p&gt;C&apos;è poi un rischio culturale, ed è il più serio: &lt;strong&gt;una pipeline rossa da settimane non è una pipeline, è un semaforo guasto&lt;/strong&gt;. Se il rosso diventa normale, le persone imparano a ignorarlo e i controlli non servono più a niente. Il verde deve essere lo stato ordinario: quando un controllo produce troppi falsi allarmi, o lo si sistema o lo si toglie, ma non lo si lascia lampeggiare.&lt;/p&gt;
&lt;p&gt;Infine, la pipeline verifica solo ciò che le hai chiesto di verificare. Non sostituisce il ripristino di un backup, che va comunque &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;provato davvero&lt;/a&gt;, né la possibilità di tornare indietro in fretta quando qualcosa passa lo stesso.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Una pipeline CI/CD trasforma il rilascio da procedura ricordata a memoria in un documento eseguibile: l&apos;integrazione continua verifica ogni modifica su una macchina pulita, la consegna continua porta in produzione ciò che ha superato i controlli, con o senza un pulsante di mezzo. Si scrive in un file di testo versionato insieme al codice e funziona allo stesso modo su GitHub Actions, GitLab CI o un sistema ospitato in casa. Come per &lt;a href=&quot;/blog/cos-e-infrastructure-as-code&quot;&gt;l&apos;infrastruttura descritta in file di testo&lt;/a&gt;, il guadagno vero non è la velocità: è smettere di affidare a una persona sola qualcosa che l&apos;azienda fa ogni settimana.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi che il tuo software vada online solo quando i controlli passano?&quot; text=&quot;Progettiamo e manteniamo pipeline su GitHub Actions, GitLab CI e runner ospitati in casa, per applicazioni su misura, siti e servizi in cloud. Ci occupiamo anche della gestione delle credenziali e della procedura per tornare indietro in fretta.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/actions&quot;&gt;GitHub Actions, documentazione ufficiale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.gitlab.com/ee/ci/&quot;&gt;GitLab CI/CD, documentazione ufficiale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://martinfowler.com/articles/continuousIntegration.html&quot;&gt;Continuous Integration, Martin Fowler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dora.dev/research/&quot;&gt;DORA, ricerca sulle metriche di consegna del software&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Proxmox VE 8 a fine vita: perché aggiornare ora e cosa cambia con la 9</title><link>https://initd.it/blog/proxmox-8-fine-vita-aggiornare</link><guid isPermaLink="true">https://initd.it/blog/proxmox-8-fine-vita-aggiornare</guid><description>Il 31 agosto 2026 Proxmox VE 8 esce dal supporto: niente più patch di sicurezza per kernel, QEMU e cluster. Cosa rischi restando fermo, cosa è incompatibile nella 9 e come si aggiorna senza fermi.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Se nella tua azienda c&apos;è un server che fa girare macchine virtuali, c&apos;è una buona probabilità che sopra ci sia &lt;strong&gt;Proxmox VE 8&lt;/strong&gt;: è uscito a giugno 2023 ed è stato per tre anni la versione che tutti installavano. Il 31 agosto 2026 esce dal supporto. Da quel giorno Proxmox non pubblica più correzioni per la versione 8, né per i bug né per le falle di sicurezza. L&apos;interfaccia web della 8 lo segnala già da tempo con un avviso nella barra in alto, con la data precisa.&lt;/p&gt;
&lt;p&gt;Non succede niente di visibile. I server restano accesi, le macchine virtuali continuano a funzionare, nessun contatore scade. È esattamente questo il problema: un &lt;strong&gt;hypervisor&lt;/strong&gt; (il software che fa girare le macchine virtuali su un server fisico) sta sotto a tutto il resto, e quando smette di ricevere patch il rischio si sposta in silenzio su ogni servizio che ospita.&lt;/p&gt;
&lt;p&gt;Qui sotto: cosa significa in pratica la fine del supporto, cosa si rischia restando sulla 8, cosa si rompe nel passaggio alla 9 e come si affronta l&apos;aggiornamento senza fermare l&apos;azienda. Tutte le informazioni vengono dalle fonti ufficiali Proxmox, linkate in fondo.&lt;/p&gt;
&lt;h2&gt;Fine del supporto: cosa significa per un hypervisor&lt;/h2&gt;
&lt;p&gt;La regola di Proxmox è pubblica: ogni versione di Proxmox VE è supportata &lt;strong&gt;almeno finché la versione di Debian su cui si appoggia è supportata dal team di sicurezza di Debian&lt;/strong&gt;, cioè circa tre anni dalla prima uscita. Proxmox VE 8 è costruito su Debian 12 &quot;Bookworm&quot;, il cui supporto di sicurezza ordinario si è chiuso a metà 2026, e la tabella ufficiale del ciclo di vita fissa la fine del supporto di Proxmox VE 8 ad agosto 2026. L&apos;ultimo aggiornamento del ramo 8, la versione 8.4.21, è del 14 agosto.&lt;/p&gt;
&lt;p&gt;Un dettaglio che genera confusione: Debian 12 passa ora al supporto &lt;strong&gt;LTS&lt;/strong&gt;, gestito da un gruppo separato di volontari e aziende, fino a metà 2028. Quel supporto riguarda i pacchetti Debian, non Proxmox. Il kernel, QEMU (il motore delle macchine virtuali), LXC (i container), ZFS e tutto lo strato di gestione del cluster sono pacchetti che mantiene Proxmox, e nella versione 8 non li mantiene più. Contare sulla LTS di Debian per un hypervisor a fine vita è un equivoco.&lt;/p&gt;
&lt;p&gt;È lo stesso meccanismo che abbiamo descritto per &lt;a href=&quot;/blog/php-fine-vita-cosa-rischi&quot;&gt;PHP a fine vita&lt;/a&gt;: il software non smette di funzionare, smette di essere difeso. Solo che qui la superficie esposta non è un sito, è il server intero.&lt;/p&gt;
&lt;h2&gt;Cosa rischia chi resta sulla 8&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Vulnerabilità senza rimedio.&lt;/strong&gt; Le falle si scoprono comunque, anche dopo la fine del supporto: si ferma solo la distribuzione delle correzioni. Anche nel 2026 il ramo 8.4 ha continuato a ricevere aggiornamenti con impatto sulla sicurezza: ad aprile l&apos;autenticazione delle console VNC e SPICE è stata irrobustita, ad agosto sono stati rafforzati i permessi richiesti per interrompere i backup e la protezione di alcuni campi dell&apos;interfaccia da contenuti non filtrati. Da settembre, correzioni di questo tipo per la 8 non arrivano più. E una falla nell&apos;hypervisor vale quanto una falla in ciascuna delle macchine che ospita.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;L&apos;ecosistema si sposta.&lt;/strong&gt; Proxmox Backup Server è già alla versione 4, la release più recente di Ceph (lo storage distribuito integrato) è disponibile solo dalla 9.2, i plugin di storage di terze parti vengono adattati alla 9. Il supporto all&apos;hardware nuovo arriva con i kernel recenti: Proxmox VE 9.2 monta il kernel 7.0, la 8 resta al 6.8 (6.14 come opzione). Chi compra un server oggi e lo installa con la 8 rischia di scoprire che schede di rete o controller non sono riconosciuti.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nessuna scorciatoia in futuro.&lt;/strong&gt; Proxmox documenta e supporta solo il passaggio da una versione maggiore alla successiva: dalla 7 si passa per la 8, dalla 8 si arriva alla 9, e il salto si allunga a ogni anno di attesa.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La conformità.&lt;/strong&gt; Per chi tratta dati personali il GDPR chiede misure &quot;adeguate allo stato dell&apos;arte&quot;: come abbiamo visto parlando di &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;GDPR lato infrastruttura&lt;/a&gt;, un componente abbandonato dal produttore è difficile da difendere come adeguato, e in caso di incidente la versione dell&apos;hypervisor finisce nel verbale.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Non sai quanti host Proxmox 8 hai in produzione, o se sono pronti per la 9?&quot; text=&quot;Facciamo noi il censimento: versione, storage, container vecchi, hardware, backup. Ti diciamo cosa si può aggiornare subito e cosa va preparato prima.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Cosa porta in più Proxmox VE 9&lt;/h2&gt;
&lt;p&gt;L&apos;aggiornamento non è solo togliersi un rischio. Proxmox VE 9 è uscito ad agosto 2025 su Debian 13 &quot;Trixie&quot; ed è già alla terza release (9.2, maggio 2026): una piattaforma rodata da un anno, non una novità da aspettare.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Snapshot anche sullo storage condiviso in LVM &quot;thick&quot;&lt;/strong&gt;, quello tipico delle SAN in iSCSI o Fibre Channel: prima non si potevano fare, ora sì, grazie alle catene di volumi (funzione in anteprima tecnologica, ma copre un caso molto comune nelle PMI con uno storage di rete). Se questi volumi ti suonano nuovi, abbiamo spiegato &lt;a href=&quot;/blog/cos-e-lvm-gestione-dischi-linux&quot;&gt;cos&apos;è LVM e come gestisce i dischi&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regole di affinità per l&apos;alta disponibilità&lt;/strong&gt;: si dichiara che certe VM devono stare su certi nodi, o che due VM non devono mai finire sullo stesso nodo. Con la 9.2 arriva anche il &lt;strong&gt;bilanciamento dinamico del carico&lt;/strong&gt;, che sposta da solo le VM dal nodo più carico a quello più scarico.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ZFS 2.3&lt;/strong&gt; (2.4 nella 9.2), che permette di aggiungere un disco a un RAID-Z esistente senza ricostruirlo da zero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fabric SDN&lt;/strong&gt; (OpenFabric e OSPF, dalla 9.2 anche WireGuard e BGP) per collegare i nodi con reti instradate invece che con cavi incrociati configurati a mano: utile per i cluster Ceph a maglia completa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Container da immagini OCI&lt;/strong&gt; (dalla 9.1): gli stessi formati usati per Docker diventano template per container LXC.&lt;/li&gt;
&lt;li&gt;Kernel, QEMU e LXC aggiornati (kernel 6.14 nella 9.0 e 7.0 nella 9.2, QEMU 10 e poi 11) e una nuova interfaccia per smartphone.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cosa si rompe: le incompatibilità verso il basso&lt;/h2&gt;
&lt;p&gt;È la parte che la guida ufficiale chiama &lt;em&gt;breaking changes&lt;/em&gt;, e va letta prima, non dopo. Tradotta in situazioni concrete:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container vecchi.&lt;/strong&gt; La 9 elimina il supporto a &lt;em&gt;cgroup v1&lt;/em&gt;, il vecchio sistema con cui il kernel assegna risorse ai container. Conseguenza: i container con un sistema operativo basato su systemd versione 230 o precedente (del 2016) &lt;strong&gt;non partono più&lt;/strong&gt;. Gli esempi citati da Proxmox sono CentOS 7 e Ubuntu 16.04. Se ne hai, il sistema operativo dentro il container va migrato prima di aggiornare l&apos;host, non dopo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;I nomi delle schede di rete possono cambiare&lt;/strong&gt; con il nuovo kernel, e se la configurazione punta al nome vecchio il server riparte senza rete. Proxmox fornisce uno strumento per fissare i nomi prima di aggiornare (&lt;code&gt;pve-network-interface-pinning&lt;/code&gt;) e raccomanda un accesso indipendente dalla rete (IPMI, iKVM o console fisica) per non dover correre in sala server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage.&lt;/strong&gt; GlusterFS non è più supportato: i dati vanno spostati altrove. I plugin di storage di terze parti funzionano solo se l&apos;autore li ha adattati alla 9. Sui volumi LVM condivisi va eseguito lo script ufficiale che disattiva l&apos;autoattivazione dei volumi, per evitare che più nodi attivino gli stessi dischi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardware datato.&lt;/strong&gt; Proxmox dichiara che l&apos;hardware con più di dieci anni non è testato a fondo con il nuovo kernel, cita CPU AMD Opteron e Turion del 2009-2010 su cui Ceph si ferma con un errore di istruzione illegale, e segnala che in alcuni casi il &lt;em&gt;passthrough&lt;/em&gt; di schede PCI (per esempio una GPU assegnata a una VM) non parte con il kernel 6.14. Per le schede NVIDIA vGPU serve almeno il driver GRID 18.3.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backup di terze parti.&lt;/strong&gt; Veeam non funziona con le VM che usano la versione macchina QEMU 10 o successiva; il rimedio è fissare la versione macchina alla 9.2 finché Veeam non si adegua. Chi ha Proxmox Backup Server installato sulla stessa macchina deve aggiornare anche quello, alla versione 4, seguendo la guida dedicata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dettagli di sistema che non perdonano.&lt;/strong&gt; Il file &lt;code&gt;/etc/sysctl.conf&lt;/code&gt; non viene più letto (le impostazioni vanno in &lt;code&gt;/etc/sysctl.d/&lt;/code&gt;), &lt;code&gt;/tmp&lt;/code&gt; diventa una cartella in memoria ripulita periodicamente, alcuni permessi cambiano (il privilegio &lt;code&gt;VM.Monitor&lt;/code&gt; sparisce, nasce &lt;code&gt;VM.Replicate&lt;/code&gt;, creare container privilegiati richiede &lt;code&gt;Sys.Modify&lt;/code&gt;), l&apos;opzione &lt;code&gt;maxfiles&lt;/code&gt; dei backup viene rimossa, le schede di rete VirtIO senza MTU esplicita ereditano quello del bridge invece di 1500. Niente di drammatico, ma tutto da sapere prima.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il punto non è spaventare: ognuna di queste voci o non ti riguarda o si risolve prima di partire, e la differenza la fa averle controllate.&lt;/p&gt;
&lt;h2&gt;Come si aggiorna senza fermare l&apos;azienda&lt;/h2&gt;
&lt;p&gt;Proxmox fornisce una guida ufficiale passo passo e uno strumento, &lt;code&gt;pve8to9&lt;/code&gt;, che controlla l&apos;host e segnala in anticipo tutto ciò che è elencato sopra. Il metodo che seguiamo noi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inventario.&lt;/strong&gt; Quanti host, che versione (serve almeno la 8.4.1), che storage, che Ceph (deve essere già Squid 19.2), quali container e con quale sistema operativo, che hardware e di che anno.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checklist &lt;code&gt;pve8to9 --full&lt;/code&gt;&lt;/strong&gt; su ogni nodo, risolvendo ogni avviso prima di procedere. Lo strumento controlla e basta, non corregge nulla da solo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rete di sicurezza.&lt;/strong&gt; Backup verificati di tutte le VM e i container secondo la &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;regola del 3-2-1&lt;/a&gt;, copia della configurazione di &lt;code&gt;/etc&lt;/code&gt;, accesso fuori banda al server e almeno 5 GB liberi sulla partizione di sistema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un nodo alla volta.&lt;/strong&gt; In un cluster si spostano le VM sugli altri nodi con la migrazione a caldo, si aggiorna il nodo vuoto, si riavvia, si verifica, si passa al successivo: i servizi non si fermano mai. Su un host singolo serve una finestra di manutenzione: il solo &lt;code&gt;apt dist-upgrade&lt;/code&gt; va da meno di cinque minuti su SSD a oltre un&apos;ora su dischi meccanici, più il riavvio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifica finale.&lt;/strong&gt; Riavvio nel nuovo kernel, controllo di rete e storage, migrazione automatica dei gruppi HA in regole, pulizia della cache del browser per la nuova interfaccia, passaggio dei repository al nuovo formato.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Per un&apos;installazione pulita (per esempio su hardware nuovo) c&apos;è anche la reinstallazione da ISO con ripristino delle VM dai backup: spesso è la strada più rapida quando si cambia server insieme alla versione.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Proxmox VE 8 non si spegne il 31 agosto 2026, ma da quel giorno ogni falla nuova resta aperta sul server che regge tutte le tue macchine virtuali, e la LTS di Debian non copre i componenti Proxmox. La versione 9 è matura da un anno, porta snapshot sullo storage condiviso, alta disponibilità più intelligente e supporto all&apos;hardware recente, e l&apos;aggiornamento è un percorso documentato: la parte delicata sono le incompatibilità (container vecchi, nomi di rete, storage, hardware datato, backup di terze parti), che si trovano tutte prima di partire con un inventario e la checklist ufficiale.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Hai host Proxmox 8 in produzione e vuoi passare alla 9 senza sorprese?&quot; text=&quot;Pianifichiamo e facciamo noi l&apos;aggiornamento: censimento degli host, checklist pve8to9, backup verificato, migrazione delle VM a caldo nei cluster, finestra concordata sugli host singoli e rientro garantito. Gestiamo server Linux e Proxmox per PMI e agenzie.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pve.proxmox.com/wiki/FAQ#faq-support-table&quot;&gt;FAQ Proxmox VE, tabella del ciclo di vita delle versioni&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pve.proxmox.com/wiki/Upgrade_from_8_to_9&quot;&gt;Upgrade from 8 to 9, guida ufficiale con prerequisiti e problemi noti&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pve.proxmox.com/wiki/Roadmap&quot;&gt;Roadmap Proxmox VE, note di rilascio 9.0, 9.1 e 9.2 con le breaking changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.debian.org/LTS&quot;&gt;Debian LTS, calendario e perimetro del supporto a lungo termine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://git.proxmox.com/?p=pve-manager.git;a=blob_plain;f=debian/changelog;hb=refs/heads/stable-8&quot;&gt;Changelog di pve-manager, ramo stable-8 (ultime release 8.4.x)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Secrets nelle pipeline: come non finire con le chiavi su GitHub</title><link>https://initd.it/blog/secrets-nelle-pipeline</link><guid isPermaLink="true">https://initd.it/blog/secrets-nelle-pipeline</guid><description>Dove mettere token e password che servono a una pipeline CI/CD: perché un segreto nel repository non si cancella, mascheramento e rami protetti, identità temporanee con OIDC.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Una pipeline che pubblica in produzione ha bisogno di credenziali: un token del provider cloud, una chiave SSH, la password di un database. Sono le chiavi di casa, consegnate a una macchina che lavora da sola a ogni modifica del codice.&lt;/p&gt;
&lt;p&gt;Il modo in cui quelle chiavi vengono conservate è il punto più delicato di tutta l&apos;automazione, e anche quello che si sbaglia più spesso. Non per ignoranza: si sbaglia di fretta, il venerdì, quando il rilascio deve partire e la strada breve funziona subito. Un token incollato dentro un file di configurazione fa esattamente il suo lavoro, e nessuno se ne accorge finché non è troppo tardi.&lt;/p&gt;
&lt;p&gt;Vediamo dove vanno messe davvero, cosa fare quando ne è già uscita una, e qual è oggi la soluzione migliore: smettere del tutto di avere chiavi da conservare.&lt;/p&gt;
&lt;h2&gt;Un segreto nel repository non si cancella&lt;/h2&gt;
&lt;p&gt;La prima regola è che una credenziale non va mai scritta in un file versionato. Il motivo non è ovvio: il problema non è il file, è la &lt;strong&gt;cronologia&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Git conserva ogni versione precedente di ogni file. Se scrivi un token in un file e domani lo cancelli, il file di oggi è pulito, ma il salvataggio di ieri contiene ancora la credenziale, e resta consultabile da chiunque abbia accesso al repository, per sempre. Chi arriva sei mesi dopo non deve nemmeno cercare: basta scorrere le modifiche.&lt;/p&gt;
&lt;p&gt;Da qui discende una conseguenza che sorprende sempre: &lt;strong&gt;cancellare il segreto non risolve niente&lt;/strong&gt;. Se una credenziale è finita in un repository, quella credenziale va considerata compromessa e va &lt;strong&gt;sostituita&lt;/strong&gt;, cioè revocata sul servizio che l&apos;ha emessa e rigenerata. Riscrivere la cronologia è possibile, con strumenti pensati apposta, ma è un&apos;operazione invasiva che rompe le copie di tutti e non ti dà comunque nessuna garanzia su chi ha già letto.&lt;/p&gt;
&lt;p&gt;Se il repository è pubblico, il tempo a disposizione è ancora minore: esistono programmi che sorvegliano le pubblicazioni su GitHub in tempo reale cercando credenziali, e i minuti tra la pubblicazione e l&apos;uso sono davvero pochi. GitHub stesso analizza il codice pubblico alla ricerca di chiavi note e avvisa il fornitore che le ha emesse, che spesso le revoca d&apos;ufficio. È una rete di sicurezza, non una soluzione.&lt;/p&gt;
&lt;h2&gt;Il posto giusto: il magazzino del sistema CI&lt;/h2&gt;
&lt;p&gt;Ogni sistema di &lt;a href=&quot;/blog/cos-e-una-pipeline-ci-cd&quot;&gt;pipeline CI/CD&lt;/a&gt; ha un posto dove conservare le credenziali fuori dal codice: si chiamano &lt;em&gt;secrets&lt;/em&gt; su GitHub Actions, &lt;em&gt;variabili CI/CD&lt;/em&gt; su GitLab. Il valore si inserisce una volta dall&apos;interfaccia, e nella pipeline si usa solo il nome:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- run: ./deploy.sh
  env:
    DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Chi legge il file vede &lt;code&gt;DEPLOY_TOKEN&lt;/code&gt;, non il suo valore. Ma metterli lì non basta: contano due impostazioni che quasi nessuno cerca.&lt;/p&gt;
&lt;p&gt;Il &lt;strong&gt;mascheramento&lt;/strong&gt; impedisce che il valore compaia nei registri di esecuzione. Senza, basta un comando che stampa l&apos;ambiente, o un errore un po&apos; loquace di un programma, perché la credenziale finisca in chiaro in un registro che di solito è leggibile da molte più persone di quante possano vedere le impostazioni.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;limitazione ai rami protetti&lt;/strong&gt; decide quali esecuzioni ricevono il segreto. È la protezione più importante e la meno usata: senza, chiunque possa creare un ramo nel progetto può scrivere una pipeline di tre righe che stampa il token e leggerselo con calma. Se il segreto è riservato al ramo principale, e il ramo principale accetta modifiche solo dopo revisione, quella strada si chiude.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Sai dire quali credenziali stanno oggi nei tuoi repository?&quot; text=&quot;Facciamo una ricognizione su repository e pipeline: cosa è esposto, cosa va sostituito subito, cosa va spostato altrove.&quot; button=&quot;Chiedi una ricognizione →&quot;}&lt;/p&gt;
&lt;h2&gt;Il salto di qualità: nessuna chiave da conservare&lt;/h2&gt;
&lt;p&gt;La protezione migliore per una chiave è non averla. Da qualche anno i sistemi CI più diffusi permettono di autenticarsi al provider senza credenziali permanenti, con un meccanismo che si chiama &lt;strong&gt;OIDC&lt;/strong&gt; (&lt;em&gt;OpenID Connect&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Funziona così. Al momento dell&apos;esecuzione, il sistema CI genera un documento firmato che attesta chi sta chiedendo: questo repository, questo ramo, questa esecuzione. La pipeline lo presenta al provider cloud, che lo verifica e, se corrisponde a una regola configurata in precedenza, restituisce credenziali &lt;strong&gt;temporanee&lt;/strong&gt;, valide per pochi minuti.&lt;/p&gt;
&lt;p&gt;Su GitHub Actions sono due blocchi:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;permissions:
  id-token: write     # la pipeline può chiedere il documento di identità
  contents: read

steps:
  - uses: aws-actions/configure-aws-credentials@v4
    with:
      role-to-assume: arn:aws:iam::123456789012:role/deploy-sito
      aws-region: eu-south-1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Non c&apos;è nessuna chiave da nessuna parte. Il ruolo &lt;code&gt;deploy-sito&lt;/code&gt;, lato provider, è configurato per fidarsi solo di quel repository e solo di quel ramo: un altro progetto che provasse la stessa richiesta verrebbe rifiutato.&lt;/p&gt;
&lt;p&gt;Il guadagno è grosso. Non c&apos;è niente da rubare, perché le credenziali durano quanto l&apos;esecuzione. Non c&apos;è niente da ruotare ogni sei mesi, e quindi niente che scada di venerdì pomeriggio. E la fiducia è legata a un&apos;identità verificabile invece che al possesso di una stringa, che è la stessa differenza che passa tra un documento e una chiave trovata per terra. Vale la pena adottarlo appena il provider lo supporta, e oggi lo supportano i principali.&lt;/p&gt;
&lt;h2&gt;Privilegi minimi, che vale anche per le identità&lt;/h2&gt;
&lt;p&gt;Chiave o identità temporanea che sia, resta la domanda: quanto può fare quella credenziale? La risposta corretta è: &lt;strong&gt;il minimo indispensabile&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Un token che pubblica un sito deve poter pubblicare quel sito. Non amministrare l&apos;account, non leggere le altre applicazioni, non toccare i DNS. È una differenza che si sente solo il giorno dell&apos;incidente, ed è quel giorno che decide se il danno è &quot;hanno ripubblicato il sito&quot; oppure &quot;hanno in mano tutto&quot;.&lt;/p&gt;
&lt;p&gt;Lo stesso ragionamento vale dentro la pipeline. Su GitHub Actions il blocco &lt;code&gt;permissions&lt;/code&gt; limita cosa può fare l&apos;esecuzione sul repository stesso: dichiararlo esplicitamente, invece di lasciare i valori predefiniti, evita che uno script eseguito nella pipeline possa scrivere dove non deve. Il principio è lo stesso che si applica a &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;un accesso amministrativo ai server&lt;/a&gt; o &lt;a href=&quot;/blog/oauth-best-practice-sicurezza&quot;&gt;a un&apos;autorizzazione OAuth&lt;/a&gt;: un permesso concesso &quot;per comodità&quot; è un permesso che prima o poi verrà usato da qualcun altro.&lt;/p&gt;
&lt;h2&gt;Le tre trappole che vediamo più spesso&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Le proposte di modifica da estranei.&lt;/strong&gt; Se il progetto accetta contributi esterni, una pipeline che parte in risposta a una proposta di modifica esegue codice scritto da chi l&apos;ha inviata. Su GitHub esiste un tipo di innesco, &lt;code&gt;pull_request_target&lt;/code&gt;, che gira con i permessi del repository di destinazione: usarlo insieme al prelievo del codice proposto significa consegnare i propri segreti a uno sconosciuto. È una delle configurazioni sbagliate più sfruttate in assoluto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le dipendenze.&lt;/strong&gt; La pipeline installa librerie, e installarle vuol dire eseguire codice altrui su una macchina che ha in mano le credenziali di produzione. Un pacchetto compromesso, come in &lt;a href=&quot;/blog/pacchetti-npm-compromessi-quarantena&quot;&gt;tutti gli episodi visti su npm&lt;/a&gt;, legge le variabili d&apos;ambiente e le spedisce fuori. Difese pratiche: bloccare gli script di installazione, congelare le versioni, e non passare i segreti agli stadi che non devono pubblicare. Chi esegue i test non ha bisogno del token di produzione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I registri.&lt;/strong&gt; Un comando lanciato con la variabile in linea, un &lt;code&gt;curl -v&lt;/code&gt; che stampa le intestazioni, un errore che riporta l&apos;URL completo con il token dentro: i registri di esecuzione sono spesso il punto da cui il segreto esce, e sono anche il posto dove nessuno pensa di guardare.&lt;/p&gt;
&lt;h2&gt;Se un segreto è già uscito&lt;/h2&gt;
&lt;p&gt;Nell&apos;ordine, senza saltare passaggi. &lt;strong&gt;Revocare subito&lt;/strong&gt; la credenziale sul servizio che l&apos;ha emessa: è l&apos;unica azione che ferma davvero l&apos;emorragia, e va fatta prima di ogni altra cosa. &lt;strong&gt;Rigenerarne una nuova&lt;/strong&gt;, con i permessi minimi che servono davvero, e metterla nel magazzino del sistema CI. &lt;strong&gt;Controllare cosa è stato fatto&lt;/strong&gt; con quella vecchia, guardando i registri di accesso del provider nelle ore precedenti. Solo alla fine, se ha senso, ripulire il file.&lt;/p&gt;
&lt;p&gt;E una volta sistemato, vale la pena aggiungere una rete: esistono programmi che analizzano il codice cercando credenziali e che si possono far girare automaticamente prima di ogni salvataggio, così la prossima chiave incollata di fretta viene fermata sul posto invece che scoperta sei mesi dopo.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;I segreti di una pipeline non vanno nel repository, perché la cronologia di Git non dimentica e una credenziale finita lì va considerata bruciata: si revoca e si rigenera, non si cancella. Vanno nel magazzino del sistema CI, con il mascheramento nei registri e la limitazione ai rami protetti, che è quella che impedisce a un ramo qualsiasi di leggerseli. Meglio ancora, non vanno conservati affatto: con OIDC la pipeline dimostra chi è e riceve credenziali che durano minuti, quindi non c&apos;è niente da rubare e niente da ruotare. Su tutto vale il principio dei privilegi minimi, che è ciò che decide se un incidente sarà una seccatura o un disastro.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi che a pubblicare in produzione sia un&apos;identità temporanea, non una chiave eterna?&quot; text=&quot;Rivediamo le pipeline che avete già: spostiamo le credenziali fuori dal codice, riduciamo i permessi al minimo e, dove il provider lo consente, passiamo a OIDC senza chiavi da conservare.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions&quot;&gt;Security hardening for GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect&quot;&gt;OpenID Connect in GitHub Actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.gitlab.com/ee/ci/variables/#cicd-variable-security&quot;&gt;GitLab, sicurezza delle variabili CI/CD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://owasp.org/www-project-top-10-ci-cd-security-risks/&quot;&gt;OWASP Top 10 CI/CD Security Risks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>MikroTik RouterOS sotto attacco: le falle SSH sfruttate e cosa fare subito</title><link>https://initd.it/blog/vulnerabilita-mikrotik-routeros-ssh</link><guid isPermaLink="true">https://initd.it/blog/vulnerabilita-mikrotik-routeros-ssh</guid><description>Due falle in RouterOS, sfruttate dal 2 settembre 2026, permettono di prendere il controllo di un router MikroTik con SSH esposto senza credenziali. Chi rischia, come verificare, come aggiornare.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Il 3 settembre 2026 MikroTik ha pubblicato un aggiornamento di sicurezza per &lt;strong&gt;RouterOS&lt;/strong&gt;, il sistema operativo dei suoi router, definendolo &quot;importante&quot; e senza spiegare cosa correggesse. Due giorni dopo CERT Polska, il centro di risposta agli incidenti informatici polacco che aveva scoperto e segnalato i problemi, ha rotto il silenzio: sei vulnerabilità, due delle quali combinate permettono a chiunque di &lt;strong&gt;prendere il controllo completo del router senza conoscere alcuna password&lt;/strong&gt;, a patto che il servizio SSH sia raggiungibile da internet. La catena di attacco ha un nome, &lt;strong&gt;MikroTrick&lt;/strong&gt;, ed è già in uso: le intrusioni ricostruite risalgono almeno al 2 settembre, il giorno prima delle patch.&lt;/p&gt;
&lt;p&gt;I router MikroTik sono ovunque dove serve un apparato di rete solido a un prezzo contenuto: uffici, studi professionali, piccoli provider, sedi collegate in VPN, rack di &lt;em&gt;colocation&lt;/em&gt;. Spesso li ha installati un tecnico anni fa, funzionano, e nessuno li ha più aperti. È esattamente il profilo del dispositivo che questa vicenda mette a rischio.&lt;/p&gt;
&lt;p&gt;Qui sotto: cosa è stato scoperto, chi è esposto davvero e chi no, come capire se un router è già stato violato, come si aggiorna e cosa cambiare in configurazione perché non capiti di nuovo. Le informazioni vengono dal bollettino MikroTik, dall&apos;avviso di CERT Polska e dalla documentazione ufficiale, linkati in fondo.&lt;/p&gt;
&lt;h2&gt;Cosa è stato scoperto: sei falle, due bastano per entrare senza password&lt;/h2&gt;
&lt;p&gt;Le due vulnerabilità che formano la catena MikroTrick riguardano entrambe il server &lt;strong&gt;SSH&lt;/strong&gt; di RouterOS, il servizio che permette di amministrare il router da riga di comando a distanza. Sono classificate con gravità &lt;strong&gt;9,2 su 10&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CVE-2026-67276&lt;/strong&gt;: quando un utente si autentica con una chiave crittografica invece che con una password, RouterOS non verificava la chiave per intero, ma solo una sua parte. Chi conosce la parte pubblica della chiave di un utente autorizzato può costruirne una diversa che il router accetta lo stesso, ed entrare come quell&apos;utente senza possederne la chiave privata. È come una serratura che controlla la forma della chiave ma non i denti.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CVE-2026-86060&lt;/strong&gt;: la procedura di accesso via SSH gestiva male i nomi utente che iniziano con un carattere non ammesso. Con un nome costruito ad arte, una sessione che dovrebbe avere permessi limitati ottiene i &lt;strong&gt;privilegi di amministratore completo&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prese una alla volta hanno dei prerequisiti. Combinate, secondo CERT Polska, consentono &quot;il controllo completo del dispositivo senza autenticazione&quot;. Le altre quattro falle sono meno gravi ma non trascurabili: una nel servizio &lt;em&gt;bandwidth-test&lt;/em&gt; (lo strumento di misura della banda, porta 2000) permette senza autenticazione di leggere frammenti di memoria del sistema o di far riavviare il router; una nell&apos;interfaccia web WebFig permette di leggere file riservati, compresi archivi di configurazione con credenziali; le ultime due toccano il client SSH integrato e la gestione dei certificati X.509.&lt;/p&gt;
&lt;p&gt;Un dettaglio che spiega la corsa contro il tempo: MikroTik ha rilasciato la correzione senza dettagli, ma le patch di RouterOS sono pubbliche e confrontabili. Il 4 settembre era già online un&apos;analisi indipendente che, mettendo a confronto la versione 7.23.3 con la 7.23.4, aveva ricostruito il meccanismo delle falle. A quel punto tacere non serviva più a nessuno, e CERT Polska ha pubblicato l&apos;avviso il 5.&lt;/p&gt;
&lt;h2&gt;Chi è a rischio davvero (e chi no)&lt;/h2&gt;
&lt;p&gt;MikroTik scrive che &quot;la maggior parte delle configurazioni non è a rischio&quot;. È vero, con una precisazione importante. La configurazione predefinita di un router MikroTik blocca l&apos;accesso ai servizi di gestione dalla porta WAN, quindi un apparato installato con le impostazioni di fabbrica non espone SSH a internet e non è attaccabile da fuori.&lt;/p&gt;
&lt;p&gt;Il problema sono tutti gli altri: i router configurati da zero da un tecnico, quelli in cui le regole del firewall sono state rimosse &quot;per far funzionare una cosa&quot;, quelli in cui SSH è stato aperto per comodità di gestione remota, quelli dei provider e dei datacenter. La Shadowserver Foundation, una fondazione che scandaglia internet per conto dei CERT nazionali, il 5 settembre contava circa &lt;strong&gt;122.500 router MikroTik con SSH raggiungibile&lt;/strong&gt; da chiunque. Ognuno di quelli, se non aggiornato, si prende con uno script.&lt;/p&gt;
&lt;p&gt;Le versioni coinvolte sono tante. Alla domanda di un utente sul forum ufficiale se anche le 7.20 e 7.21 fossero vulnerabili, lo staff MikroTik ha risposto che sono coinvolte &quot;molte annate di versioni&quot;: la correzione esiste solo dalle release del 3 settembre. Non conta quanto è recente il router, conta quanto è recente il sistema operativo.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Non sai se il router MikroTik del tuo ufficio o del tuo rack ha SSH aperto su internet?&quot; text=&quot;Lo verifichiamo da fuori e da dentro: versione di RouterOS, servizi esposti, tracce di accessi anomali. Ti diciamo se è pulito e cosa chiudere.&quot; button=&quot;Chiedi una verifica →&quot;}&lt;/p&gt;
&lt;h2&gt;Come capire se il router è già stato violato&lt;/h2&gt;
&lt;p&gt;Prima di aggiornare vale la pena guardare, perché l&apos;aggiornamento chiude la porta ma non caccia chi è già entrato. CERT Polska descrive cosa lasciano dietro di sé gli attacchi osservati:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nel registro eventi compaiono righe come &lt;code&gt;login failure for user -2 from &amp;lt;ip&amp;gt; via ssh&lt;/code&gt; e subito dopo &lt;code&gt;user &amp;lt;nome&amp;gt; added by ssh:-2@&amp;lt;ip&amp;gt;&lt;/code&gt;: quel &lt;code&gt;-2&lt;/code&gt; al posto del nome utente è la firma della falla sfruttata;&lt;/li&gt;
&lt;li&gt;viene creato un &lt;strong&gt;utente amministratore sconosciuto&lt;/strong&gt;, nei casi osservati chiamato &lt;code&gt;ops&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;compaiono script, attività pianificate, proxy o tunnel che nessuno ha configurato.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dalla console del router i controlli sono questi:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/log/print where message~&quot;-2&quot;
/system/history/print
/user/print
/system/script/print
/system/scheduler/print
/ip/proxy/print
/ip/socks/print
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se il registro è già stato sovrascritto, e su un router lo è in fretta, l&apos;assenza di righe sospette non prova nulla: contano gli utenti, gli script e le regole che non riconosci.&lt;/p&gt;
&lt;p&gt;MikroTik ha aggiunto una rete di sicurezza in più. Le versioni corrette, al primo avvio, esaminano la configurazione alla ricerca di tracce note di compromissione: se le trovano, disattivano le voci sospette, scrivono un messaggio critico nel registro e impostano il router in stato &lt;strong&gt;Flagged&lt;/strong&gt;. Si controlla con &lt;code&gt;/system/device-mode/print&lt;/code&gt;. In quello stato il router continua a funzionare, ma non permette di creare nuove attività pianificate, proxy, tunnel VPN o condivisioni finché non si interviene di persona: per togliere il marcatore serve un comando confermato premendo il tasto fisico di reset o spegnendo l&apos;apparato. La documentazione è chiara su due punti: lo stato Flagged non cancella la configurazione, che va comunque ispezionata riga per riga, e il meccanismo riconosce solo tracce note, quindi un router non marcato non è per forza pulito.&lt;/p&gt;
&lt;h2&gt;Cosa fare adesso: aggiornare, poi verificare&lt;/h2&gt;
&lt;p&gt;Le versioni corrette sono &lt;strong&gt;7.24.2&lt;/strong&gt; (canale &lt;em&gt;stable&lt;/em&gt;), &lt;strong&gt;7.23.4&lt;/strong&gt; (&lt;em&gt;long-term&lt;/em&gt;), &lt;strong&gt;6.49.21&lt;/strong&gt; per chi è ancora sulla vecchia serie 6 e la 7.25beta3 per chi usa il canale di sviluppo. Dalla console:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/system/package/update/check-for-updates
/system/package/update/install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Il router si riavvia da solo al termine: su un apparato in produzione serve una finestra di pochi minuti. Prima dell&apos;aggiornamento conviene esportare la configurazione con &lt;code&gt;/export file=prima-aggiornamento&lt;/code&gt; e scaricare il file, per la stessa ragione per cui si fanno &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;i backup prima di ogni intervento&lt;/a&gt;: se qualcosa va storto, si torna indietro.&lt;/p&gt;
&lt;p&gt;Dopo l&apos;aggiornamento, non prima:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;controllare &lt;code&gt;/system/device-mode/print&lt;/code&gt; e il registro eventi per il messaggio Flagged;&lt;/li&gt;
&lt;li&gt;ripetere i controlli della sezione precedente su utenti, script, attività pianificate, proxy e tunnel;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cambiare tutte le password&lt;/strong&gt; del router e rigenerare le chiavi SSH degli utenti, perché un attaccante che ha avuto accesso amministrativo può aver letto la configurazione completa, credenziali comprese;&lt;/li&gt;
&lt;li&gt;se il router faceva da concentratore VPN, considerare compromesse anche le chiavi dei tunnel e rigenerarle.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Se un router mostra segni di compromissione e non si è in grado di ricostruire cosa è stato toccato, la strada più sicura è un ripristino alle impostazioni di fabbrica con la versione corretta e una riconfigurazione da un export verificato di prima dell&apos;incidente.&lt;/p&gt;
&lt;p&gt;Chi non può aggiornare subito ha una sola alternativa temporanea, indicata sia da MikroTik sia da CERT Polska: rendere irraggiungibili dall&apos;esterno SSH, l&apos;interfaccia web (WWW e WWW-SSL) e il servizio bandwidth-test. Riduce la superficie, non risolve.&lt;/p&gt;
&lt;h2&gt;Non basta aggiornare: l&apos;accesso di gestione non va esposto&lt;/h2&gt;
&lt;p&gt;La lezione più utile di questa storia non riguarda MikroTik. Le interfacce di amministrazione di un router (SSH, WebFig, Winbox, l&apos;API) non dovrebbero mai essere raggiungibili da internet, a prescindere dalle falle del momento. È lo stesso principio per cui &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;la porta SSH dei server non si espone&lt;/a&gt; e per cui i tentativi automatici di indovinare le password, &lt;a href=&quot;/blog/attacchi-brute-force-fail2ban&quot;&gt;migliaia al giorno su qualunque cosa risponda&lt;/a&gt;, colpiscono anche i router: già a luglio la CISA, l&apos;agenzia statunitense per la sicurezza informatica, aveva pubblicato due avvisi sull&apos;API di RouterOS, uno dei quali segnala che non limita i tentativi di accesso falliti.&lt;/p&gt;
&lt;p&gt;Nella pratica, la configurazione che consigliamo e applichiamo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/ip/firewall/address-list/add list=gestione address=192.168.10.0/24
/ip/firewall/filter/add chain=input protocol=tcp dst-port=22,80,443,2000,8291,8728,8729 src-address-list=!gestione action=drop place-before=0
/ip/service/disable telnet,ftp,www,api,api-ssl
/tool/bandwidth-server/set enabled=no
/ip/ssh/set strong-crypto=yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La prima regola scarta qualunque connessione ai servizi di gestione che non provenga dalla rete interna di amministrazione. Le altre spengono ciò che non serve. Lo staff MikroTik, sempre sul forum, ha precisato che limitare l&apos;indirizzo sorgente nel servizio (&lt;code&gt;/ip/service/set ssh address=...&lt;/code&gt;) è meno efficace di una regola firewall, perché il firewall scarta il pacchetto prima che il servizio lo riceva.&lt;/p&gt;
&lt;p&gt;Per gestire il router da remoto la risposta giusta è &lt;a href=&quot;/blog/cos-e-una-vpn-wireguard&quot;&gt;una VPN come WireGuard&lt;/a&gt;, che RouterOS integra da anni: si entra nel tunnel con una chiave, e solo da dentro il tunnel si raggiunge SSH. È anche la raccomandazione esplicita del bollettino MikroTik. Il resto è disciplina: un inventario degli apparati con versione e data dell&apos;ultimo aggiornamento, e una regola per cui gli aggiornamenti di sicurezza di un router si applicano entro pochi giorni, come per &lt;a href=&quot;/blog/proxmox-8-fine-vita-aggiornare&quot;&gt;qualsiasi altro software che regge la produzione&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Sei falle in RouterOS, due delle quali insieme permettono di prendere un router MikroTik con SSH esposto senza alcuna credenziale, sono sfruttate in rete dal 2 settembre 2026. Le versioni 7.24.2, 7.23.4 e 6.49.21 le correggono e aggiungono un controllo automatico che marca come Flagged i router con tracce note di compromissione. La configurazione di fabbrica non è esposta, ma decine di migliaia di router configurati a mano lo sono. Si verifica il registro e gli utenti, si aggiorna, si cambiano le password, e si chiude per sempre l&apos;accesso di gestione da internet, spostandolo dentro una VPN.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Hai router MikroTik in ufficio, in un rack o presso i clienti e vuoi metterli in sicurezza una volta per tutte?&quot; text=&quot;Facciamo l&apos;inventario, aggiorniamo in una finestra concordata, verifichiamo le tracce di compromissione, chiudiamo i servizi di gestione dietro WireGuard e ti lasciamo la configurazione documentata. Gestiamo reti e server Linux per PMI, studi e agenzie.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mikrotik.com/supportsec/september-2026-vulnerability/&quot;&gt;MikroTik, bollettino &quot;September 2026 vulnerability&quot; con versioni corrette e raccomandazioni&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cert.pl/en/posts/2026/09/vulnerabilities-in-mikrotik-routeros-actively-exploited/&quot;&gt;CERT Polska, avviso sulle vulnerabilità di RouterOS sfruttate attivamente (5 settembre 2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.mikrotik.com/t/important-security-update/272851&quot;&gt;MikroTik, annuncio &quot;Important security update&quot; sul forum ufficiale, con i chiarimenti dello staff&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://help.mikrotik.com/docs/spaces/ROS/pages/93749258/Device-mode&quot;&gt;Documentazione RouterOS, Device-mode e stato Flagged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://help.mikrotik.com/docs/spaces/ROS/pages/328353/Securing+your+router&quot;&gt;Documentazione RouterOS, Securing your router&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cisa.gov/news-events/ics-advisories/icsa-26-209-05&quot;&gt;CISA, avviso ICSA-26-209-05 sull&apos;autenticazione dell&apos;API di RouterOS (luglio 2026)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Le email dei tuoi preventivi finiscono in spam? Ecco perché (e come si risolve)</title><link>https://initd.it/blog/email-preventivi-finiscono-in-spam</link><guid isPermaLink="true">https://initd.it/blog/email-preventivi-finiscono-in-spam</guid><description>Perché i preventivi e le email aziendali finiscono in spam su Gmail e Outlook, come capire se è il tuo caso e come si risolve davvero, senza cambiare provider di posta.</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mandi un preventivo, aspetti, e non risponde nessuno. La conclusione più naturale è che al cliente non interessasse. Spesso, però, la verità è un&apos;altra: quell&apos;email non è mai arrivata. È finita nella cartella spam, o è stata scartata prima ancora di entrare nella casella. Un affare perso senza nemmeno sapere di averlo perso.&lt;/p&gt;
&lt;p&gt;Non è sfortuna, e quasi mai è colpa di quello che hai scritto. Nella grande maggioranza dei casi è un problema tecnico preciso, e risolvibile, nel modo in cui il tuo dominio dimostra la propria identità. Gmail, Outlook e gli altri grandi provider decidono in una frazione di secondo se fidarsi di un&apos;email, e se il tuo dominio non prova di essere davvero chi dice, la risposta di default è: nella spam.&lt;/p&gt;
&lt;p&gt;La buona notizia è che questo problema si diagnostica in mezz&apos;ora e si sistema in un pomeriggio, e &lt;strong&gt;non richiede di cambiare provider di posta&lt;/strong&gt;. Vediamo perché succede e come capire se riguarda anche te.&lt;/p&gt;
&lt;h2&gt;Perché un&apos;email legittima finisce nello spam&lt;/h2&gt;
&lt;p&gt;C&apos;è un difetto di nascita nella posta elettronica: il mittente si può falsificare con facilità. L&apos;indirizzo che compare nel campo &quot;Da&quot; è come il nome scritto a penna sul retro di una busta, di per sé non lo garantisce nessuno. Per questo i provider filtrano in modo aggressivo, e un mittente che non riescono a verificare è, per definizione, sospetto.&lt;/p&gt;
&lt;p&gt;Per decidere, controllano tre &quot;documenti&quot; pubblici del tuo dominio: &lt;strong&gt;SPF&lt;/strong&gt;, &lt;strong&gt;DKIM&lt;/strong&gt; e &lt;strong&gt;DMARC&lt;/strong&gt;. Se mancano, sono rotti o non sono allineati, la tua email parte già in svantaggio. A questo si aggiunge la &lt;strong&gt;reputazione&lt;/strong&gt;: l&apos;indirizzo IP da cui spedisci ha una storia, e se in passato da lì è partito spam, o se il tuo dominio non è mai stato autenticato, i filtri ti trattano con diffidenza.&lt;/p&gt;
&lt;p&gt;Il paragone è quello della dogana. Un pacco con documenti in ordine passa; uno senza mittente verificabile viene aperto, messo da parte o rispedito. La tua email è quel pacco, e i tre controlli sono i suoi documenti.&lt;/p&gt;
&lt;h2&gt;I tre controlli che decidono se ti leggono&lt;/h2&gt;
&lt;p&gt;Senza entrare nel tecnico, ecco cosa fa ciascuno:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPF&lt;/strong&gt; dichiara &lt;em&gt;quali server sono autorizzati&lt;/em&gt; a spedire per il tuo dominio. Se l&apos;email arriva da un server non in elenco, è sospetta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DKIM&lt;/strong&gt; aggiunge una &lt;em&gt;firma&lt;/em&gt; che prova che il messaggio arriva davvero da te e non è stato alterato lungo la strada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMARC&lt;/strong&gt; lega i primi due all&apos;indirizzo che il cliente vede, dice al provider cosa fare quando qualcosa non torna e ti manda dei report su chi spedisce a tuo nome.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chi vuole i dettagli li trova nella guida completa su &lt;a href=&quot;/blog/spf-dkim-dmarc&quot;&gt;cosa sono SPF, DKIM e DMARC&lt;/a&gt;. Il punto per te è un altro: dal 2024 Gmail e Yahoo li &lt;strong&gt;richiedono esplicitamente&lt;/strong&gt; a chi invia volumi consistenti, e li usano come segnale per tutti. Non averli configurati oggi significa spedire in salita.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;I tuoi preventivi arrivano davvero ai clienti?&quot; text=&quot;Controlliamo SPF, DKIM, DMARC e la reputazione del tuo dominio, e testiamo la consegna reale verso Gmail e Outlook finché la posta entra in inbox.&quot; button=&quot;Chiedi un controllo →&quot;}&lt;/p&gt;
&lt;h2&gt;Come capire se è il tuo caso, senza essere tecnico&lt;/h2&gt;
&lt;p&gt;Ci sono segnali che è ora di guardarci dentro:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I clienti ti dicono &quot;non ho ricevuto niente&quot;, e tu l&apos;email l&apos;avevi mandata.&lt;/li&gt;
&lt;li&gt;I preventivi verso indirizzi Gmail, Outlook o aziendali restano senza risposta più del normale.&lt;/li&gt;
&lt;li&gt;Le email transazionali del gestionale o dell&apos;e-commerce (conferme d&apos;ordine, reset password) non arrivano.&lt;/li&gt;
&lt;li&gt;Anni fa qualcuno ha collegato al tuo dominio una piattaforma di newsletter o un CRM, e nessuno ha più controllato la configurazione.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La verifica veloce la puoi fare anche da solo: manda una prova a un indirizzo Gmail e a uno Outlook, e guarda se finisce in spam. Poi apri l&apos;email ricevuta e cerca, tra le opzioni &quot;mostra originale&quot; o &quot;dettagli&quot;, le righe che dicono &lt;code&gt;spf=pass&lt;/code&gt; o &lt;code&gt;spf=fail&lt;/code&gt;, &lt;code&gt;dkim=pass&lt;/code&gt; o &lt;code&gt;dkim=fail&lt;/code&gt;. Un &quot;fail&quot; è il campanello. Esistono anche strumenti online gratuiti che, dato il tuo dominio, ti dicono se i tre record ci sono e sono coerenti.&lt;/p&gt;
&lt;h2&gt;Cosa NON risolve il problema&lt;/h2&gt;
&lt;p&gt;Vale la pena dirlo, perché sono le strade sbagliate che si tentano più spesso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Comprare un hosting o un server più potente&lt;/strong&gt; non c&apos;entra nulla: la deliverability è una questione di DNS e reputazione, non di potenza.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Riscrivere il testo&lt;/strong&gt; dell&apos;email o togliere allegati aiuta poco se il dominio non è autenticato: il filtro decide prima di leggere il contenuto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggiungere &quot;questa non è spam&quot; nel footer&lt;/strong&gt; non ha alcun effetto sui filtri.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La reputazione di un dominio si costruisce in mesi e si brucia in un pomeriggio, per esempio con una casella compromessa che spedisce spam a tua insaputa. Per questo la cosa giusta è configurare bene i tre controlli, partire da DMARC in sola osservazione per capire chi spedisce davvero a tuo nome, e solo dopo irrigidire le regole. Prima si guarda, poi si decide.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;I preventivi che finiscono in spam raramente sono sfortuna: sono il tuo dominio che non riesce a dimostrare di essere te. La combinazione di SPF, DKIM, DMARC e reputazione decide se un&apos;email legittima entra in inbox o viene scartata. È un problema diagnosticabile e risolvibile in un pomeriggio, senza cambiare provider, e ogni email che torna a essere consegnata è un affare che stavi perdendo in silenzio. Se preferisci non metterci mano da solo, è esattamente il tipo di lavoro di cui ci occupiamo sui &lt;a href=&quot;/servizi/mail-server&quot;&gt;mail server che gestiamo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi che i tuoi preventivi arrivino, e restino fuori dallo spam?&quot; text=&quot;Analizziamo il DNS del tuo dominio, sistemiamo autenticazione e reputazione e verifichiamo la consegna sui provider reali, con tutto documentato riga per riga.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://support.google.com/a/answer/81126?hl=en&quot;&gt;Email sender guidelines - Google Workspace Admin Help&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/troubleshoot/exchange/mail-flow/smtp-submission-improvements&quot;&gt;Sending mail to Outlook.com - Microsoft Learn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9989.html&quot;&gt;RFC 9989 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>Il sito è lento? Prima di comprare un server più potente, misura</title><link>https://initd.it/blog/sito-lento-cosa-fare</link><guid isPermaLink="true">https://initd.it/blog/sito-lento-cosa-fare</guid><description>Un sito lento fa perdere visitatori, vendite e posizionamento. Perché un server più potente quasi mai risolve, quali due numeri guardare gratis e le cause vere della lentezza.</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Un sito lento non è solo un fastidio: è un costo. Chi apre una pagina e la vede caricare a fatica se ne va, e con lui se ne vanno visite, vendite e fiducia. Google, poi, tiene conto della velocità quando decide chi mostrare per primo: un sito lento parte più indietro anche nei risultati di ricerca.&lt;/p&gt;
&lt;p&gt;L&apos;istinto, davanti a un sito lento, è quasi sempre lo stesso: &quot;prendiamo un server più potente&quot;. È la reazione più naturale e, nove volte su dieci, è anche quella sbagliata. Un server più grande nasconde il problema per qualche mese, ti fa spendere di più ogni mese, e poi la lentezza torna, perché la causa non era la potenza. La regola è una: &lt;strong&gt;prima si misura, poi si spende&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Vediamo perché il &quot;ferro&quot; raramente è la risposta, quali due numeri puoi guardare da solo e gratis, e da dove nasce davvero la lentezza.&lt;/p&gt;
&lt;h2&gt;Perché un server più potente (di solito) non risolve&lt;/h2&gt;
&lt;p&gt;Il collo di bottiglia di un sito lento quasi mai è la pura potenza di calcolo. Nella grande maggioranza dei casi è qualcos&apos;altro: immagini enormi mai ottimizzate, una cache assente o mal configurata, query al database scritte male, o troppi script di terze parti che rallentano il caricamento. Raddoppiare CPU e memoria non tocca nessuna di queste cause: le compensa un po&apos;, a caro prezzo, finché il traffico non cresce e il problema riemerge.&lt;/p&gt;
&lt;p&gt;Il paragone è quello del traffico in città. Se le strade sono intasate perché ci sono troppi semafori mal regolati, comprare un&apos;auto più veloce non ti fa arrivare prima: resti fermo nella coda, solo con una macchina più costosa. La velocità serve quando la strada è libera, non quando il problema è come è organizzato il percorso.&lt;/p&gt;
&lt;h2&gt;I due numeri da guardare, gratis&lt;/h2&gt;
&lt;p&gt;Prima di spendere un euro, guarda come sta il sito davvero. Ti bastano due indicatori, che trovi gratis in strumenti come PageSpeed Insights di Google, semplicemente incollando l&apos;indirizzo del sito:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LCP&lt;/strong&gt; (in italiano &quot;il tempo per vedere il contenuto principale&quot;): quanto ci mette a comparire l&apos;elemento più grande della pagina, di solito l&apos;immagine o il titolo in alto. Dipende molto da quanto è veloce a rispondere il server, un aspetto che ha un nome preciso: il &lt;a href=&quot;/blog/ttfb-time-to-first-byte&quot;&gt;tempo di risposta, o TTFB&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INP&lt;/strong&gt;: quanto è reattiva la pagina quando ci clicchi o ci scrivi dentro. Un valore alto racconta una pagina appesantita da troppo codice che gira nel browser, spesso script di terze parti. È la metrica che &lt;a href=&quot;/blog/inp-core-web-vital&quot;&gt;ha sostituito il vecchio FID&lt;/a&gt; tra i Core Web Vitals di Google.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questi due numeri ti dicono &lt;em&gt;dove&lt;/em&gt; guardare. Un LCP alto punta verso il server e il caricamento; un INP alto punta verso gli script e il codice. È la differenza tra sapere e tirare a indovinare.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Il tuo sito è lento e non sai da dove nasce?&quot; text=&quot;Misuriamo LCP, INP e TTFB, troviamo il collo di bottiglia reale e ti diciamo cosa conviene sistemare, prima di spendere in hardware.&quot; button=&quot;Chiedi un&apos;analisi →&quot;}&lt;/p&gt;
&lt;h2&gt;Le cause vere della lentezza, in ordine di frequenza&lt;/h2&gt;
&lt;p&gt;Nella pratica, la lentezza di un sito nasce quasi sempre da queste cause, ed è utile conoscerle perché ognuna ha un rimedio diverso e mirato:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Immagini enormi non ottimizzate.&lt;/strong&gt; Una foto da 4 MB caricata così com&apos;è pesa più di tutto il resto della pagina. Ridimensionarle e comprimerle bene è spesso il singolo intervento che rende di più.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache assente o mal configurata.&lt;/strong&gt; Senza cache, il server ricalcola ogni pagina da zero a ogni visita. Una cache ben messa, lato server e lato browser, taglia i tempi in modo netto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query al database lente.&lt;/strong&gt; Su CMS ed e-commerce è una causa classica: una singola query scritta male può bloccare intere schermate. È il cuore del problema quando, per esempio, &lt;a href=&quot;/blog/prestashop-lento-come-velocizzarlo&quot;&gt;un negozio PrestaShop diventa lento&lt;/a&gt; nei momenti di punta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Troppi script di terze parti.&lt;/strong&gt; Chat, pixel di tracciamento, tag di marketing, widget: ognuno aggiunge peso e ritardo. Spesso se ne accumulano a decine senza che nessuno li riveda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server sottodimensionato o mal configurato.&lt;/strong&gt; Sì, a volte il server c&apos;entra davvero, ma lo scopri da un TTFB alto misurato, non per sensazione.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Quando invece il server c&apos;entra davvero&lt;/h2&gt;
&lt;p&gt;Va detto con onestà: capita che la causa sia proprio l&apos;hardware, un hosting condiviso sovraccarico o una macchina sottodimensionata per il traffico reale. Ma anche in questi casi la risposta raramente è &quot;comprare più potenza&quot;. Spesso basta introdurre uno strato di cache (Redis, Varnish), tarare bene il web server e il database, e lo stesso hardware regge il triplo del carico. Si passa a un server più grande solo dopo aver misurato che serve davvero, non come primo tentativo al buio.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;Un sito lento raramente si risolve comprando ferro. Prima si misurano LCP, INP e il tempo di risposta del server; poi si interviene sulla causa reale, che nella grande maggioranza dei casi sono immagini pesanti, cache mancante, query lente o script di troppo. Spesso lo stesso hardware, tarato bene, va il triplo, a un costo molto inferiore rispetto a un server più grande che nasconde il problema per qualche mese. Se vuoi capire da dove nasce la lentezza del tuo sito prima di spendere, è il tipo di analisi con cui partiamo nel &lt;a href=&quot;/servizi/monitoraggio-performance&quot;&gt;monitoraggio e ottimizzazione delle performance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi un sito veloce senza buttare soldi in hardware?&quot; text=&quot;Misuriamo, troviamo il collo di bottiglia reale e ottimizziamo cache, immagini, query e configurazione del server, con numeri prima e dopo.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/vitals&quot;&gt;Core Web Vitals - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.google.com/speed/docs/insights/v5/about&quot;&gt;About PageSpeed Insights - Google for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/lcp&quot;&gt;Largest Contentful Paint (LCP) - web.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item><item><title>NIS2 e fornitori: cosa ti chiederanno i clienti obbligati (scadenza ottobre 2026)</title><link>https://initd.it/blog/nis2-fornitori-pmi-cosa-fare</link><guid isPermaLink="true">https://initd.it/blog/nis2-fornitori-pmi-cosa-fare</guid><description>Per le aziende già nell&apos;elenco ACN le misure di base NIS2 scadono a ottobre 2026 e i fornitori finiscono nei contratti. Cosa preparare, misura per misura, senza legalese.</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Se la tua azienda vende servizi a un&apos;altra azienda, prima o poi quel cliente ti manderà un questionario di sicurezza o una clausola da firmare. Nel 2026 è più probabile che mai: la direttiva europea &lt;strong&gt;NIS2&lt;/strong&gt;, recepita in Italia con il decreto legislativo 138/2024, sta arrivando alla sua prima grande scadenza operativa.&lt;/p&gt;
&lt;p&gt;La NIS2 non riguarda solo i colossi. Per legge tocca le aziende medie e grandi di diciotto settori (non solo energia e sanità, anche servizi digitali, manifattura e altri) e, in alcuni casi, anche realtà più piccole. Chi rientra viene inserito in un elenco tenuto dall&apos;&lt;strong&gt;ACN&lt;/strong&gt;, l&apos;Agenzia per la cybersicurezza nazionale, e deve adottare misure di sicurezza e segnalare gli incidenti. Se non sei in quell&apos;elenco non hai quegli obblighi per legge. Ma se vendi qualcosa a chi ci è dentro, quegli obblighi ti arrivano lo stesso, per contratto.&lt;/p&gt;
&lt;p&gt;Qui spieghiamo come funziona il passaggio dal cliente al fornitore, quali misure toccano server, backup e accessi, e da dove conviene cominciare. Una premessa onesta: non è consulenza legale. Sono i requisiti tecnici che ACN ha pubblicato, tradotti in cose da verificare.&lt;/p&gt;
&lt;h2&gt;Le scadenze: ottobre 2026 non vale per tutti&lt;/h2&gt;
&lt;p&gt;Il calendario dipende da quando il soggetto è stato inserito nell&apos;elenco. Ogni anno, dal 1° gennaio al 28 febbraio, le aziende interessate si registrano sul portale ACN, e l&apos;Agenzia comunica a ciascuna se è stata inserita. Da quella comunicazione decorrono due termini:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;9 mesi&lt;/strong&gt; per la notifica degli incidenti significativi (per il primo gruppo, inserito nel 2025, è scattata a gennaio 2026);&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18 mesi&lt;/strong&gt; per le misure di sicurezza di base (per lo stesso gruppo, ottobre 2026).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chi è stato inserito per la prima volta nel 2026 ha più tempo: notifica degli incidenti dal 1° gennaio 2027 e misure di base entro il 31 luglio 2027. Quindi &quot;ottobre 2026&quot; non è una data universale: dipende dal cliente che hai davanti. Le misure sono quelle della Determinazione ACN 379907 del 19 dicembre 2025, in vigore dal 15 gennaio 2026: 37 misure per i soggetti importanti e 43 per quelli essenziali.&lt;/p&gt;
&lt;h2&gt;Come arriva a un fornitore: nei contratti&lt;/h2&gt;
&lt;p&gt;Le misure di base includono la gestione dei rischi della &lt;strong&gt;catena di fornitura&lt;/strong&gt;. In pratica il cliente deve valutare i fornitori che possono avere un impatto sulla sua sicurezza e inserire requisiti di sicurezza nei contratti. Le FAQ di ACN chiariscono i punti che interessano a te:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;i &lt;strong&gt;contratti già in essere non vanno modificati&lt;/strong&gt;; i requisiti diventano obbligatori per i contratti firmati, rinnovati o prorogati dalla scadenza delle misure di base in poi, salvo motivate ragioni legali o tecniche documentate;&lt;/li&gt;
&lt;li&gt;il cliente valuta il rischio di ogni fornitura: quanto accedi ai suoi sistemi e ai suoi dati, quanto pesa un tuo fermo prolungato, quanto costa e quanto tempo richiede il ripristino;&lt;/li&gt;
&lt;li&gt;i requisiti riguardano le forniture con un potenziale impatto sulla sicurezza e devono recepire la sostanza delle misure, non copiarne il testo.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cosa troverai scritto, quindi, lo decide il cliente. La linea comune è che chi gestisce i suoi server, il suo gestionale o il suo e-commerce dovrà dimostrare di avere in ordine le stesse cose che il cliente deve avere in ordine in casa.&lt;/p&gt;
&lt;p&gt;::cta{variant=&quot;inline&quot; title=&quot;Un cliente ti ha già mandato un questionario NIS2?&quot; text=&quot;Lo leggiamo insieme e lo traduciamo in cose da verificare sui tuoi server: cosa c&apos;è già, cosa manca e in che ordine sistemarlo.&quot; button=&quot;Fatti aiutare con il questionario →&quot;}&lt;/p&gt;
&lt;h2&gt;Le misure che toccano server, backup e accessi&lt;/h2&gt;
&lt;p&gt;Le specifiche di base sono ampie e riguardano anche governo, formazione e documentazione. Quelle più legate all&apos;infrastruttura, e quindi alle risposte che un fornitore IT dovrà dare, sono queste:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Inventario di sistemi e servizi&lt;/strong&gt; (ID.AM, GV.OC): un elenco aggiornato di hardware, software, servizi e fornitori. Il primo passo è sapere cosa gira, dove e chi lo gestisce.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solo software con aggiornamenti di sicurezza&lt;/strong&gt; (PR.PS-02): va installato soltanto software, sistemi operativi compresi, per cui il produttore garantisce le patch di sicurezza, e le patch vanno applicate &quot;senza ingiustificato ritardo&quot;, salvo ragioni tecniche documentate. È il caso di chi resta su &lt;a href=&quot;/blog/php-fine-vita-cosa-rischi&quot;&gt;una versione di PHP a fine vita&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backup, anche offline&lt;/strong&gt; (PR.DS-11): backup periodici di dati e configurazioni e, per i sistemi rilevanti, anche copie offline. La &lt;a href=&quot;/blog/regola-backup-3-2-1&quot;&gt;regola del backup 3-2-1&lt;/a&gt; è un buon punto di partenza, a patto di provare il ripristino.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autenticazione a più fattori e account separati&lt;/strong&gt; (PR.AA-03, PR.AA-05): la verifica a più fattori per i sistemi rilevanti, in base al rischio, e account amministrativi distinti da quelli ordinari, con credenziali diverse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accessi da remoto elencati, protetti e registrati&lt;/strong&gt; (PR.IR-01, PR.PS-04): un elenco dei sistemi raggiungibili da remoto e di come, firewall aggiornati, e registrazione di tutti gli accessi remoti e di quelli con privilegi amministrativi, con log conservati in modo sicuro e possibilmente centralizzato. Un &lt;a href=&quot;/blog/bastion-host-accesso-ssh-sicuro&quot;&gt;bastion host per l&apos;accesso SSH&lt;/a&gt; risolve gran parte della questione.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestione delle vulnerabilità&lt;/strong&gt; (ID.RA-08): un piano scritto che dica come si scoprono, si seguono e si correggono, compreso il monitoraggio dei canali del CSIRT Italia, la squadra nazionale che gestisce gli incidenti informatici.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fornitori e catena di fornitura&lt;/strong&gt; (GV.SC, PR.PS-06): un inventario dei fornitori con referente e tipo di fornitura e, per chi sviluppa software, pratiche di sviluppo sicuro documentate. Il tema della catena di fornitura riguarda anche il codice: ne parla la storia dei &lt;a href=&quot;/blog/pacchetti-npm-compromessi-quarantena&quot;&gt;pacchetti npm compromessi&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un dettaglio rassicurante: molti requisiti valgono &quot;per almeno i sistemi informativi e di rete rilevanti&quot;, cioè quelli la cui compromissione inciderebbe in modo significativo sui servizi. Il cliente può circoscrivere dove li applica, e di conseguenza dove ti chiederà conferme. I dati personali restano un capitolo a parte, quello del GDPR, che abbiamo raccontato in &lt;a href=&quot;/blog/gdpr-lato-infrastruttura&quot;&gt;GDPR lato infrastruttura&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Incidenti: 24 ore, 72 ore, un mese, e chi avvisa chi&lt;/h2&gt;
&lt;p&gt;Per un soggetto NIS un incidente significativo si segnala al CSIRT Italia in tre tempi (articolo 25 del decreto 138/2024):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;pre-notifica&lt;/strong&gt; entro 24 ore da quando si viene a conoscenza dell&apos;incidente;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;notifica&lt;/strong&gt; entro 72 ore, con una prima valutazione di gravità e impatto;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;relazione finale&lt;/strong&gt; entro un mese dalla notifica, con la causa e le misure adottate.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il termine parte dal momento in cui il soggetto ha evidenza dell&apos;incidente, che spesso è dopo che l&apos;incidente è avvenuto. Per questo il tempo che passa tra &quot;è successo qualcosa sul tuo server&quot; e &quot;il cliente lo sa&quot; conta: ACN indica che i clienti dovrebbero chiedere ai fornitori, per contratto, di segnalare tempestivamente gli eventi di sicurezza. Se l&apos;incidente di un fornitore colpisce i servizi del cliente, a notificare al CSIRT è il cliente, e anche il fornitore se l&apos;incidente è significativo per lui; per i servizi cloud notificano entrambi, tranne che per l&apos;infrastruttura (IaaS e hosting), dove notifica solo il cliente.&lt;/p&gt;
&lt;p&gt;Tradotto: devi poter dire in poche ore cosa è successo, su quali sistemi e con quali conseguenze. Senza log, senza un contatto reperibile e senza una procedura scritta non è possibile.&lt;/p&gt;
&lt;h2&gt;Da dove cominciare, in un pomeriggio&lt;/h2&gt;
&lt;p&gt;Non serve un progetto da sei mesi per partire. Un ordine sensato:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Censisci&lt;/strong&gt; server, applicazioni, servizi esterni e chi li gestisce. Una tabella basta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chiudi gli accessi&lt;/strong&gt;: verifica a più fattori ovunque sia possibile, account amministrativi separati, elenco degli accessi da remoto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prova un ripristino&lt;/strong&gt; da backup, incluso quello offline. Un backup mai ripristinato è una speranza.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrivi due pagine&lt;/strong&gt;: il piano per le patch e la procedura per un incidente, con nome e telefono di chi risponde.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prepara una scheda per i clienti&lt;/strong&gt; che riassuma come gestisci server, backup, accessi e incidenti: la riuserai a ogni questionario.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Mettere in ordine la parte tecnica è il nostro lavoro quotidiano di &lt;a href=&quot;/servizi/sicurezza&quot;&gt;messa in sicurezza dei server Linux&lt;/a&gt;. Una nota di onestà: siamo una consulenza tecnica, non facciamo audit di conformità né consulenza legale. Per quella serve un legale o un consulente specializzato.&lt;/p&gt;
&lt;h2&gt;In sintesi&lt;/h2&gt;
&lt;p&gt;La NIS2 arriva ai fornitori attraverso i contratti: dopo la scadenza delle misure di base, che per il primo gruppo di soggetti cade a ottobre 2026 e per i nuovi iscritti del 2026 a luglio 2027, i clienti obbligati dovranno chiedere requisiti di sicurezza a chi li serve. Le richieste ruoteranno attorno a cose concrete: inventario, patch sul software supportato, backup anche offline, accessi protetti e registrati, un piano per le vulnerabilità e una procedura per gli incidenti. Chi parte ora ha il vantaggio di rispondere in modo ordinato invece di improvvisare davanti a un questionario.&lt;/p&gt;
&lt;p&gt;::cta{title=&quot;Vuoi arrivare pronto alla prossima richiesta di un cliente NIS2?&quot; text=&quot;Facciamo l&apos;inventario, mettiamo in ordine accessi, backup e aggiornamenti dei tuoi server Linux e documentiamo tutto in un report leggibile che puoi allegare alle risposte.&quot; button=&quot;Parliamone →&quot;}&lt;/p&gt;
&lt;h2&gt;Fonti&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.acn.gov.it/portale/en/faq/nis/misure-di-sicurezza-e-notifica-di-incidenti&quot;&gt;ACN, FAQ NIS: misure di sicurezza e notifica di incidenti&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.acn.gov.it/portale/en/nis/modalita-specifiche-base&quot;&gt;ACN, Modalità e specifiche di base (Determinazione 379907/2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.acn.gov.it/portale/documents/d/guest/allegato-1-v2&quot;&gt;ACN, Allegato 1: misure di sicurezza di base per i soggetti importanti&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.acn.gov.it/portale/en/w/normativa-nis-date-e-informazioni-utili-per-un-implementazione-efficace&quot;&gt;ACN, Normativa NIS: date e informazioni utili&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.gazzettaufficiale.it/atto/serie_generale/caricaArticolo?art.versione=1&amp;amp;art.idGruppo=4&amp;amp;art.flagTipoArticolo=0&amp;amp;art.codiceRedazionale=24G00155&amp;amp;art.idArticolo=25&amp;amp;art.idSottoArticolo=1&amp;amp;art.idSottoArticolo1=10&amp;amp;art.dataPubblicazioneGazzetta=2024-10-01&amp;amp;art.progressivo=0&quot;&gt;Decreto legislativo 138/2024, articolo 25 (Gazzetta Ufficiale)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://eur-lex.europa.eu/eli/dir/2022/2555/oj&quot;&gt;Direttiva (UE) 2022/2555 (NIS2)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><author>Alessandro Corbelli</author></item></channel></rss>