Chaîne d'audit infalsifiable
Les événements de sécurité et de conformité sont écrits dans une table Postgres en ajout seul, chaînée par hachage. Chaque ligne porte le sha256 de la précédente, et les protections de la base refusent les mutations. Le vérificateur en ligne de commande, en lecture seule, peut être lancé manuellement ; aucun cron de vérification de la chaîne d’audit n’est enregistré. Il s’agit d’un socle de preuve pour une revue qualifiée, pas d’une certification.
Preuvesrc/libs/AuditChain.ts + migration 0016-audit-chain
Conformité RGPD
Les utilisateurs peuvent demander un export complet de leurs données (JSON gzip de chaque ligne liée à leur compte, lien de téléchargement signé, TTL 24h) et programmer la suppression de leur compte avec une période de grâce de 30 jours. Le flux d'annulation utilise un jeton à usage unique envoyé par email. Les cascades FK nettoient toutes les tables produit lors de la suppression définitive.
Preuvesrc/actions/account.ts + table data_exports
Durcissement HTTP
Les routes en production embarquent Content-Security-Policy (default-src 'self', frame-ancestors 'none'), HSTS (max-age 2 ans, preload), X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin et une Permissions-Policy qui verrouille caméra, microphone et géolocalisation.
Preuvenext.config.ts headers() + /.well-known/security.txt
Webhooks idempotents
Le middleware testé Idempotency.handle() implémente le contrat de rejeu fondé sur Idempotency-Key, mais aucune route active ne l’appelle aujourd’hui. Le webhook Stripe déduplique séparément les identifiants d’événement Stripe dans la même table ; ce chemin spécifique n’appelle pas le middleware.
Preuvesrc/libs/Idempotency.ts + migration 0019-idempotency
Gestion des secrets
Chaque clé d'API, mot de passe de base de données et secret HMAC est chargé depuis l'environnement via un module Env strictement typé. Aucun secret n'est livré dans le bundle client — les modules server-only sont vérifiés statiquement. Le développement local utilise .env.local ; la production lit le coffre-fort de la plateforme.
Preuvesrc/libs/Env.ts (validé par zod, server-only)
Divulgation responsable
Aucun canal privé et vérifié de signalement des vulnérabilités n'est encore publié. N'envoyez pas de détails sensibles par un canal non vérifié.
Preuve/.well-known/security.txt