Confidentialité & données · 8 min de lecture

Comment vérifier que votre fichier ADN ne quitte jamais votre navigateur (un test de 3 minutes avec les DevTools)

Un test de trois minutes avec l'onglet Réseau de votre navigateur : quoi ouvrir, quelles requêtes fait notre générateur, à quoi ressemble un envoi sur un autre service et ce que nous conservons.

Floriel FedryCo-founder & Software Engineer

Ouvrez les outils de développement de votre navigateur, passez à l'onglet Réseau, puis générez un rapport. Sur Full Human Health, vous verrez le module du générateur se télécharger une fois (environ 36 Mo), deux petites requêtes qui réservent puis consomment un crédit, et un événement de statistiques qui indique le type de rapport. Rien de la taille de votre fichier ADN ne quitte la page. Les mêmes trois minutes permettent de tester n'importe quel autre service.

La promesse, et pourquoi il faut la vérifier

« Traité sur votre appareil » est devenu une promesse courante. En nous comptant, au moins six outils d'analyse de données ADN brutes la font en 2026 : Genetic Lifehacks affirme que le fichier ne quitte jamais votre appareil, GenomeInsight que tout est traité dans le navigateur, Allelix (open source, AGPL-3.0) que les données de génotypage ne quittent jamais votre machine, snp-browser traite le fichier dans des web workers du navigateur, et personal-genomics (MIT) fonctionne en local. Ces cinq pages ont été vérifiées le 14 octobre 2026.

Une promesse n'est pas une preuve, et le code change à chaque déploiement. Quand nous avons récupéré la page d'accueil de GenomeInsight le 14 octobre 2026, son HTML faisait référence aux scripts Google Tag Manager, Google Analytics, Google Ads et Facebook Pixel. Ce n'est pas un envoi d'ADN, et nous n'avons pas testé sa page d'analyse, mais un site peut être honnête au sujet du fichier et envoyer quand même beaucoup d'informations sur vous. La seule façon de savoir ce qu'une page envoie, c'est de l'observer.

Ouvrez l'onglet Réseau et générez un rapport

  1. Connectez-vous sur la page de compte et sélectionnez votre fichier brut (notre guide de téléchargement couvre chaque fournisseur). Ne cliquez pas encore sur Générer.
  2. Ouvrez les outils de développement : F12, ou Ctrl+Shift+J (Cmd+Option+J sur Mac) dans Chrome et Edge, puis cliquez sur l'onglet Réseau, selon la documentation de Chrome ; dans Firefox, Ctrl+Shift+E (Cmd+Option+E) ouvre directement le Moniteur réseau.
  3. Cochez « Conserver le journal » (Preserve log, dans Chrome) ou « Journaux persistants » (Persist Logs, dans Firefox) et videz la liste.
  4. Cochez la case de confirmation, puis cliquez sur Générer.

Quatre choses apparaissent, dans cet ordre :

  • Un gros téléchargement. Un fichier .wasm venant de notre propre domaine : le générateur, du Rust compilé en WebAssembly, avec le catalogue à l'intérieur. Environ 36 Mo une fois décompressé ; la colonne Taille affiche la quantité transférée, qui peut être plus faible s'il est compressé. C'est un téléchargement, mis en cache pour la fois suivante.
  • POST /api/generations/reserve. Ouvrez son onglet Charge utile (Chrome) ou Requête (Firefox) : le corps est {"reportId":"...","consent":true}, c'est-à-dire le type de rapport et le fait que vous avez coché la case de confirmation, rien d'autre.
  • POST /api/generations/<id>/complete. Sans corps. Il marque le crédit comme utilisé une fois que le PDF existe sur votre appareil.
  • Un événement de statistiques vers /_vercel/insights sur notre domaine, nommé report_generated : type de rapport, langue du PDF, fournisseur que vous avez choisi et durée en millisecondes. Aucun nom de fichier, aucun génotype.

Triez par taille. La seule grosse ligne est le téléchargement ; un export brut pèse des dizaines de mégaoctets et serait en haut de la liste si une requête le transportait. Aucun script Google ne s'exécute ici : notre balise publicitaire est exclue des pages de connexion et de compte. Stripe n'apparaît que sous forme de redirection quand vous achetez des crédits, avant qu'un fichier ne soit ouvert. Une génération qui échoue ajoute un POST /api/generations/<id>/fail, sans corps, et le crédit vous est rendu, ainsi qu'un événement generation_failed qui contient le type de rapport et l'étape qui a échoué (réservation, génération ou finalisation).

Faites le même test sur n'importe quel autre service

Même procédure, une règle : faites-le sur la page qui ouvre le fichier, pas sur la page d'accueil. Un envoi est facile à repérer : un POST ou un PUT à peu près de la taille de votre fichier, souvent en multipart/form-data, souvent vers un hôte de stockage ou un chemin contenant « upload ». Les envois fragmentés apparaissent comme plusieurs requêtes de quelques mégaoctets ; le filtre WS affiche les connexions WebSocket.

Certains services envoient le fichier parce que c'est leur fonctionnement même, et le disent. Promethease a besoin du fichier sur ses serveurs et, selon sa page de confidentialité, le supprime une fois le rapport livré ; il a cessé de conserver les fichiers le 8 avril 2025 (vérifié le 14 octobre 2026). Le problème, c'est l'outil qui dit « sur l'appareil » et envoie quand même. Une limite et un complément : un outil irréprochable peut changer demain, donc refaites le test après les mises à jour ; et les outils open source comme Allelix et snp-browser vous permettent aussi de lire le code. Le nôtre n'est pas encore public, donc pour nous, c'est le trafic qui fait foi.

