Privacy e dati · 8 min di lettura

Come verificare che il Suo file del DNA non lasci mai il browser (un controllo di 3 minuti con i DevTools)

Un controllo di tre minuti con la scheda Rete del browser: che cosa aprire, quali richieste fa il nostro generatore, che aspetto ha un caricamento su un altro servizio e che cosa conserviamo.

Floriel FedryCo-founder & Software Engineer

Apra gli strumenti per sviluppatori del browser, passi alla scheda Rete, poi generi un report. Su Full Human Health vedrà scaricarsi una sola volta il modulo del generatore (circa 36 MB), due piccole richieste che riservano e poi completano un credito e un evento di statistica che indica il tipo di report. Nulla che abbia le dimensioni del Suo file del DNA lascia la pagina. Gli stessi tre minuti servono a testare qualsiasi altro servizio.

La promessa, e perché va verificata

«Elaborato sul Suo dispositivo» è ormai una promessa comune. Noi compresi, nel 2026 almeno sei strumenti per i dati grezzi del DNA la fanno: Genetic Lifehacks afferma che il file non lascia mai il dispositivo, GenomeInsight che tutto viene elaborato nel browser, Allelix (open source, AGPL-3.0) che i dati di genotipizzazione non lasciano mai il computer, snp-browser confronta il file nei worker del browser e personal-genomics (MIT) funziona in locale. Tutte e cinque le pagine sono state consultate il 14 ottobre 2026.

Una promessa non è una prova, e il codice cambia a ogni deploy. Quando abbiamo scaricato la home page di GenomeInsight il 14 ottobre 2026, il suo HTML richiamava gli script di Google Tag Manager, Google Analytics, Google Ads e Facebook Pixel. Non è un caricamento di DNA, e non abbiamo testato la sua pagina di analisi, ma un sito può essere onesto riguardo al file e inviare comunque molte informazioni su di Lei. L'unico modo per sapere che cosa invia una pagina è osservarla.

Apra la scheda Rete e generi un report

  1. Acceda alla pagina dell'account e selezioni il Suo file di dati grezzi (la nostra guida al download copre ogni servizio). Non clicchi ancora su Genera.
  2. Apra gli strumenti per sviluppatori: F12, oppure Ctrl+Shift+J (Cmd+Option+J su Mac) in Chrome ed Edge, poi clicchi sulla scheda Rete, come indicato nella documentazione di Chrome; in Firefox, Ctrl+Shift+E (Cmd+Option+E) apre direttamente il Monitor di rete.
  3. Spunti «Conserva log» (Preserve log, in Chrome) o «Log persistenti» (Persist Logs, in Firefox) e svuoti l'elenco.
  4. Spunti la casella di conferma, poi clicchi su Genera.

Compaiono quattro cose, in quest'ordine:

  • Un download di grandi dimensioni. Un file .wasm dal nostro dominio: il generatore, Rust compilato in WebAssembly, con il catalogo all'interno. Circa 36 MB non compressi; la colonna Dimensioni mostra la quantità trasferita, che può essere inferiore se è compresso. È un download, memorizzato nella cache per la volta successiva.
  • POST /api/generations/reserve. Ne apra la scheda Payload (Chrome) o Richiesta (Firefox): il corpo è {"reportId":"...","consent":true}, cioè il tipo di report e il fatto che ha spuntato la casella di conferma, nient'altro.
  • POST /api/generations/<id>/complete. Senza corpo. Segna il credito come usato una volta che il PDF esiste sul Suo dispositivo.
  • Un evento di statistica verso /_vercel/insights sul nostro dominio, chiamato report_generated: tipo di report, lingua del PDF, servizio di test scelto e durata in millisecondi. Nessun nome di file, nessun genotipo.

Ordini l'elenco per Dimensioni. L'unica riga grande è il download; un file di dati grezzi esportato pesa decine di megabyte e sarebbe in cima all'elenco se una richiesta lo trasportasse. Qui non viene eseguito alcuno script Google: il nostro tag pubblicitario è escluso dalle pagine di accesso e dell'account. Stripe compare solo come reindirizzamento quando acquista crediti, prima che venga aperto qualsiasi file. Una generazione non riuscita aggiunge un POST /api/generations/<id>/fail, senza corpo, e il credito Le viene restituito; si aggiunge anche un evento generation_failed con il tipo di report e la fase non riuscita (prenotazione, generazione o completamento).

Faccia lo stesso controllo su qualsiasi altro servizio

Stessa procedura, con una regola: lo esegua sulla pagina che apre il file, non sulla home page. Un caricamento è facile da individuare: un POST o un PUT di dimensioni simili a quelle del Suo file, spesso multipart/form-data, spesso verso un host di archiviazione o un percorso che contiene «upload». I caricamenti a blocchi compaiono come più richieste di pochi megabyte; il filtro WS mostra le connessioni WebSocket.

Alcuni servizi caricano il file per scelta progettuale, e lo dichiarano. Promethease ha bisogno del file sui propri server e, secondo la sua pagina sulla privacy, lo elimina una volta consegnato il report; ha smesso di conservare i file l'8 aprile 2025 (consultato il 14 ottobre 2026). Il problema è lo strumento che dice «sul dispositivo» e poi carica comunque. Un limite e un'aggiunta: uno strumento pulito può cambiare domani, quindi ripeta il controllo dopo gli aggiornamenti; e gli strumenti open source come Allelix e snp-browser Le permettono anche di leggere il codice. Il nostro codice non è ancora pubblico, quindi nel nostro caso la prova è il traffico.

