Sécurité
Comment nous protégeons votre compte
Vous nous confiez ce que vous préparez avant vos concurrents. Voici précisément ce qui protège ces informations. Aucune de ces mesures ne repose sur le secret : les nommer ne les affaiblit pas.
Authentification
- Mots de passe hachés en Argon2id (m=19456 KiB, t=2, p=1), l'algorithme recommandé par l'OWASP. Il est volontairement coûteux en mémoire, ce qui rend une attaque par GPU bien moins rentable. Nous ne pouvons pas lire votre mot de passe, seulement vérifier qu'il correspond.
- Politique fondée sur la longueur : 12 caractères minimum, rejet des mots de passe trop courants et de ceux qui contiennent votre nom ou votre adresse e-mail. Pas d'obligation de symboles arbitraires, conformément aux recommandations du NIST.
- Validation en deux étapes (TOTP) avec codes de secours à usage unique. Les clés partagées sont chiffrées au repos en AES-256-GCM, les codes de secours sont hachés en Argon2id.
- Verrouillage progressif et limitation de débit sur deux axes indépendants : par adresse source et par compte. Une attaque distribuée n'obtient pas plus de tentatives en changeant d'adresse IP.
- Réponses indifférenciées : « adresse inconnue » et « mot de passe incorrect » renvoient le même message et consomment le même temps de calcul. L'inscription et la réinitialisation ne révèlent jamais si une adresse est déjà enregistrée.
Sessions
- Jetons opaques, pas de JWT. Chaque requête vérifie une ligne en base, ce qui rend la révocation immédiate — un JWT, lui, reste valable jusqu'à son expiration quoi qu'il arrive.
- Stockés hachés : la base ne contient que l'empreinte du jeton. Une fuite de la base ne livre aucune session utilisable.
- Double expiration : inactivité de 14 jours, et plafond absolu de 60 jours quelle que soit l'activité.
- Invalidation globale à tout changement de mot de passe, et déconnexion à distance de n'importe quel appareil depuis vos paramètres.
- Cookies
HttpOnly,Secure,SameSite=Lax, avec le préfixe__Host-en production — un sous-domaine compromis ne peut pas écraser nos cookies.
Application
- Content-Security-Policy stricte avec un nonce généré à chaque requête et
strict-dynamic. Un script injecté depuis n'importe quelle origine est bloqué par le navigateur. - Triple protection CSRF : jeton signé en double-soumission, vérification de l'en-tête
Origin, et liste blanche d'origines côté framework. Trois couches indépendantes. - Autorisation vérifiée à chaque page et chaque action, jamais déléguée au middleware — qui ne peut pas consulter la base et ne sait donc pas si une session est réellement valide.
- Validation stricte des entrées et des sorties : chaque champ est borné en longueur et en forme, et le rapport produit par le modèle est lui aussi validé contre un schéma avant d'être enregistré ou affiché.
- En-têtes de sécurité : HSTS,
nosniff,frame-ancestors none,Referrer-Policyrestrictive,Permissions-Policyfermée, isolation d'origine.
Vos données
- Aucune donnée bancaire chez nous. Les paiements passent intégralement par Stripe ; nous ne voyons ni ne stockons de numéro de carte.
- Adresses IP non conservées en clair. Le journal d'audit n'enregistre qu'une empreinte cryptographique à clé, utile pour détecter un comportement anormal, inutilisable pour vous retrouver.
- Vos descriptions ne servent pas à entraîner un modèle. Elles servent à produire votre rapport, et à rien d'autre.
- Suppression effective : supprimez une analyse, ou votre compte entier, et les données associées sont réellement supprimées.
- Journal d'audit consultable depuis vos paramètres : connexions, échecs, changements de sécurité.
Injection de prompt
Le texte que vous saisissez est transmis à un modèle de langage. C'est une surface d'attaque réelle, et nous la traitons comme telle. La mesure principale est structurelle : le modèle ne dispose d'aucun outil agissant en notre nom — pas d'accès à la base, pas de requête réseau, pas d'exécution de code. Le pire qu'une injection réussie puisse produire est un rapport de mauvaise qualité, jamais une action sur votre compte. S'y ajoutent un cloisonnement explicite des données client dans le prompt et le nettoyage des séquences de délimitation.
Signaler une vulnérabilité
Si vous découvrez une faille, écrivez-nous avant toute divulgation publique. Nous accusons réception rapidement, nous vous tenons informé du correctif, et nous ne menaçons jamais de poursuites un chercheur agissant de bonne foi.