Ce que nous conservons, et pourquoi

Nos serveurs conservent le nom et l'adresse e-mail que vous avez saisis à l'inscription, une empreinte de votre mot de passe et vos sessions de connexion, votre solde de crédits et les enregistrements de paiement Stripe, et pour chaque génération le type de rapport, le statut et les horodatages. Les crédits nécessitent un compte, les remboursements nécessitent une trace de ce qui a échoué, et Stripe a besoin d'une adresse e-mail pour le reçu. Nous ne recevons jamais le fichier, les génotypes, le PDF ni le nom du fichier. Un crédit est réservé avant la génération pour qu'un échec soit remboursé automatiquement. La page sécurité liste chaque service que nous utilisons et la durée de conservation de chaque enregistrement ; la page méthodologie explique ce que le générateur fait du fichier en mémoire.

Ce qu'apporterait une Content Security Policy (nous n'en avons pas encore)

Une Content Security Policy (CSP) est un en-tête de réponse. Sa directive connect-src restreint les URL que les scripts d'une page peuvent contacter via fetch, XMLHttpRequest, WebSocket, EventSource et sendBeacon, comme le documente MDN. Si elle est limitée à notre propre domaine et à Stripe, le navigateur lui-même refuserait d'envoyer des données ailleurs, même en cas de dépendance compromise ou de bug futur.

Nous ne l'envoyons pas aujourd'hui : curl -I https://www.full-human.health/en-US renvoie un en-tête HSTS et aucun Content-Security-Policy (vérifié le 14 octobre 2026). La liste d'autorisations doit laisser fonctionner Stripe Checkout, la connexion et les statistiques, et doit d'abord être testée ; c'est prévu. Ce serait un second verrou, pas un remplacement, car une politique autorise notre propre domaine, et seul l'onglet Réseau montre que même nous ne recevons pas le fichier. Il n'existe pas non plus encore d'audit par un tiers. Notre security.txt donne un contact aux chercheurs ; la page à propos indique qui répond.

FAQ

L'onglet Réseau montre-t-il tout ce qu'une page envoie ?

Il enregistre chaque requête HTTP, chaque message WebSocket et chaque beacon émis par l'onglet, y compris ceux des scripts et des workers. Il ne montre pas ce qu'une extension de navigateur envoie de son côté, donc utilisez une fenêtre de navigation privée, et il n'enregistre que lorsqu'il est ouvert, donc gardez-le ouvert pendant toute la génération.

Pourquoi la page télécharge-t-elle environ 36 Mo ?

Le générateur est du Rust compilé en WebAssembly et embarque son catalogue et le moteur de rendu PDF ; le catalogue santé contient à lui seul 12 110 associations principales. Il est volumineux pour la même raison que votre fichier n'a jamais besoin d'aller nulle part : c'est le catalogue qui vient à vous. Votre navigateur le met en cache, donc les rapports suivants se passent du téléchargement.

Puis-je couper la connexion pendant la génération ?

Pas pendant toute l'opération, aujourd'hui. Un crédit est réservé avant chaque rapport et finalisé après ; les deux appels nécessitent une connexion. Si la finalisation échoue, la réservation expire au bout de 60 minutes et le crédit est remboursé à votre visite suivante. Réserver un crédit avant de passer hors ligne et le finaliser une fois reconnecté permettrait de tout faire hors ligne ; nous ne l'avons pas mis en place.

Que contient exactement l'événement de statistiques ?

Le nom de l'événement, le type de rapport, la langue du PDF, le fournisseur que vous avez choisi et la durée en millisecondes, plus le chemin de la page et la version du script. Comme toute requête, il transporte votre adresse IP et la chaîne d'identification de votre navigateur ; Vercel en déduit un pays, un libellé de navigateur et de système d'exploitation, et un hachage de visiteur supprimé au bout de 24 heures, selon sa page de confidentialité (vérifié le 14 octobre 2026). Aucun cookie, aucun nom de fichier, aucun génotype.

« Fonctionne dans le navigateur » veut-il dire « privé » ?

Non. Une page peut traiter votre fichier en local et envoyer quand même votre identité et votre comportement à des régies publicitaires depuis le même onglet, et le compte derrière conserve ce que vous y avez saisi. La confidentialité, c'est ce qu'envoie la page qui traite le fichier, ce que conserve le compte et le droit qui s'applique. Posez les trois questions à chaque outil.

Cet article est fourni à titre d'information générale et ne constitue pas un avis médical. Consultez un professionnel de santé qualifié avant de prendre des décisions de santé fondées sur des données génétiques.

Rien à pirater, vendre ou remettre

Un rapport ADN d'un service qui ne reçoit jamais votre ADN.

Le générateur tourne dans l'onglet de votre navigateur. Nos serveurs voient votre compte et votre paiement, jamais votre fichier ni votre PDF.

409 traits du catalogue · 17 catégories · GWAS Catalog juin 2026

Vérifiez par vous-même : ouvrez l'onglet Réseau pendant qu'un rapport se génère.

Sujetsconfidentialité ADNdonnées ADN brutesDevToolsanalyse ADN dans le navigateurContent Security Policyenvoyer ses données ADN brutes