🔒 Posture sécurité

Sécurité de la plateforme

Cette page documente publiquement les mesures techniques et organisationnelles en place sur MonRhumato.fr. Elle est destinée aux médecins, aux chercheurs en sécurité, aux investisseurs tech-due-diligent et aux auditeurs externes (RGPD, HDS, ISO 27001 future).

🛡️ security.txt (RFC 9116) ↗Divulgation responsable🏆 Hall of FameÉtat des services

Transport

  • TLS 1.3 sur toutes les routes

    Aucun trafic HTTP en clair (Vercel impose TLS sur *.monrhumato.fr). HSTS activé avec max-age 2 ans, includeSubDomains et directive preload présente dans le header. Soumission à hsts.preload.org prévue mais pas encore effectuée.

  • Headers de sécurité stricts

    X-Frame-Options: SAMEORIGIN, X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy verrouillée (caméra, micro, paiement bloqués).

  • Content Security Policy appliquée

    CSP en mode enforce (plus de Report-Only) : object-src 'none', base-uri et form-action limités au domaine, frame-ancestors 'self', upgrade-insecure-requests. Les domaines autorisés pour les scripts, les connexions et les iframes sont cadrés ; 'unsafe-inline' et 'unsafe-eval' restent nécessaires au rendu Next.js et sont assumés comme dette technique.

  • Limitation de débit en bordure

    Les recherches publiques, les fiches praticiens, les endpoints d'envoi d'e-mail et les routes IA sont plafonnés par adresse IP au niveau du proxy Edge, avant le cache. Un dépassement renvoie une erreur 429 temporaire.

Auth

  • PKCE flow Supabase

    Authentification OAuth2 PKCE (RFC 7636), tokens JWT signés, sessions cookies HttpOnly + Secure + SameSite=Lax.

  • Mots de passe hashés bcrypt

    Géré par Supabase Auth — bcrypt avec salt unique par utilisateur. Aucun mot de passe en clair dans la base ou les logs. Tout nouveau mot de passe doit faire au moins 12 caractères et mêler majuscules, minuscules et chiffres ; ceux présents dans des fuites connues (base Have I Been Pwned) sont refusés.

  • Anti-bot signup

    Honeypot CSS-hidden + check délai humain (formulaire submit < 2s = bot probable). Réponse fake-success pour ne pas révéler la détection.

Données

  • Row Level Security Supabase

    RLS activée sur les tables du schéma public, et lecture anonyme fermée par défaut : depuis le 4 août 2026, ni l'annuaire ni les tables de comptes ne sont lisibles avec la clé publique — les lectures passent par des routes serveur qui choisissent les colonnes servies. Écriture restreinte à l'utilisateur authentifié.

  • Chiffrement au repos

    Chiffrement disque assuré par Vercel (CDN/edge) et Supabase (eu-west-1, Irlande) selon leurs SLA respectifs. Backups Supabase Pro : journaliers, conservation 7 j. La région DB Supabase est encore eu-west-1 — migration vers fra1 (Paris) envisagée.

  • Logs applicatifs minimaux

    MonRhumato.fr ne conserve pas d'adresse IP en clair au niveau applicatif : les compteurs anonymes et les gardes anti-abus reposent, depuis le 4 août 2026, sur une empreinte sha256 salée, irréversible, purgée automatiquement par un traitement quotidien selon les durées annoncées au registre des traitements. Les logs d'accès au-delà sont gérés par Vercel selon ses propres durées de rétention (24 à 72 h).

Périmètre

  • Aucune donnée de santé identifiable

    Architecture pensée pour ne PAS collecter de PII médicale. Préférences en localStorage navigateur. Seule exception : l'assistant recettes, où la personne peut déclarer un régime et des allergies — ces informations transitent le temps de la réponse et ne sont enregistrées nulle part (détail sur /transparence-ia et au registre des traitements, traitement T13). Si une fonctionnalité future nécessitait une collecte, bascule vers hébergeur HDS niveau 2 (art. L. 1111-8 CSP) avant déploiement.

  • Sous-traitants triés

    Vercel (CDN), Supabase Irlande (auth+DB), Groq Cloud et Google AI (LLM — tiers gratuits, conditions d'usage des données détaillées sur /transparence-ia). Détail complet dans /registre-traitements.

Surveillance

  • Healthcheck monitoring continu

    /api/health teste la disponibilité Supabase à chaque check. Page /status publique en temps réel. Endpoints prêts pour UptimeRobot / BetterStack.

  • security.txt RFC 9116

    Coordonnées sécurité publiques, scope explicite, SLA documenté, Hall of Fame. Voir /.well-known/security.txt.

  • Discovery agents (Link headers RFC 8288)

    Tous les .well-known sont déclarés en headers Link. Permet aux scanners de conformité, aux agents IA et aux outils de DD tech de découvrir automatiquement la posture.

Conformité réglementaire

  • RGPD (UE 2016/679) — registre des traitements public, responsable de traitement joignable, droits Art. 15-22 automatisés via /parametres.
  • AI Act (UE 2024/1689) — modules IA identifiés en Art. 50 (transparence), pas de système haut risque (Annexe III).
  • RFC 9116 — security.txt complet (scope, SLA, Hall of Fame).
  • 🟡 HDS niveau 2— pas applicable aujourd'hui (aucune donnée de santé identifiable). Bascule prévue dès qu'une fonctionnalité patient à donnée santé sera lancée.
  • 🟡 ISO 27001— visé pour la phase Series A (audit prévu une fois l'équipe à 10 personnes).
  • 🟡 SOC 2 Type II — visé en parallèle ISO 27001 si demande client B2B avérée (CHU, mutuelles).

Audit indépendant

Aucun pentest externe n'a encore été commandité (la plateforme reste en phase pré-traction). Les engagements pour la suite :

  • Pentest annuel par cabinet certifié PASSI dès Series A — résultats publics anonymisés.
  • Bug bounty publié sur YesWeHack ou HackerOne quand le volume de signalements le justifiera.
  • Programme « Coordinated Vulnerability Disclosure » dès maintenant — voir la policy.

Vous avez détecté une faille ?

Merci ! Suivez la procédure de divulgation responsable ou écrivez à security@monrhumato.fr (à défaut julienschemoul@monrhumato.fr). Accusé de réception sous 72 h ouvrées.