{"date":"2026-09-30T16:36Z","version":"0.6.8","commit":"50e0aecc8155af8306ab691d73ceee10f224e991","code_identique_au_commit":true,"lighthouse":{"version":"13.5.0","pages":{"accueil":{"chemin":"/","desktop":{"performance":98,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.57,"tbt_ms":0,"cls":0.009,"poids_ko":184},"mobile":{"performance":94,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":1.04,"tbt_ms":277,"cls":0.035,"poids_ko":153},"indexee":true},"audit":{"chemin":"/audit","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.26,"tbt_ms":0,"cls":0,"poids_ko":12},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.92,"tbt_ms":0,"cls":0,"poids_ko":12},"indexee":true},"confidentialite":{"chemin":"/confidentialite","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.25,"tbt_ms":0,"cls":0,"poids_ko":11},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.92,"tbt_ms":0,"cls":0,"poids_ko":11},"indexee":true},"connexion":{"chemin":"/connexion","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":58,"lcp_s":0.21,"tbt_ms":0,"cls":0,"poids_ko":7},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":58,"lcp_s":0.91,"tbt_ms":0,"cls":0,"poids_ko":7},"indexee":false},"devis":{"chemin":"/devis","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":54,"lcp_s":0.22,"tbt_ms":0,"cls":0,"poids_ko":17},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":54,"lcp_s":0.76,"tbt_ms":0,"cls":0,"poids_ko":17},"indexee":false},"exemple_bilan":{"chemin":"/bilan?adresse=0x97c2ea4c75ee00a29baea35ccb63f8ce9f17890b","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":58,"lcp_s":0.32,"tbt_ms":0,"cls":0.005,"poids_ko":194},"mobile":{"performance":99,"accessibility":100,"best-practices":100,"seo":58,"lcp_s":1.28,"tbt_ms":43,"cls":0,"poids_ko":158},"indexee":false},"faq":{"chemin":"/faq","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.25,"tbt_ms":0,"cls":0,"poids_ko":8},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.68,"tbt_ms":0,"cls":0,"poids_ko":8},"indexee":true},"inscription":{"chemin":"/inscription","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":58,"lcp_s":0.21,"tbt_ms":0,"cls":0,"poids_ko":8},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":58,"lcp_s":0.76,"tbt_ms":0,"cls":0,"poids_ko":8},"indexee":false},"mentions":{"chemin":"/mentions-legales","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":69,"lcp_s":0.29,"tbt_ms":0,"cls":0,"poids_ko":18},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":69,"lcp_s":0.83,"tbt_ms":0,"cls":0,"poids_ko":18},"indexee":false},"securite":{"chemin":"/securite","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.25,"tbt_ms":0,"cls":0,"poids_ko":9},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.66,"tbt_ms":0,"cls":0,"poids_ko":9},"indexee":true},"tarifs":{"chemin":"/pricing","desktop":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.26,"tbt_ms":0,"cls":0,"poids_ko":7},"mobile":{"performance":100,"accessibility":100,"best-practices":100,"seo":100,"lcp_s":0.66,"tbt_ms":0,"cls":0,"poids_ko":7},"indexee":true}}},"axe":{"version":"4.13.0","normes":"WCAG 2.0, 2.1 et 2.2, niveaux A et AA, + bonnes pratiques axe","largeurs":["390 px (téléphone)","1366 px (ordinateur)"],"pages":{"accueil":{"390":{"violations":0,"regles_respectees":50,"a_verifier":1,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":50,"a_verifier":1,"debordement_horizontal":false,"detail":[]}},"exemple_bilan":{"390":{"violations":0,"regles_respectees":51,"a_verifier":3,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":51,"a_verifier":3,"debordement_horizontal":false,"detail":[]}},"securite":{"390":{"violations":0,"regles_respectees":34,"a_verifier":0,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":34,"a_verifier":0,"debordement_horizontal":false,"detail":[]}},"confidentialite":{"390":{"violations":0,"regles_respectees":34,"a_verifier":0,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":34,"a_verifier":0,"debordement_horizontal":false,"detail":[]}},"faq":{"390":{"violations":0,"regles_respectees":27,"a_verifier":0,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":27,"a_verifier":0,"debordement_horizontal":false,"detail":[]}},"tarifs":{"390":{"violations":0,"regles_respectees":21,"a_verifier":0,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":21,"a_verifier":0,"debordement_horizontal":false,"detail":[]}},"devis":{"390":{"violations":0,"regles_respectees":37,"a_verifier":0,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":37,"a_verifier":0,"debordement_horizontal":false,"detail":[]}},"connexion":{"390":{"violations":0,"regles_respectees":30,"a_verifier":0,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":30,"a_verifier":0,"debordement_horizontal":false,"detail":[]}},"inscription":{"390":{"violations":0,"regles_respectees":32,"a_verifier":1,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":32,"a_verifier":1,"debordement_horizontal":false,"detail":[]}},"mentions":{"390":{"violations":0,"regles_respectees":31,"a_verifier":0,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":31,"a_verifier":0,"debordement_horizontal":false,"detail":[]}},"audit":{"390":{"violations":0,"regles_respectees":41,"a_verifier":2,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":41,"a_verifier":2,"debordement_horizontal":false,"detail":[]}},"espace":{"390":{"violations":0,"regles_respectees":36,"a_verifier":1,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":36,"a_verifier":1,"debordement_horizontal":false,"detail":[]}},"connexions":{"390":{"violations":0,"regles_respectees":34,"a_verifier":1,"debordement_horizontal":false,"detail":[]},"1366":{"violations":0,"regles_respectees":34,"a_verifier":1,"debordement_horizontal":false,"detail":[]}}}},"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-frame-options":"DENY","x-content-type-options":"nosniff","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"dependances":{"outil":"pip-audit (base PyPA / OSV)","version":"2.10.1","fichier":"web/requirements.txt","paquets":52,"failles":[]},"analyse_statique":{"outil":"bandit (sévérité moyenne et haute)","version":"1.9.4","lignes_de_code":27168,"par_severite":{"HIGH":{"B413":2},"MEDIUM":{"B310":1,"B314":2}},"signalements":5,"retenus":[],"ecartes":[{"regle":"B413","n":2,"raison":"pycryptodome (paquet maintenu, API compatible) est pris pour l'ancien pyCrypto : seul Keccak-256 y est utilisé, pour vérifier les adresses Ethereum."},{"regle":"B310","n":1,"raison":"urlopen n'ouvre que des adresses https fixées dans le code (explorateurs Bitcoin, cours) : aucun schéma venu de l'utilisateur."},{"regle":"B314","n":2,"raison":"flux RSS d'actualités publics lus avec la bibliothèque standard, dont l'analyseur (expat ≥ 2.4) bloque l'expansion d'entités en chaîne ; aucune entité externe n'est résolue."}]},"securite":{"base":"http://127.0.0.1:8766","date":"2026-09-30T16:30Z","entetes":{"pages":{"accueil":{"chemin":"/","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"exemple_bilan":{"chemin":"/bilan?adresse=0x97c2ea4c75ee00a29baea35ccb63f8ce9f17890b","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"securite":{"chemin":"/securite","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"confidentialite":{"chemin":"/confidentialite","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"faq":{"chemin":"/faq","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"tarifs":{"chemin":"/pricing","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"devis":{"chemin":"/devis","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"connexion":{"chemin":"/connexion","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"inscription":{"chemin":"/inscription","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"mentions":{"chemin":"/mentions-legales","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"audit":{"chemin":"/audit","statut":200,"entetes":{"content-security-policy":"default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true},"connexion_wallet":{"chemin":"/connect","statut":200,"entetes":{"content-security-policy":"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://*.walletconnect.com https://*.walletconnect.org https://api.web3modal.org https://*.web3modal.org https://imagedelivery.net; font-src 'self' data:; connect-src 'self' wss://*.walletconnect.com wss://*.walletconnect.org https://*.walletconnect.com https://*.walletconnect.org https://api.web3modal.org https://*.web3modal.org https://*.reown.com; frame-src https://verify.walletconnect.com https://verify.walletconnect.org https://secure.walletconnect.org https://secure-mobile.walletconnect.org https://secure-mobile.walletconnect.com; frame-ancestors 'none'; base-uri 'none'; form-action 'self'","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","x-frame-options":"DENY","referrer-policy":"same-origin","permissions-policy":"browsing-topics=(), interest-cohort=()"},"csp":{"scripts":"'self'","scripts_du_site_seulement":true,"scripts_en_ligne":false,"styles_en_ligne":true,"cadres_interdits":true,"formulaires_du_site":true,"base_uri":"'none'"},"hsts_secondes":31536000,"verdicts":{"csp":true,"hsts":true,"nosniff":true,"cadres":true,"referrer":true,"permissions":true},"ok":true}},"ok":true},"cookies":{"niveau":{"statut":303,"cookies":[{"nom":"bd_niveau","httponly":true,"secure":true,"samesite":"lax","brut":"bd_niveau=…; HttpOnly; Max-Age=31536000; Path=/; SameSite=lax; Secure","ok":true}],"ok":true},"alertes_lues":{"statut":200,"cookies":[{"nom":"bd_alu","httponly":true,"secure":true,"samesite":"lax","brut":"bd_alu=…; HttpOnly; Max-Age=31536000; Path=/; SameSite=lax; Secure","ok":true}],"ok":true},"session":{"statut":200,"cookies":[{"nom":"pat_session","httponly":true,"secure":true,"samesite":"lax","brut":"pat_session=…; HttpOnly; Max-Age=43200; Path=/; SameSite=lax; Secure","ok":true}],"ok":true},"ok":true},"csrf":{"origine_essayee":"https://ailleurs.example","routes":[{"methode":"POST","chemin":"/admin/bonus/{ident}","origine_etrangere":403,"meme_origine":403,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/admin/frequentation/import","origine_etrangere":403,"meme_origine":404,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/admin/frequentation/reconstituer","origine_etrangere":403,"meme_origine":404,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/admin/frequentation/systeme/importer","origine_etrangere":403,"meme_origine":404,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/alertes/abonner","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/alertes/desabonner","origine_etrangere":403,"meme_origine":200,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/api/connections","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/api/parcours","origine_etrangere":403,"meme_origine":204,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/api/wallet","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/auth/wallet","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/bilan/ajouter","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/bilan/retirer","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/billing/checkout","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/billing/crypto","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/billing/portal","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/compte/mot-de-passe","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/compte/pseudo","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/compte/supprimer","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/connexion","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/contact","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/declaration/{declaration_id}/acheter","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/espace/adresse/retirer","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/inscription","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/logout","origine_etrangere":403,"meme_origine":303,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/mot-de-passe-oublie","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/offre/majeur","origine_etrangere":403,"meme_origine":303,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/plateformes/connecter","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/plateformes/importer","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/plateformes/ledger","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/plateformes/{ident}/retirer","origine_etrangere":403,"meme_origine":401,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/reinitialiser","origine_etrangere":403,"meme_origine":400,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/retour","origine_etrangere":403,"meme_origine":200,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/verifier/renvoyer","origine_etrangere":403,"meme_origine":303,"mecanisme":"garde-fou (auth/protect.py), avant l'application","ok":true},{"methode":"POST","chemin":"/webhooks/stripe","origine_etrangere":400,"meme_origine":400,"mecanisme":"signature du webhook","ok":true}],"ok":true},"auth":{"routes":[{"methode":"GET","chemin":"/admin/bonus","sans_session":403,"redirige_vers":"","ok":true},{"methode":"GET","chemin":"/admin/contact","sans_session":404,"redirige_vers":"","ok":true},{"methode":"GET","chemin":"/admin/frequentation","sans_session":303,"redirige_vers":"/login?next=%2Fadmin%2Ffrequentation","ok":true},{"methode":"GET","chemin":"/admin/liquidite","sans_session":303,"redirige_vers":"/login?next=%2Fadmin%2Fliquidite","ok":true},{"methode":"GET","chemin":"/admin/retours","sans_session":404,"redirige_vers":"","ok":true},{"methode":"GET","chemin":"/api/connections","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"GET","chemin":"/api/crypto/paiements","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"GET","chemin":"/billing","sans_session":303,"redirige_vers":"/connexion?next=%2Fbilling","ok":true},{"methode":"GET","chemin":"/billing/crypto","sans_session":303,"redirige_vers":"/connexion?next=%2Fbilling%2Fcrypto","ok":true},{"methode":"GET","chemin":"/compte/mot-de-passe","sans_session":303,"redirige_vers":"/connexion?next=%2Fcompte%2Fmot-de-passe","ok":true},{"methode":"GET","chemin":"/compte/pseudo","sans_session":303,"redirige_vers":"/connexion?next=%2Fcompte%2Fpseudo","ok":true},{"methode":"GET","chemin":"/compte/supprimer","sans_session":303,"redirige_vers":"/connexion?next=%2Fcompte%2Fsupprimer","ok":true},{"methode":"GET","chemin":"/dashboard","sans_session":303,"redirige_vers":"/connexion?next=%2Fdashboard","ok":true},{"methode":"GET","chemin":"/declaration","sans_session":303,"redirige_vers":"/connexion?next=%2Fdeclaration","ok":true},{"methode":"GET","chemin":"/declaration/{declaration_id}","sans_session":303,"redirige_vers":"/connexion?next=%2Fdeclaration%2Fx","ok":true},{"methode":"GET","chemin":"/declaration/{declaration_id}/telecharger","sans_session":303,"redirige_vers":"/connexion?next=%2Fdeclaration%2Fx%2Ftelecharger","ok":true},{"methode":"GET","chemin":"/me","sans_session":303,"redirige_vers":"/connexion?next=%2Fme","ok":true},{"methode":"POST","chemin":"/admin/bonus/{ident}","sans_session":403,"redirige_vers":"","ok":true},{"methode":"POST","chemin":"/admin/frequentation/import","sans_session":404,"redirige_vers":"","ok":true},{"methode":"POST","chemin":"/admin/frequentation/reconstituer","sans_session":404,"redirige_vers":"","ok":true},{"methode":"POST","chemin":"/admin/frequentation/systeme/importer","sans_session":404,"redirige_vers":"","ok":true},{"methode":"POST","chemin":"/api/connections","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/billing/checkout","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/billing/crypto","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/billing/portal","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/compte/mot-de-passe","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/compte/pseudo","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/compte/supprimer","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/declaration/{declaration_id}/acheter","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/espace/adresse/retirer","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/offre/majeur","sans_session":303,"redirige_vers":"/connexion?next=/dashboard","ok":true},{"methode":"POST","chemin":"/plateformes/connecter","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/plateformes/importer","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/plateformes/ledger","sans_session":401,"redirige_vers":"/login","ok":true},{"methode":"POST","chemin":"/plateformes/{ident}/retirer","sans_session":401,"redirige_vers":"/login","ok":true}],"ok":true},"debit":{"configuration":{"par_identite_par_minute":120,"par_ressource":{"/api/export":{"n":5,"fenetre_s":3600},"/api/transactions":{"n":30,"fenetre_s":60},"/bilan":{"n":150,"fenetre_s":3600},"/connexion":{"n":20,"fenetre_s":900},"/inscription":{"n":10,"fenetre_s":900},"/mot-de-passe-oublie":{"n":10,"fenetre_s":900},"/auth/wallet":{"n":30,"fenetre_s":900}},"anonymes_bilans":{"ip_heure":100,"ip_jour":1000,"site_jour":10000},"essais_par_email":{"n":5,"fenetre_s":900},"verrou_compte":{"apres":10,"duree_s":900}},"mesures":{"/connexion":{"limite":20,"fenetre_s":900,"refus_a":21,"statut":429,"message":"trop de requêtes sur cette ressource","retry_after":"60","avant":[401],"ok":true},"/connexion (même e-mail)":{"limite":5,"fenetre_s":900,"refus_a":6,"statut":429,"message":"<!doctype html><html lang=\"fr\"><head><link rel=\"apple-touch-icon\" sizes=\"192x192\" href=\"/static/icone-192.png\"><meta cha","retry_after":"","avant":[401],"ok":true},"/auth/wallet":{"limite":30,"fenetre_s":900,"refus_a":31,"statut":429,"message":"trop de requêtes sur cette ressource","retry_after":"60","avant":[400],"ok":true},"/bilan":{"limite":120,"fenetre_s":60,"refus_a":121,"statut":429,"message":"trop de requêtes","retry_after":"60","avant":[405],"ok":true}},"ok":true},"secrets":{"fichiers":118,"motifs":["clé Stripe","secret de webhook Stripe","clé AWS","jeton GitHub","jeton Slack","clé privée PEM","clé privée hexadécimale (32 octets)","secret, jeton ou mot de passe affecté en clair"],"trouves":[{"type":"clé privée PEM","fichier":"bilan/cex_api.py","ligne":51,"extrait":"-----BEGIN EC PRIVATE KEY","ecarte":"texte d'aide du formulaire Coinbase : le format de clé attendu, montré à l'utilisateur"},{"type":"clé privée PEM","fichier":"web/cex.py","ligne":561,"extrait":"-----BEGIN EC PRIVATE KEY","ecarte":"libellé du champ « Clé privée » du formulaire Coinbase : le format attendu, pas une clé"}],"retenus":0,"variables_env":["ADMIN_EMAILS","ALERTES","ALLOWED_DOMAINS","ALLOWED_EMAILS","ALLOWED_HOSTS","ANALYSE_URL","ANDROID_EMPREINTES","AUTORISER_SQLITE","BASE_URL","BILAN_ANONYME","BILAN_CACHE","BILAN_GRATUIT_JUSQUAU","BILAN_RAPPORT_SUR_DEVIS","BILAN_TOUT_GRATUIT","BONUS_POOL_LIEN","CEX_CLE_CHIFFREMENT","CONTACT_ADRESSE","CONTACT_DEST","CONTACT_EDITEUR","CONTACT_EMAIL","CONTACT_RESPONSABLE","CONTACT_SIRET","CONTACT_TELEPHONE","COOKIE_SECURE","CRYPTO_ADRESSES","DATABASE_URL","DEBANK_ACCESS_KEY","DEBANK_CATALOGUE","DEBANK_HIST_PAGES","DEBANK_KEY","DOMAINE_CANONIQUE","ETHERSCAN_KEY","ETHERSCAN_PAYANT","FILTRE_OUTILS","FORCE_HTTPS","GOOGLE_CLIENT_ID","GOOGLE_CLIENT_SECRET","GOOGLE_SITE_VERIFICATION","HELIUS_KEY","IMAGE_ACCUEIL","LOGIN_STATE_MAX_AGE","OAUTH_REDIRECT_URI","OIDC_DISCOVERY_URL","QUOTA_DEBANK","RELEVE_SYSTEME","RELEVE_TAUX","RENDER","RENDER_CPU","RENDER_RAM_MO","RETOURS_VERS","SESSION_COOKIE","SESSION_MAX_AGE","SESSION_SECRET","SMTP_FROM","SMTP_HOST","SMTP_PASSWORD","SMTP_PORT","SMTP_USER","STRIPE_API_BASE","STRIPE_AUTOMATIC_TAX","STRIPE_METER_EVENT","STRIPE_PRICE_ID","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","VAPID_PRIVATE","VAPID_PUBLIC","VAULT_ADRESSE","VEILLE","VEILLE_HEURE","WC_PROJECT_ID","WC_VERIFY_TXT"],"ok":true},"dependances_figees":{"total":20,"figees":[],"bornes_basses":["fastapi>=0.115","uvicorn[standard]>=0.30","httpx>=0.27","joserfc>=1.0","sqlalchemy>=2.0","itsdangerous>=2.2","cryptography>=42","pytest>=8","pypdf>=5","anyio>=4","python-multipart>=0.0.9","psycopg[binary]>=3.2","pycryptodome>=3.20","base58>=2.1","bech32>=1.2","segno>=1.6","pandas>=2.2","requests>=2.32","reportlab>=4.0","openpyxl>=3.1"],"ok":false},"routes":100},"tests":{"reussis":626,"echecs":0}}