Che cosa conserviamo, e perché

I nostri server conservano il nome e l'indirizzo e-mail inseriti alla registrazione, un hash della password e le Sue sessioni di accesso, il saldo dei crediti e i dati dei pagamenti Stripe e, per ogni generazione, il tipo di report, lo stato, la data e l'ora. I crediti richiedono un account, i rimborsi richiedono una traccia di ciò che non è andato a buon fine e Stripe ha bisogno di un indirizzo e-mail per la ricevuta. Non riceviamo mai il file, i genotipi, il PDF né il nome del file. Un credito viene riservato prima della generazione, così che, se la generazione non va a buon fine, venga rimborsato automaticamente. La pagina sulla sicurezza elenca ogni servizio che usiamo e per quanto tempo viene conservato ciascun dato; la pagina sulla metodologia spiega che cosa fa il generatore con il file in memoria.

Che cosa aggiungerebbe una Content Security Policy (non l'abbiamo ancora)

Una Content Security Policy è un'intestazione di risposta. La sua direttiva connect-src limita gli URL che gli script di una pagina possono contattare tramite fetch, XMLHttpRequest, WebSocket, EventSource e sendBeacon, come documenta MDN. Limitata al nostro dominio e a Stripe, farebbe sì che sia il browser stesso a rifiutarsi di inviare dati altrove, anche in caso di dipendenza compromessa o di un bug futuro.

Oggi non la inviamo: curl -I https://www.full-human.health/en-US restituisce un'intestazione HSTS e nessuna Content-Security-Policy (consultato il 14 ottobre 2026). L'elenco delle autorizzazioni deve lasciar funzionare Stripe Checkout, l'accesso e le statistiche, e va prima testato; è nella nostra lista. Sarebbe una seconda serratura, non un sostituto, perché una policy autorizza il nostro dominio e solo la scheda Rete mostra che nemmeno noi riceviamo il file. Non esiste ancora nemmeno un audit di terze parti. Il nostro security.txt fornisce un contatto ai ricercatori; la pagina chi siamo dice chi risponde.

FAQ

La scheda Rete mostra tutto ciò che una pagina invia?

Registra ogni richiesta HTTP, ogni messaggio WebSocket e ogni beacon emesso dalla scheda, compresi quelli di script e worker. Non mostra ciò che un'estensione del browser invia per conto proprio, quindi usi una finestra di navigazione privata, e registra solo mentre è aperta, quindi la tenga aperta per tutta la generazione.

Perché la pagina scarica circa 36 MB?

Il generatore è Rust compilato in WebAssembly e contiene il catalogo e il motore di rendering del PDF; il solo catalogo sulla salute contiene 12.110 associazioni principali. È grande per lo stesso motivo per cui il Suo file non deve mai andare da nessuna parte: è il catalogo a venire da Lei. Il browser lo memorizza nella cache, quindi i report successivi saltano il download.

Posso staccare la connessione durante la generazione?

Oggi non per tutta la durata. Un credito viene riservato prima di ogni report e completato dopo; entrambe le chiamate richiedono una connessione. Se il completamento non va a buon fine, la prenotazione scade dopo 60 minuti e il credito viene rimborsato alla visita successiva. Riservare un credito prima di andare offline e completarlo al ritorno della connessione permetterebbe di svolgere tutto offline; non l'abbiamo sviluppato.

Che cosa contiene esattamente l'evento di statistica?

Il nome dell'evento, il tipo di report, la lingua del PDF, il servizio di test scelto e la durata in millisecondi, più il percorso della pagina e la versione dello script. Come ogni richiesta, trasporta il Suo indirizzo IP e la stringa del browser; Vercel ne ricava un paese, un'etichetta di browser e sistema operativo e un hash del visitatore eliminato dopo 24 ore, secondo la sua pagina sulla privacy (consultata il 14 ottobre 2026). Nessun cookie, nessun nome di file, nessun genotipo.

«Funziona nel browser» significa «privato»?

No. Una pagina può gestire il Suo file in locale e inviare comunque la Sua identità e il Suo comportamento a reti pubblicitarie dalla stessa scheda, e l'account che sta dietro conserva ciò che vi ha inserito. La privacy è ciò che invia la pagina che gestisce il file, ciò che conserva l'account e quale legge si applica. Ponga tutte e tre le domande a ogni strumento.

Questo articolo ha solo scopo informativo generale e non è un parere medico. Si rivolga a un professionista sanitario qualificato prima di prendere decisioni sulla salute basate su dati genetici.

Niente da violare, vendere o consegnare

Un report sul DNA da un servizio che non riceve mai il Suo DNA.

Il generatore funziona nella scheda del Suo browser. I nostri server vedono il Suo account e il pagamento, mai il Suo file né il Suo PDF.

409 tratti del catalogo · 17 categorie · GWAS Catalog giugno 2026

Lo verifichi da sé: apra la scheda Rete (Network) mentre viene generato un report.

Argomentiprivacy DNAdati grezzi del DNADevToolsanalisi DNA nel browserContent Security Policycaricare dati grezzi DNA